Servlet & Jsp

[Servlet의 HttpRequest 사용하기] - Head Frist Servlet & Jsp

사과씨앗 2020. 12. 21. 17:34
728x90
반응형

이번 글에서는 컨테이너에서 서블릿으로 넘겨준 요청 값인 HttpRequest를 사용하는 방법을 알아보도록 하겠습니다.

 

1.Project 생성 

 

먼저 프로젝트를 하나 생성하여 줍니다. New - > Project 클릭

 

Dynamic Web Project 를 선택하여 주시고
프로젝트명을 입력한 뒤 Next 버튼 클릭

 

Next 클릭

 

화면에 표시한 체크박스를 체크한 뒤 Finish 하여 줍니다

체크박스는 체크하면 배포 서술자인(DD) web.xml를 프로젝트 내부에 만들어 줍니다. 

 

 

먼저 src 폴더안에 위와같이 패키지를 만들어 준 다음 servlet1.java 클래스를 만들어 줍니다. 그다음 WebContent(글쓴이는 Web) 폴더 바로 아래 index,jsp도 하나 만들어 줍니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="test.do" method="POST">

<select name="fruits"> <!-- name 속성을 이름으로 request 객체에서 값을 찾아 올수 있습니다 -->
<option value="apple">사과</option>
<option value="appleSeed">사과씨앗</option>
<option value="orange">오렌지</option>
</select><br>
<input type="submit" value="서브밋 버튼"> 

</form>


</body>
</html>

index.jsp 를 열어서 위처럼 코딩해주시면 됩니다. 여기서 중요하게 볼 점은 <form> 태그 안에 action 속성과 method 속성입니다.

 

먼저 action 속성은 어느 서블릿으로 보낼지 지정해 주는 속성 임으로 보낼 서블릿의 맵핑명을 작성해 줍니다.

method 속성은 http 메소드중 Get / Post 어느 방식으로 보낼 건지를 정하는 것이며 method 속성을 생략하게 되면 defalute 값으로 Get방식으로 요청을 보냅니다. 우리는 값을 보내기 위해 Post 방식을 사용하겠습니다.

 

 

<?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>RequestTest</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>servlet_1</servlet-name>
 <servlet-class>com.servlet.request.servlet1</servlet-class>
 </servlet> 
  
 <servlet-mapping>
 <servlet-name>servlet_1</servlet-name>
 <url-pattern>test.do</url-pattern>
 </servlet-mapping>
 
  
</web-app>

그다음 web.xml 파일에서 servlet을 맵핑하기 위한 코드를 작성하여 줍니다.

 

package com.servlet.request;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class servlet1
 */
@WebServlet("/test.do")   /* << ---- 이 부분에서 맵필을 하여도 됩니다.*/
public class servlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public servlet1() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 값을 받을 String 변수를 만들어 준 뒤 요청을 보내온 request 객체 내부에서 jsp에서 작성한 name 값으로 파라미터를 꺼내 봅시다.
		String result = request.getParameter("fruits");
		
		System.out.println("result : " + result);
	
	
	}

}

 

위처럼 코드를 작성해 주시고 이제 서버를 실행시켜 줍니다.

 

정상적으로 실행이 되면 위와 같은 화면이 호출 됩니다. 셀렉트 박스를 선택한 뒤 서브밋 버튼을 눌러 줍시다.

 

버튼을 누르면 클라이언트 가 보낸 요청을 컨테이너에서 HttpRequest로 받아 servlet으로 넘겨 준것을 확인 할 수 있습니다.

 

 

 

그 외 request 객체에서 얻을 수 있는 정보들 몇 가지를 정리하여 봅시다.

 

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 값을 받을 String 변수를 만들어 준 뒤 요청을 보내온 request 객체 내부에서 jsp에서 작성한 name 값으로 파라미터를 꺼내 봅시다.
		String result = request.getParameter("fruits");
	
		System.out.println("result : " + result);
		
		//파라미터를 배열형태로 받을 경우
		String[] resultArr = request.getParameterValues("name");
		
		//클라이언트의 플랫폼 정보 및 브라우저 정보
		String client = request.getHeader("user-Agnet");
		
		//쿠기정보
		Cookie[] cookies = request.getCookies();
		
		//세션정보
		HttpSession session = request.getSession();
		
		//Http 메소드
		String theMethod = request.getMethod();
		
	
	
	}

서블릿에서 클라이언트가 보낸 요청정보를 받는 법을 알아보았습니다.

 

감사합니다.

728x90
반응형