*서블릿
-.class 파일
-파일 만들 때 class가 아닌 servlet으로 만들기
-실행 결과를 클라이언트에게 HTML 문서로 응답해줌
-메인 메서드가 클래스를 실행해주는 것이 아니라, 웹서버가 실행해줌 (메인 메서드 없음)
-무조건 꼭! HttpServlet 클래스를 상속받아야함 (오버라이딩해서 쓰려고)
-HttpServlet 안에는 HttpServletRequest, HttpServletResponse 객체가 존재
-HttpServlet 안에는 doGet(), doPost() 메서드가 존재
-서블릿 실행 과정
1) 사용자의 요청이 들어오면 서블릿 실행을 시작
2) 톰캣 서버가 서블릿 객체를 생성
3) init() 메서드 호출 - 단 한번만
4) 요청 방식에 따라 처리 doGet(), doPost() - 반복적으로 호출
5) 더 이상 사용하지 않을 경우 destroy() 메서드 호출
-스레드(분할처리)를 바탕으로 요청이 올때마다 새로운 프로세스를 생성하지 않아 효과적
*URL매핑
-URL pattern(내가 프로젝트 만들 때 생성)과 서블릿 클래스 이름을 매핑해 놓은 것
즉, 클래스 이름 대신에 쓰일 별명 같은 것을 URL pattern이라고 하고 이 과정을 매핑이라고 함
-@WebServlet(/pattern명) → 실제로는 클래스명이 아닌 pattern명으로 접근
-servlet.xml의 <Context> 태그에 서블릿을 요청할 때 지정할 URL에 기술할 가상패스가 들어있음
(이것은 이클립스가 알아서 만들어준다)
-매핑을 하는 이유?
보안상의 이유 / 클래스명이나 경로가 변경되어도 매핑시켜놓으면 사용자는 영향을 받지 않음
*어노테이션 (@)
-문장이나 문서에 추가적인 정보를 기입하는 것
-자바 프로그램에 영향을 주는 것이 아니라 컴파일할 때 환경설정을 변경해달라고 하는 주석 형태
-예전에는 xml에 수동적으로 환경설정을 했었는데, 어노테이션의 등장으로 xml을 직접 수정하지 않고
자바 코드 위에 어노테이션을 적으면 알아서 자동으로 xml에 코드를 추가해주는 편리함
*데이터 전송 방식
-get 방식
주소 창을 타고 넘어감. 보안에 취약. 적은 양의 데이터 전송
ex) <a href=” “> / <form action=” “ method=”get”> (생략 시에 기본적으로 get 상태)
-post 방식
보안에 강함. 대용량 데이터 전송
ex) <form action=” “ method=”post”>
*쿼리스트링
-사용자가 입력한 데이터를 서버로 전달하는 가장 단순한 방법
-페이지 사이에 정보 교환이 필요한 경우에 사용
왜? 페이지가 옮겨질때마다 정보는 사라지기 때문에 어떠한 연결 장치가 필요
-?name = leedabin & age = 26 & add = incheon
<input type=”text” name=”name/age/add”>
<input> 태그에서 name 속성으로 값을 전달하므로 필수 사항
*html에서 <form>의 값을 전송할 때 (둘 다 가능)
<input type=”submit” value=”확인”>
<button type=”submit” value=”확인”>
*사용자가 <form>에 입력한 값을 얻어오는 방법
request 객체의 getParameter() 메서드를 호출하여 값을 읽어옴
String name = request.getParameter(“name”);
String age = request.getParameter(“age”);
String add = request.getParameter(“add”);
cf) 배열의 경우 -> String items[] = request.getParameterValues(“item”);
*jsp파일에서 js파일 가져와서 사용하기
<script type=”text/javascript” src=”qwer.js”></script>
*스트림
-자바에서 입출력 과정이 가능하도록 하는 객체를 말함
-스트림은 사용이 끝나면 꼭 닫아주어야함
-ex) PrintWriter - 파일의 입출력을 위해서 제공해주는 자바 클래스