JSP Servlet 구현하기, POST 로 값 전송하기

자바(JAVA)

JSP Servlet 구현하기, POST 로 값 전송하기

 

 환경:  Eclipse Mars, Android 4.2.2

 

자바 서버 페이지 JSP Servlet 간에 데이터를 주고 받는 방법을 구현해 보도록 하겠습니다. JSP 페이지에서 PSOT/GET 방식으로 Request 하게 되면 Servlet 자바 클래스에서 내용을 받아 처리한 후 Response 로 응답하게 됩니다.

 

먼저 웹 어플리케이션 프로젝트를 생성합니다. 그리고 패키지로 가서 오른 마우스를 클릭한 후 [New] > [Other] 메뉴를 선택합니다. Servlet 생성 메뉴가 없기 때문입니다. 새 파일 생성 창에서 Web 폴더로 가시면 Servlet 을 볼 수 있습니다.

 

JSP Servlet 구현하기, POST 로 값 전송하기

 

새 파일 생성 팝업창을 띄워서 Servlet 을 선택한 이유는 자동으로 GET/POST 함수를 만들어 주기 때문입니다. HttpServlet 을 상속받아 만들기 때문에 가능한 것입니다. 매번 만들어야 되는 함수이기 때문에 자동으로 만들면 편하겠죠.

JSP Servlet 구현하기, POST 로 값 전송하기

 

아래 그림과 같이 HttpServlet 클래스를 상속받아 Servlet 클래스를 만들게 되면 생성자 함수와 doGet(), doPost() 함수가 자동으로 생성됩니다. JSP 페이지에서 POST/GET 방식으로 보내게 되면 두 함수에서 받을 수 있습니다.

JSP Servlet 구현하기, POST 로 값 전송하기

 

JSP 페이지에서 POST 방식으로 데이터를 보내게 되면 doPost() 함수에서 값을 처리해야 합니다. 클라이언트에서 euc-kr 로 보낼 것이기 때문에 request 클래스에 euc-kr 로 세팅 해 줍니다. 받았다는 것을 알리기 위해 response 객체로 다시 클라이언트에 값을 보냅니다. 보낼 때 response 객체의 setContentType() 함수로 text/html;charset=euc-kr 을 입력해 줘야 합니다. 그렇지 않으면 글자가 깨지게 됩니다.

protected void doPost(HttpServletRequest request,
		HttpServletResponse response) throws ServletException,
		IOException {
	
	request.setCharacterEncoding("euc-kr");
	
	// 값가져오기 
	String id = request.getParameter("name");
	
	// 출력하기 
	response.setContentType("text/html;charset=euc-kr");
	PrintWriter out = response.getWriter();
	out.println("<HTML>");
	out.println("<HEAD><TITLE>FORM</TITLE></HEAD>");
	out.println("<BODY>");
	out.println("ID 값은 " + id + " 입니다.");
	out.println("</BODY>");
	out.println("<HTML>");
	out.close();

}

 

¤ JSP 소스만들기

 

이제 JSP 페이지 소스를 간단하게 만들어 보겠습니다. input 박스를 하나 만들어서 값을 입력하고 전송하게 되면 Servlet 에서 받게 되는 것입니다. 클라이언트에서 전송방식은 POST 로 합니다. 그럼 Servlet 에서는 doPost() 함수에서 받을 수 있겠죠.

 

JSP Servlet 구현하기, POST 로 값 전송하기

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>ID 값 전송</title>
</head>
<body>
<form method="post" action="/WebApp/login">
ID : <input type="text" name="name">
<input type="submit" value="전송">
</form>
</body>
</html>

 

¤ JSP 파일과 서블릿 소스 매핑하기

 

JSP 와 서블릿 클래스를 맵핑하기 위해서는 맵핑 XML 이 필요합니다. 그냥 보낸다고 자동으로 받아지는 것이 아니죠. URL 에 입력한 값에 해당하는 클래스를 실행하기 위해 web.xml 을 만들었습니다.

<Servlet-mapping> 에 있는 <url-pattern> URL 도메인 주소 뒤에 입력되는 값입니다. 그러니까 http://mainia.tistory.com/login 이 되겠죠. 이렇게 호출하게 되면 그와 서블릿 이름이 같은 <Servlet> 태그를 찾게 됩니다. <Servlet> 의 실행 클래스 주소가 있는 <servlet-class> 찾아 맵핑시켜 줍니다. <servlet-class> 에 값은 패키지 주소를 입력하시면 됩니다. 이렇게 호출 URL 하나당 클래스 하나씩 연결하실려면 <servlet> <servlet-mapping> 을 쌍으로 만들어 주시면 됩니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>good</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
      <servlet-name>ServletTest</servlet-name>
      <servlet-class>login.LoginValue</servlet-class>
  </servlet>

  <servlet-mapping>
      <servlet-name>ServletTest</servlet-name>
      <url-pattern>/login</url-pattern>
  </servlet-mapping>

</web-app>
저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군