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>
'다양한 기술들 > Web 관련' 카테고리의 다른 글
| [04] JSON, GSON 기초 / 실습 (0) | 2023.01.20 |
|---|---|
| [03] Ajax 기초, 실습 (0) | 2023.01.18 |
| [JSP] HTML 위에서 작성하는 Java / 기본 문법 (0) | 2023.01.10 |
| [서블릿] 실습 : form태그를 통한 HTTP 통신 (0) | 2023.01.10 |
| [서블릿] 동적 웹 만들기 개념 / 주요 인터페이스 (0) | 2023.01.03 |
댓글