#006. doGet() 메서드에 대해서 알아보기...
1. doGet() 메서드는 클라이언트의 웹 브라우저에게 내용을 전달할 수 있다.
<< 특징 >> 1. 전달 값이 요청 URL에 노출되므로 보안에 취약하다. 2. 서버로 전달할 수 있는 데이터 크기는 최대 240 Byte 이다. 그래서 보통은 조회용으로 많이 사용을 한다. |
2. 실습을 통해 사용법에 대해 알아보자.
1) 기존에 만든 helloServlet Class 의 내용을 변경 해보자.
코드 | package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init() is Running...!"); } @Override public void destroy() { System.out.println("destroy() is Running..."); } public HelloServlet() { System.out.println("helloServlet 객체 생성..."); } @Override // 상단 내용은 변경된게 없습니다. *^^* protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet() is Running...");
// 클라이언트의 웹브라우저에 전송해줄 컨텐츠의 타입을 지정한다. resp.setContentType("text/html;charset=euc-kr"); // 클라이언트의 웹브라우저와 연결된 스트림을 얻는다. PrintWriter out = resp.getWriter(); // 클라이언트의 웹브라우저에 내용을 넣어준다. out.println("<html>"); out.println("<head><title>Hello</title></head>"); out.println("<body>"); out.println("<H1>Hello, Java Servlet!</H1>"); out.println("<H2>Hi~ DongHyuk.Kim</H2>"); out.println("</body>"); out.println("</html>"); // 내용응 종료한다. out.close(); } } |
설명 | 문장25: 문장20에서 파라메터로 받은 HttpServletResponse 클래스의 resp 객체로 부터 컨텐츠 타입을 지정하고 있다. 문장27: resp.getWrite() 메서드를 통해 PrintWrite 클래스의 out 객체 생성하고 있다. 문장29~35: 화면에 표시될 태그를 직접 입력하고 있다. 문장37: 리소스를 반환하고 있다. |
2) 위에서 만든 내용을 웹 브라우저에서 확인 해보자. 아래의 사이트로 접속 해본다.
http://localhost:8080/web/hello.dh
3. 이번엔 자바 기본 클래스를 사용해 서버의 시간을 출력 해보자..
1) 아래의 소스코드를 입력해본다.
코드 | package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init() is Running...!"); } @Override public void destroy() { System.out.println("destroy() is Running..."); } public HelloServlet() { System.out.println("helloServlet 객체 생성..."); } @Override // 상단 내용은 변경된게 없습니다. *^^* protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet() is Running...");
// 클라이언트의 웹브라우저에 전송해줄 컨텐츠의 타입을 지정한다. resp.setContentType("text/html;charset=euc-kr"); // 클라이언트의 웹브라우저와 연결된 스트림을 얻는다. PrintWriter out = resp.getWriter(); // 클라이언트의 웹브라우저에 내용을 넣어준다. out.println("<html>"); out.println("<head><title>Hello</title></head>"); out.println("<body>"); out.println("<H1>Hello, Java Servlet!</H1>"); out.println("<H2>Hi~ DongHyuk.Kim</H2>"); out.println("<p>" + new java.util.Date() + "</P>"); out.println("</body>"); out.println("</html>"); // 내용응 종료한다. out.close(); } } |
설명 | 문장34: java 에서 제공하는 기본클래스 java.util.Date() 를 사용하고 있다. |
2) 웹 브라우저로 다시 한번 확인 해보자.
4. 이번엔 Url 주소에 값을 전달 해보자.
1) 파라메터 전달 방법은 URL?msg=paramtest&pwd=1234 로 전달하게 된다.
즉, http://localhost:8080/web/hello.dh?msg=paramtest&pwd=1234 이렇게 되겠다.
msg 키에는 paramtest 라는 값이, pwd 키에는 1234 라는 값을 보내게 되는 것이다.
이와 같은 파라메터 ( ?msg=paramtest&pwd=1234 ) 의 내용을 쿼리스트링(QueryString) 이라고 부른다.
그럼 아래의 코드를 입력해서 확인 해보자.
코드 | package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("init() is Running...!"); } @Override public void destroy() { System.out.println("destroy() is Running..."); } public HelloServlet() { System.out.println("helloServlet 객체 생성..."); } @Override // 상단 내용은 변경된게 없습니다. *^^* protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet() is Running...");
String msg = req.getParameter("msg"); String pwd = req.getParameter("pwd");
// 클라이언트의 웹브라우저에 전송해줄 컨텐츠의 타입을 지정한다. resp.setContentType("text/html;charset=euc-kr"); // 클라이언트의 웹브라우저와 연결된 스트림을 얻는다. PrintWriter out = resp.getWriter(); // 클라이언트의 웹브라우저에 내용을 넣어준다. out.println("<html>"); out.println("<head><title>Hello</title></head>"); out.println("<body>"); out.println("<H1>Hello, Java Servlet!</H1>"); out.println("<H2>Hi~ DongHyuk.Kim</H2>"); out.println("<p>" + new java.util.Date() + "</P>"); out.println("<p><b> param msg: </b>" + msg + "</P>"); out.println("<p><b> param pwd: </b>" + pwd + "</P>"); out.println("</body>"); out.println("</html>"); // 내용응 종료한다. out.close(); } } |
설명 | 문장24~25: 문장20에서 파라메터로 받은 HttpServletResquest 클래스의 req 객체로 부터 파라메터의 키에 해당하는 값을 변수로 받고 있다. 문장38~39: 변수에 담은 값을 화면에 뿌려주는 코드를 적용하고 있다. |
2) 웹 브라우저로 파라메터를 넘겨서 다시 한번 확인 해보자.
http://localhost:8080/web/hello.dh?msg=paramtest&pwd=1234
5. 사용자가 값을 입력할 수 있는 간단한 html 문서를 만들어 보자.
1) hello.html 문서를 만들고 아래와 같이 입력 해본다.
코드 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <form method="get" action="hello.dh"> <p> 메시지: <input type="text" name="msg"> </p> <p> 패스워드: <input type="password" name="pwd"> </p> <p> <input type="submit" value="전송"> </p> </form> </body> </html> |
설명 | 문장8: method 전달 방식은 get 방식이며, action 은 문장11의 전송버튼을 눌렀을 경우 hello.dh 로 msg, pwd 의 값을 전달 하라는 내용이다. 문장9~10: 사용자가 입력할 수 있는 텍스트 박스를 제공한다. 문장11: 사용자가 입력을 완료 후 처리할 수 있는 버튼이다. |
2) 위에서 만든 웹 페이지를 웹 브라우저에서 열어보자.
http://localhost:8080/web/hello.html 값을 입력 후 전송버튼을 선택한다.
설명 | 주소에 http://localhost:8080/web/hello.dh?msg=ABCDEFG&pwd=123456 전달 하려고 하는 값이 모두 표기가 되고 있다. 암호가 보이고 있고, 암호가 보인다면 의미가 없을 것이다. 아래의 화면에서 는 값이 정상적으로 전달되는지를 확인하기 위해 화면에 출력해본 것이다. |
이번 시간엔 doGet() 메서드에 대해서 알아봤다.
다음 시간엔 암호를 숨길 수 있는 doPost() 메서드에 대해서 알아보자...
잡담. 점점 내용은 없고 코드의 양만 늘어나고 있습니다. ^^*
'Developer > Java-was' 카테고리의 다른 글
#008. ServletConfig 와 ServletContext 알아보기... (3) | 2011.04.27 |
---|---|
#007. doPost() 메서드에 대해서 알아보기... (64) | 2011.04.27 |
#005. HttpServlet Class 실습을 통해 알아보기... (0) | 2011.04.26 |
#004. Servlet (서블릿)에 대해서 알아보기... (2) | 2011.04.26 |
#003. Java EE Perspective 와 간단한 HTML 문서 만들어보기... (0) | 2011.04.25 |