selectcolor.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<h1>좋아하는 색을 선택하세요</h1>
<form action="alchol.do" method="post"> //AlcholService.java 파일 생성시 매핑을 alchol.do 로 설정 (보안상 지정)
<select name="color"> //값을 가져가서 처리 할 name값 color
<option>빨강</option>
<option>파랑</option>
<option>노랑</option>
<option>검정</option>
</select>
<input type="submit" value="알코올이 필요해요">
</form>
AlcholService.java
package net.bitacademy.lifecycle;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class for Servlet: AlcholService1
*
*/
public class AlcholService extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public AlcholService() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("euc-kr"); //한글 표현시 안깨지게 하는거
String color=request.getParameter("color"); //위의 selectcolor.jsp name값을 변수 color에 값을 넣어줌
SojuExpert alchol=new SojuExpert(); //자바빈 파일 객체 생성
alchol.setColor(color); //처음 입력받은게 color 에 해당되므로 자바빈의 setColor 메소드 호출
//setColor메소드에 의해 alchol 클래스는 클래스내에 멤버변수에
//값을 할당해준다.
RequestDispatcher rd=request.getRequestDispatcher("/Result2.jsp"); // 객체를 통해 동적 웹 자원으로 전달하는부분
// Result2.jsp로 전달한다.
request.setAttribute("ALCHOL",alchol); // ALCHOL 이란 속성이름으로 alchol (클래스 객체) 을
// 속성값을 할당 , 속성값이 alchol 이된다.
// alchol 위치에 타입은 Object 이므로
// 어떠한 타입도 가능하다.
// 모든제어를 rd객체가 가리키는 Result2.jsp 로 넘겨준다.
// 이후 Result2.jsp 가 처리를 맡는다.
}
}
SojuExpert.java
package net.bitacademy.lifecycle;
public class SojuExpert {
private String color;
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) { // alchol.setColor(color); 메소드에 의해 값이 저장되는부분
this.color = color;
if(color.equals("빨강")){
brand="참이슬";
}
else if(color.equals("검정")){
brand="처음처럼";
}
else if(color.equals("노랑")){
brand="복분자";
}
else{
brand="뱀소주";
}
}
}
Result2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<h1>비오는 날에는 감자탕에 소주가 최고야 </h1>
<h2>${ALCHOL.color }색을 좋아하는 나에게 맞는 알콜은 //속성이름이 ALCHOL 인 속성에서 color 값을 가져온다.
//ALCHOL 은
// SojuExpert alchol=new SojuExpert();
// request.setAttribute("ALCHOL",alchol);
// 위 구문에 의해 SojuExpert 클래스 alchol 객체가 가리키고 있으며
// ALCHOL 로 의해 접근한다.
// 처음 선택한 name="color" 의 값이
// alchol.setColor(color); 메소드에 의해 실행되어
// 자바빈에 color (프로퍼티) 값과 brand (프로퍼티) 값이 저장된후
// ALCHOL.color 로 접근되어
// color (프로퍼티) 값과 brand (프로퍼티) 값을 가져온다.
${ALCHOL.brand }입니다.</h2> //${ } EL 태그
//------------------------------------------------------------------------------------------------------------------------
selectcolor.jsp JSP 페이지에서 선택된 name="color" 값을 AlcholService.java내의 doPost에서 처리
연동시키기 위해 자바빈을 사용하는데 자바빈 객체 생성 후
name="color" 값을 처리 하기 위해 자바빈에 있는 setColor(color) 메소드를 이용해서
값을 메모리에 일단 저장
동적으로 다른 웹 페이지로 전달하기 위해 RequestDispatcher rd=request.getRequestDispatcher("/Result2.jsp"); 사용
JSP페이지에서 결과를 표현할 때 접근하기 위해서 속성값을 부여하고 (Result2.jsp)에서 접근함
rd.forward(request,response); 메소드에 의해 포워딩 된다.
포워딩에 의해 Result2.jsp 호출되고
EL태그가 속성이름 ALCHOL 로 접근해서 원하는 결과를 얻는다.
${ALCHOL.color }
${ALCHOL.brand }이렇게 접근해서 값을 꺼내온다.
p.s : 소스는 정상이라 주석과 해설 부분은 본인 생각이라 틀릴 수 있다.
댓글을 달아 주세요