2013년 11월 17일 일요일

서블릿 체이닝이란? 한서블릿의 출력을 다른 서블릿의 입력으로 이용하는 경우인데 RequestDispatcher를 이용하여 forward 형태로 구현가능하다. 아래 예제를 보자. 1. First.java package onj; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //아래 WebServlet import하려면 이클립스 build path에서 add library -> server runtime 에서 // tomcat 선택해서 톰캣관련 라이브러리 추가해야 한다. @WebServlet("/first") public class First extends HttpServlet { String subject; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); subject = request.getParameter("subject"); RequestDispatcher rd = request.getRequestDispatcher("second"); if (subject != null) { request.setAttribute("OnjSubject", subject); //request에 subject를 매달아서(setAttribute) Second 서블릿으로 보낸다. //Second에서는 getAttribute로 받으면 된다. //이게 서블릿 체이닝, 한서블릿의 출력이 다른 서블릿의 입력으로... rd.forward(request, response); } else { response.sendError(response.SC_BAD_REQUEST, "UserName Required"); } } } 2. Second.java package onj; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.annotation.WebServlet; @WebServlet("/second") public class Second extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); String subject = (String) request.getAttribute("OnjSubject"); // Extracting the value which is set in FirstServlet out.println("Subject : " + subject); } } 3. 결과 Subject : oraclejava [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecServletJSP&wr_id=256 [개강임박강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.] 오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr) [주간] [11/25]Spring3.X, MyBatis, Hibernate실무과정 [11/25]초보자를위한실전SQL [11/25]안드로이드개발자과정 [11/25]iPhone 하이브리드 앱 개발 실무과정 [평일야간] [11/22]자바초보에서안드로이드까지 [11/26]JAVA&WEB프레임워자실무과정 [11/26]iPhone하이브리드앱개발실무과정 [11/27]SQL초보에서실전전문가까지 [11/28]Spring3.X, MyBatis, Hibernate실무과정 [주말] [11/23]JAVA&WEB프레임워크실무과정 [11/23]웹퍼블리싱 마스터 [11/23]C#,ASP.NET마스터 [11/30]SQL초보에서전문가까지 [11/30]Spring3.X,MyBatis,Hibernate실무과정 JAVA ORACLE iPhone/Android .NET 표준웹/HTML5 채용/취업무료교육 초보자(재학생)코스 


서블릿 체이닝이란? 한서블릿의 출력을 다른 서블릿의 입력으로 이용하는 경우인데 RequestDispatcher를 이용하여 forward 형태로 구현가능하다.
 
아래 예제를 보자.

1. First.java
 
package onj;
 
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//아래 WebServlet import하려면 이클립스 build path에서 add library -> server runtime 에서
// tomcat 선택해서 톰캣관련 라이브러리 추가해야 한다.

@WebServlet("/first")
public class First extends HttpServlet {
 String subject;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/plain");
  subject = request.getParameter("subject");
  RequestDispatcher rd = request.getRequestDispatcher("second");
  if (subject != null) {
   request.setAttribute("OnjSubject", subject);
  
   //request에 subject를 매달아서(setAttribute) Second 서블릿으로 보낸다.
   //Second에서는 getAttribute로 받으면 된다.
   //이게 서블릿 체이닝, 한서블릿의 출력이 다른 서블릿의 입력으로...
   rd.forward(request, response);
  } else {
   response.sendError(response.SC_BAD_REQUEST, "UserName Required");
  }
 }
}
 
2. Second.java

package onj;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
@WebServlet("/second")
public class Second extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/plain");
  PrintWriter out = response.getWriter();
  String subject = (String) request.getAttribute("OnjSubject");
  // Extracting the value which is set in FirstServlet
  out.println("Subject : " + subject);
 }
}
 
3. 결과
 
Subject : oraclejava

댓글 없음:

댓글 쓰기