Skip to main content

Servlet-02

· 5 min read

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
>