JSP Servlet 구현하기, POST 로 값 전송하기 |
환경: Eclipse Mars, Android 4.2.2
자바 서버 페이지 JSP 와 Servlet 간에 데이터를 주고 받는 방법을 구현해 보도록 하겠습니다. JSP 페이지에서 PSOT/GET 방식으로 Request 하게 되면 Servlet 자바 클래스에서 내용을 받아 처리한 후 Response 로 응답하게 됩니다.
▼ 먼저 웹 어플리케이션 프로젝트를 생성합니다. 그리고 패키지로 가서 오른 마우스를 클릭한 후 [New] > [Other] 메뉴를 선택합니다. Servlet 생성 메뉴가 없기 때문입니다. 새 파일 생성 창에서 Web 폴더로 가시면 Servlet 을 볼 수 있습니다.
▼ 새 파일 생성 팝업창을 띄워서 Servlet 을 선택한 이유는 자동으로 GET/POST 함수를 만들어 주기 때문입니다. HttpServlet 을 상속받아 만들기 때문에 가능한 것입니다. 매번 만들어야 되는 함수이기 때문에 자동으로 만들면 편하겠죠.
▼ 아래 그림과 같이 HttpServlet 클래스를 상속받아 Servlet 클래스를 만들게 되면 생성자 함수와 doGet(), doPost() 함수가 자동으로 생성됩니다. JSP 페이지에서 POST/GET 방식으로 보내게 되면 두 함수에서 받을 수 있습니다.
▼ 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() 함수에서 받을 수 있겠죠.
<%@ 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>
'자바(JAVA)' 카테고리의 다른 글
자바(Java) 자료구조 클래스 LinkedList 구현하는 방법 (0) | 2020.06.27 |
---|---|
[Java] 자바 다형성, 오버라이딩(Overriding), 오버로딩(Overloading) (3) | 2020.06.07 |
자바(Java) AWT – Button 컨트롤 사용법과 예제 (1) | 2020.06.04 |
자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현 (0) | 2020.05.24 |
자바(Java) static 문법에 대해서 알아 봅니다. (0) | 2019.11.02 |
자바(Java) 두 수에서 최대공약수 찾는 방법, BigInteger (0) | 2019.10.23 |
프로그램 플로우차트, UML , 데이터베이스 테이블 설계를 할 수 있는 사이트 (0) | 2019.07.18 |
자바(Java) 화폐 단위 구분을 위한 콤마 찍는 방법 (0) | 2019.06.11 |