SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
사용자의 입력 값을 받아 해당 입력 값에 따라 추천 서비스를 제공해주었습니다.
setAttribute(String, Object)
- key, value
public class TestPersonServlet3 extends HttpServlet{
/**
* POST 요청 처리 시 doPost 오버라이드
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 인코딩 처리 (POST 요청 시 필수)
request.setCharacterEncoding("utf-8");
// 2. 사용자 입력 값 처리
String name = request.getParameter("name");
String color = request.getParameter("color");
String animal = request.getParameter("animal");
String[] foods = request.getParameterValues("food");
System.out.println("name = " + name);
System.out.println("color = " + color);
System.out.println("animal = " + animal);
System.out.println("foods = " + (foods!=null?Arrays.toString(foods):null));
// 3. 업무로직
// 추천서비스
String recommendation = "";
switch(color) {
case "빨강" : recommendation="빨간 초장을 버무린 회덮밥"; break;
case "노랑" : recommendation="산뜻한 노란 우산"; break;
case "초록" : recommendation="초록색 배춧잎"; break;
case "파랑" : recommendation="파랑색 시원한 죠스바"; break;
}
// 4. 응답메세지 작성 -> JSP에게 위임
// jsp에 데이터 전달 : request 속성 등록
request.setAttribute("recommendation", recommendation);
RequestDispatcher reqDispatcher = request.getRequestDispatcher("/testPersonResult.jsp");
reqDispatcher.forward(request, response);
}
}
사용자가 입력한 color에 따라 추천 서비스를 제공해주었고, jsp에 직접 전달을 해줄 수 없기 때문에 우회하여 request의 속성에 해당 값을 등록하였습니다.
getAttribute(String)
- key
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Arrays"%>
<%
// jsp scriptlet - java 영역
// request, response 객체는 선언없이 접근 가능!(forward에서 매개인자로 넘겨줌)
String name = request.getParameter("name");
String color = request.getParameter("color");
String animal = request.getParameter("animal");
String[] foods = request.getParameterValues("food");
System.out.println("name@jsp = " + name);
System.out.println("color@jsp = " + color);
System.out.println("animal@jsp = " + animal);
System.out.println("foods@jsp = " + (foods!=null?Arrays.toString(foods):null));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>개인취향검사결과</title>
</head>
<body>
<h1>개인취향검사결과 <%=request.getMethod() %></h1>
<p>이름 : <%= name %></p>
<p>선호색상 : <%= color %></p>
<p>선호동물 : <%= animal %></p>
<p>선호중국음식 : <%= foods!=null?Arrays.toString(foods):"없음" %></p>
<h2><span><%= name %></span>님, 오늘은 <mark><%= request.getAttribute("recommendation") %></mark> 어떠세요?</h2>
</body>
</html>
jsp에서는 request에 등록 되어있는 속성을 가져오는 getAttribute()를 이용하여 등록된 값을 가져올 수 있습니다.
만약 변수에 담아서 사용한다면, getAttribute()는 반드시 Object를 리턴하기 때문에 다운캐스팅이 필요합니다.
위와 같은 구조를 갖고 있습니다.
tomcat이 미리 request, response객체를 생성하고 servlet을 생성하여 doPost를 호출할 때 request와 response를 받습니다.
중요한 기능인 recommendation을 생성하였지만, forward 시 직접 jsp에게 전달할 수 없기 때문에 우회하여 tomcat이 만들어놓은 request 객체의 속성으로 recommendation을 key, value값으로 저장을 하고,
jsp에서 request 객체에 접근하여 등록해놓은 recommendation을 가져와 사용한 후 HTML로 변환하여 client에게 제공해주었습니다.
LIST
'Java > Servlet & JSP' 카테고리의 다른 글
JSP) 웹 페이지 로그인 기능 구현하기 (0) | 2022.06.21 |
---|---|
JSP) SQL과 함께 사용하기 (접속 테스트 및 파일 구조) (0) | 2022.06.20 |
JSP) 페이지 재사용 - include 처리 (0) | 2022.06.18 |
JSP) 분기처리 - if문/switch문/반복처리 (0) | 2022.06.17 |
JSP) JSP Basic - jsp 주석/html 주석, 서버/클라이언트 연산 처리 (0) | 2022.06.17 |