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.forward(request,response);                                                            // rd 객체는 Result2.jsp를 가리키고 있는데

                                                                                                         // 모든제어를 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 :  소스는 정상이라 주석과 해설 부분은 본인 생각이라 틀릴 수 있다.

 
2010/01/11 13:15 2010/01/11 13:15

트랙백 주소 :: http://thinkit.or.kr/programming/trackback/22

댓글을 달아 주세요