본문 바로가기
다양한 기술들/Web 관련

[JSP] 간단한 실습

by 예스p 2023. 1. 10.

JSP 실습

서블릿의 doGet 메소드 내에서 응답페이지를 만드는 과정을

JSP에게 위임하여 화면을 처리해보자


1) JSP 파일 만들기

  • 이클립스 폴더 오른클릭 [new]-[JSP File]
  • 기존 html파일과의 차이점 :
    최상단에 2줄의 페이지 지시어가 있다는 점이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 

 

2) (서블릿) 데이터 담기

  • 현재 servlet상에 존재하는 데이터가 응답화면(jsp)에서 필요한 경우
    데이터를 담기 위한 공간 == request의 attribute영역(키=밸류 세트로 담는다)
  • request.setAttribute("키", 밸류); 
    키는 문자열로 입력
    밸류는 Object타입으로 정의되어 있어 어떤 타입이든 담을 수 있음.

 

3) (서블릿) JSP로 위임하기

  • JSP로 위임시 필요한 객체 (RequestDispatcher)를 만든 후 포워딩 한다.
    매개변수에는 jsp파일의 경로를 기입한다.
RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");
view.forward(request, response);

 

4) JSP에서 자바코드 쓰기

  • HTML을 자유롭게 쓰다가, 자바코드나 변수가 필요할 경우 스크립틀릿 혹은 출력식을 활용한다.

 

 

 

** Servlet 페이지**

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //post방식은 인코딩을 해준다.
    request.setCharacterEncoding("UTF-8");
    //데이터 뽑기 및 가공처리
    String name = request.getParameter("name");
    String gender = request.getParameter("gender"); 
    int age = Integer.parseInt(request.getParameter("age"));
    String[] foods = request.getParameterValues("food");
    //데이터 담기
    request.setAttribute("name", name);
    request.setAttribute("age", age);
    request.setAttribute("gender", gender);
    request.setAttribute("foods", foods);
    //JSP로 데이터를 전달하며 위임하기
    RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");
    view.forward(request, response);

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //System.out.println("doPost메소드 실행");
    //콘솔창을 보면 해당 메소드가 호출됨을 확인할 수 있다.
    doGet(request, response);
}

 

 

**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>
	<% 
	//데이터 꺼내기, 강제형변환
	String name = (String)request.getAttribute("name");
	int age = (int)request.getAttribute("age");
	String gender = (String)request.getAttribute("gender");
	String[] foods = (String[])request.getAttribute("foods");
	%>
    
	<%= name %>님은 <%= age %>살이며,
	성별은 
	<% if(gender==null) { %>
		선택하지 않았습니다 <br> 
	<%} else { %>
		<% if(gender.equals("M")) { %>
			남자입니다.<br>
		<% } else { %>	
			여자입니다.<br>
		<% } %>	
	<% } %> // 상황에 따라 바뀐다 >> 동적인 페이지
	
	좋아하는 음식은
	<% if(foods == null) { %>
		없습니다.
	<% } else { %>
			<ul>
			<% for(int i=0; i<foods.length; i++) { %>	
				<li><%= foods[i] %></li>
			<% } %>
			</ul>
	<% } %>
</body>
</html>

 

 

 

 

 

 

 

 

댓글