Ch6.Servlet 2 1.Servlet 작동순서
클라이언트에서 servlet요청이 들어오면 서버에서는 sevlet컨테이너를 만들고, 요청이 있을 때마다 스레드가 생성된다.
웹브라우저 -> 웹서버 -> 웹어플리케이션 서버(WAS) -> Servlet 컨테이너(스레드 생성, Servlet 객체 생성)
CUI 서버는 요청마다 프로세스 생성하여 서버에 부하가 크다, Java 서버는 JVM에서 스레드 생성하여 부하가 크지 않다.
2.Sevlet LifeCycle
Servlet의 사용도가 높은 이유는 빠른 응답 속도 때문
Servlet은 최초 요청 시 객체가 만들어져 메모리어 로딩되고, 이후 요청 시에는 기존의 객체를 재활용하게 된다. 동작속도가 빠름(Server 종료시, Servlet.java 파일 수정시 메모리에서 삭제)
Servlet 객체생성 -> Init() 호출 -> service(), doGet(), doPost() 호출 -> destroy() 호출
3.Servlet 선처리, 후처리
Servlet의 라이프 사이클중 init()과 destroy() 메소드와 관련하여 선처리(init() 전)와 후처리(destroy()후) 작업이 가능
Servlet 객체생성 -> 선처리(@PostConstruct) -> Init()호출 -> service(), doGet(), doPost() -> destroy() 호출 -> 후처리(@PreDestroy)
service(): doGet(), doPost() 없으면 service() 실행, doGet(), doPost(), service() 있으면 service() 실행
Ch7.Servlet 3 1.HTML form tag
- HTML form tag는 서버쪽으로 정보를 전달할 때 사용하는 태그
- input
- type: 태그 종류 지정(text, password, submit, checkbox, radio, reset etc.)
- name: input 태그 이름
- value: name에 해당하는 값(ex. name = value)
- type = text
- 일반적인 데이터를 입력하기 위해 사용
<input type="text" name="name" size="10" />
- type = password
- 로그인, 회원가입 페이지 등에서 비밀번호 입력하기 위해 사용
<input type="password" name="password" size="10" />
- type = submit
- form내의 데이터를 전송할 때 사용
<input type="submit" value="전송" />
- type = reset
- form내 데이터 초기화할 때 사용
<input type="reset" value="초기화" />
- type = checkbox
- 여러개 데이터 전송 할 때 사용
<input type="checkbox" name="hobby" value="read" />독서서
<input type="checkbox" name="hobby" value="cook" />요리 - type = radio
- 여러 개의 데이터 값 중 하나만 선택해서 전송 할 때 사용
<input type="radio" name="major" value="kor" />국어
<input tpye="radio" name="major" value="eng" />영어 - select
- 리스트형태의 데이터를 사용
<select name="protocol">
<option value="http">http</option>
<option value="ftp">ftp</option>
</select> - form 태그 - input 태그들의 값을 서버로 전송하기 위한 정보를 담고 있다
<form action="FormEx" method="post"></form>
FormEx: 요청하는 컴포넌트 이름(join.jsp, info.html, HWorld) - post: 요청을 처리하는 방식(post,get)
2.Servlet Parameter
Form 태그의 submit 버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일(Servlet)에서는 HttpServletRequest 객체를 이용하여 Parameter값을 얻을 수 있다
HTML파일
<form action="FormEx" method="post">
<input type="text" name="name" size="10" />
<input type="text" name="id" size="10" />
<input type="submit" value="전송" />
</form>
Servlet파일
getParameter(name)
getParameterValues(name) //list 받는 용도
getParameterNames()
String id = request.getParameter("id"); String name = request.getParameter("name");
3.한글처리
Tomcat 서버 기본 문자 처리방식 IOS-8859-1 방식, 개발자가 별도의 인코딩 안하면 한글이 깨져 보이는 현상 발생
GET,POST 방식에 따라 한글 처리 방식 차이 있음
GET방식 요청
<server.xml
>수정 -
<Connector URIEncoding="EUC-KR">
- Post방식 요청 -
<request.setCharacterEncoding() 메소드 이용>
- doPost() -
request.setCharacterEncoding("EUC-KR");</request.setCharacterEncoding()
></Connector
></server.xml
>