JSP

dev_hnbm·2023년 12월 2일
0

대덕인재개발원

목록 보기
23/30

📄 JSP

Java Server Page를 뜻한다. 서버 측에서 동적인 웹 페이지를 생성하는데 사용되는 Java 기반의 웹 프로그래밍 기술이다. Servlet은 Java 코드 안에 HTML 코드였다면, JSP는 HTML 코드에 Java 코드를 삽입한다.
JSP 파일의 폼에서 입력한 데이터가 Servlet으로 전달되며, Servlet의 HttpServletRequest 객체가 데이터를 가지고 있다.

  • <%-- --%> JSP 주석
  • <% %> 스크립트릿, Java 코드 작성 영역
  • <%= %> 변수의 값이나 수식의 결과 출력

🟠 주요 메서드

request.setCharacterEncoding("utf-8")
Post 방식으로 전달되는 문자 인코딩 방식 설정
Get 방식의 인코딩은 server.xml에 이미 정의되어 있음


request객체.getParameter("파라미터명")
클라이언트가 보내온 데이터값(JSP의 name 속성)을 가져오며, 자료형은 String
select 태그는 option 태그의 value 속성 값이 전달


request객체.getParameterValues("파라미터명")
동일한 파라미터명이 여러개일 때 사용하며, 자료형은 String[]
name 속성이 같으면 배열로 담김


request객체.getParameterNames()
전송된 모든 파라미터명을 Enumeration 객체에 담아서 반환


request객체.getParameterMap()
전송된 모든 파라미터들을 Map 객체에 담아서 반환
이 Map의 key 값은 파라미터명이며 자료형은 String
value 값은 파라미터에 저장된 값이며 자료형은 String[]



클라이언트가 보낸 데이터(JSP) 받기(Servlet)

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>
  <h2>Request 연습용 Form</h2>
  <form action="<%= request.getContextPath() %>/requestTest01.do" method="post">
    <table border="1">
      <tr>
        <td>이름</td>
        <td><input type="text" size="10" name="username"></td>
      </tr>
      <tr>
        <td>직업</td>
        <td>
          <select name="job">
            <option value="회사원">=회사원=</option>
            <option value="학생">=학생=</option>
            <option value="무직">=무직=</option>
            <option value="기타">=기타=</option>
          </select>
        </td>
      </tr>
      <tr>
        <td>취미</td>
        <td>
          <input type="checkbox" name="hobby" value="여행">여행
          <input type="checkbox" name="hobby" value="독서">독서
          <input type="checkbox" name="hobby" value="게임">게임
        </td>
      </tr>
      <tr>
        <td colspan="2" style="text-align: center;">
          <input type="submit" value="전송">
          <input type="reset" value="초기화">
        </td>
      </tr>
    </table>
  </form>
</body>
</html>  

Servlet

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

@WebServlet("/requestTest01.do")
public class RequestTest01 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String name = request.getParameter("username");
		String job = request.getParameter("job");
		String[] hobbys = request.getParameterValues("hobby");
		
		out.println("<html>");
		out.println("<head><meta charset='utf-8'><title>request 객체 연습</title></head>");
		out.println("<body>");
		out.println("<h2>받은 데이터 출력</h2>");
		out.println("<table border='1'>");
		out.println("<tr><td>이름</td>");
		out.println("<td>" + name + "</td></tr>");
		out.println("<tr><td>직업</td>");
		out.println("<td>" + job + "</td></tr>");
		out.println("<tr><td>직업</td>");
		
		for(String hobby : hobbys) {
			if(hobbys == null) {
				out.println("<td>취미가 하나도 없습니다.</td>");
			} else {
				out.println("<td>" + hobby + "</td>");
			}
			
		}
		
		out.println("</table></body></html>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

0개의 댓글