Servlet은 JAVA언어를 사용하여 웹프로그램을 제작 하는 것.
간단한 Servlet 프로젝트를 만들어보면서 전체적인 구조(흐름)을 파악해보자.
1234567891011 @WebServlet("/HelloWorld")public class HelloWorld extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public HelloWorld() {super();// TODO Auto-generated constructor stub}
위와 같이 Servlet 클래스 HelloWorld 는 HttpServlet 클래스를 상속받는다.
HttpServlet의 조상클래스를 살펴보자면 다음과 같다.
Servlet[Interface] <-----GenericServlet[Abstract] <-----HttpServlet
HttpServlet은 Servlet 인터페이스와 GenericServlet 추상클래스를 상속받고있으므로 위의 클래스들은 다 사용가능하다. 기본적으로 Servlet클래스는 HttpServlet클래스를 사용하도록 되어있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloWorld~~");
response.setContentType("text/html; charset=euc-kr");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("</head>");
writer.println("<body>");
writer.println("<h1>My name is SHIN...~~~</h1>");
writer.println("</body>");
writer.println("</html>");
writer.close();
} |
한번 위의 코드를 살펴보자.!!!!
코드라인 1번에 있는 HttpServletRequest request 객체는 요청처리 객체이고, HttpServletResponse response 객체는 응답처리 객체이다. 라인 2번에 있는 System.out.println은 콘솔창에 HelloWorld를 출력하기위한 코드이고, 라인 4번은 response객체(응답할 때) 콘텐츠의타입을(응답을 처리해주는데) html로 처리하겠다는 말이다. 라인 5번은 웹 브라우저에 출력하기 위한 스트림이다.
Client에서 Was로 요청이 들어오면 이것을 우리는 request라고 한다. 요청온것을 다시 Client로 정보를 전달 할때 이것을 response라고 부른다. 쉬운 예로 우리가 어떤 웹 홈페이지에 로그인을 할때 적는 아이디,패스워드는 request 객체에 실어져서 WAS(Web Application Server)로 전달하게 된다. WAS는 받은 request객체를 db에서 조회를 한다음 다시 Client로 response하게 된다.
Get & Post 방식.
1 2 3 4 5 6 7 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloWorld~~"); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} |
Client에서 WAS로 요청하는 방식(Get,Post)이 2 가지가 있다.
html코드에 was로 데이터값을 전송할때 전송할수있는방식의 태그가 있다. 그 태그의 방식을 get으로 하느냐 post로 하는냐에 따라서 get방식으로 reqest 할 수있고 , post방식으로request할 수 있다. 쉽게말해서 html form태그에 메소드 속성값을 get으로 준다면 위의 태그 라인1번을 수행 할 것이고, post로 준다면 라인 5번을 수행한다.
그렇다면 의문점이 생긴다. 하나로 통일해서 쓰면 되지 굳이 왜 2가지를 나누는가???
그렇다면 각각의 메소드에 대해 장단점을 살펴보자
우선 Get방식은 URL값으로 정보가 전송되어 보안에 취약하다. 그렇지만 Post방식은 헤더정보가 전달되기때문에 보안에 강하다.
doGet() : html내에 form태그의 method속성이 get일 경우 호출
doPost() : html내에 form태그의 method속성이 post일 경우 호출
'JSP' 카테고리의 다른 글
[JSP|JAVA]JSP빨리 알아보기_3(request,response) (0) | 2015.10.29 |
---|---|
[JSP|JAVA]JSP빨리 알아보기_2(스크립트,지시자,주석) (0) | 2015.10.29 |
[자바(JSP)](01)개발환경설정[JAVA,PATH,Eclipse]세팅!!!! (0) | 2015.10.26 |
[html/jsp/java]회원가입 및 회원정보 수정 프로그래밍!!!!! (0) | 2015.10.14 |
[JSP/JAVA]구구단 샘플예제. (0) | 2015.09.23 |