서블릿이란 자바 기반의 웹 프로그램 개발을 위한 기술이다
자바로 작성된 프로그램을 실행할 수 있는 서버 소프트웨어(톰캣)을 통해
관리가 된다.
즉 서블릿을 실행 시키기 위해서는 톰캣과 같은 서블릿 컨테이너가 필요하다
동적인 페이지를 자바로 구현할 수 있게 도와주는 서버측 프로그램이다
(Java로 html 구현)
WEB_INF 디렉토리
WEBAPP 루트 디렉토리 아래에 위치한다
용도로는 웹 애플리케이션의 내부 구성 파일을 포함하며 웹 애플리케이션의
구조와 동작을 정의한다
WEB_INF 디렉토리 : 클라이언트가 직접 접근을 할 수 없다
다시 말하자면 웹 브라우저를 통해서 직접 접근할 수 없으면
오직 서블릿이나 JSP등 서버 측에서만접근이 가능하다
POST 방식
request.setCharacterEncoding("UTF-8");
POST 방식의 경우 데이터를 처리하기 전에 인코딩이 필요하다
이때 사용하는 것이
setCharacterEncoding 메소드이다
예시)
- setCharacterEncoding("UTF-8")
method="post"
form action= /1_servlet/test2.do
GET 방식 :
<form action="/1_servlet/test.do" method="get">
<div>
<label for="userName">이름 : </label>
<input type="text" id="userName" name="userName">
</div>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request에는 요청 시 전달된 내용들이 담겨져 있다
사용자가 입력한 값, 요청방식, 요청자의 ip 주소 등
respones에는 요청 처리 후 응답할 때 사용되는 객체이다
요청 시 전달된 데이터 추출 request 객체의 parameter 영역 안에 데이터가
담겨져 있다 request.getParameter("key")
name=
속성에 address가 그 key값이다
String userName = request.getParameter("userName");
String gender = request.getParameter("gebder"); // NULL 전달된 값이 없을 경우
int age = Integer.parseInt(request.getParameter("age"));
String address = request.getParameter("address");
double height = Double.parseDouble(request.getParameter("height"));
같은 키 값으로 여러개의 데이터가 전달되는 경우 : getParameterValues("key") : String[]
String[] foods = request.getParameterValues("food");
전달되는 값은 String이다
getParameterValues() : 메소드를 사용한다.
인코딩 처리 : 응답데이터의 문서 형식 및 인코딩 방식 설정
response.setContentType("text/html; charset=utf-8");
PrintWriter 응답 시 사용할 스트림 객체(응답 페이지를 작성)
PrintWriter pw = response.getWriter();
}
RequestDispatcher은 서블릿 컨테이너에서 요청과 응답을 다른 리소스로 전달하는데
사용이 된다 이를 통해서 클라이언트의 요청을 처리하는 동안 서버 측에서 추가적인 리소스를
사용하여 작업을 처리할 수 있다
RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");
즉 요청을 다른 서블릿이나 JSP 페이지로 전달하는 데 사용이 되는 객체이다
view.forward(request, response);
forward 메소드는
클라이언트의 요청을 다른 서블릿이나 JSP 페이지로 전달하는 데 사용됩니다.
요청을 포워딩하면,
현재 서블릿의 처리가 완료된 후에 다른 리소스가 요청을 처리하게 됩니다.
클라이언트의 브라우저 URL은 변경되지 않으며,
서버 측에서 요청 처리가 연속적으로 이어집니다.
응답 페이지
응답 페이지에서 데이터를 정리하여 전달하는 방법
request 객체의 attribute라는 공간을 사용한다
request.setAttribute("name", userName);
request.setAttribute("gender", gender);