< Servlet >
- 웹 서비스를 위한 '자바 클래스'를 말하며 자바를 이용해 웹을 만들기 위해 필요한 기술
- 사용자의 요청을 받아서 처리하고 그에 해당하는 응답페이지를 만들어
다시 사용자에게 전송해주는 역할을 하는 자바클래스 (Controller의 역할)
- 웹에서 동적인 페이지를 Java로 구현할 수 있게 해주는 서버측 프로그램(WAS에서 구동됨)
- Servlet 요청 같은 경우, 반드시 그 요청값이 현재 웹 어플리케이션의 context Path == /context Root/뒤에 붙는 경로
형식으로 작성해야 함 (같은 매핑값을 가지는 서블릿이 있을 수 있기 때문에!!)
* GET방식으로 요청
1) URL의 Header영역에 데이터들을 포함시켜서 요청함
- 사용자가 입력한 값(데이터)들이 url에 노출됨 (보안에 취약)
=> 로그인이나 회원가입 같은 경우에 부적합
2) Header영역은 전송하는 데이터의 길이에 제한이 있음
- 방대한 데이터를 담았을 경우, 초과된 데이터는 절단되어 넘어감
=> 게시글 작성 등 많은 양의 데이터가 들어가는 경우에 부적합
3) url을 즐겨찾기(북마크)해놨다가 재요청 하는 것이 가능
=> 검색 기능 같은 경우에 적합
* POST방식으로 요청
1) URL Body 영역에 데이터를 포함시켜서 요청
- 받은 서버만 내용을 볼 수 있음
- 사용자가 입력한 값(데이터)들이 url에 노출되지 않음 (보안 유지가 가능)
=> 로그인, 회원가입 같은 경우에 적합
2) Body영역은 전송하는 길이에 제약이 없음
=> 게시글 작성 같은 경우에 적합
3) 즐겨찾기는 가능하나, 전달되는 데이터가 url에 노출되지 않음
- 기존에 봤던 응답화면과 동일하지 않은 화면일 수 있음
4) 최대 요청 받는 시간(Time out)이 존재함
< Servlet 내부 >
/**
* Servlet implementation class NoticeErollFormContoller
*/
@WebServlet("/enrollForm.no") // 매핑값 (요청할 자원의 경로)
public class NoticeEnrollFormContoller extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public NoticeEnrollFormContoller() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// doGet메소드에 작성
// 0단계)
// POST 방식의 기본 인코딩 설정은 ISO-8859-1
// 인코딩 설정을 UTF-8방식으로
request.getCharacterEncoding("UTF-8");
// 1단계)
// request.getParameter() 또는 request.getParameterValues()로 값 뽑아내기
// 인자값으로 input태그에 설정한 name 속성값을 전달
// 2단계)
// 처리 -> Service -> DAO -> DB
// 3단계)
// 결과에 따른 응답페이지 JSP로 위임
// 이 때, 응답화면(jsp)에서 필요로 하는 데이터들을 requset객체에 담아서 보내줌
// request.setAttribute(키-문자열, 밸류);
// - forwarding : 구체적인 파일 디렉토리 경로를 제시해서 응답
RequestDispatcher 객체 => request.getRequestDispatcher()로 생성
RequestDispatcher.forwading(request, response)로 포워딩
// - sendRedirect : contextPath로 시작하는 url을 응답
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
// post방식으로 호출해도 doGet메소드가 호출되므로 실행할 코드는 doGet메소드에 적으면 됨
}
}
'개발 > Web' 카테고리의 다른 글
[Java] Sevlet/JSP - 회원서비스 - 마이페이지 (0) | 2022.11.18 |
---|---|
[Java] Sevlet/JSP - 회원서비스 - 회원가입 (0) | 2022.11.18 |
[Java] Sevlet/JSP - 회원서비스 - 로그인 / 로그아웃 (0) | 2022.11.18 |
[Java] JSP - 스크립팅 요소(Scripting Element), 지시어/지시자(Directive) (0) | 2022.11.14 |
[Java] Servlet - Web Server / WAS / Servlet / web.xml / welcome-file (0) | 2022.11.03 |