Exemple #1
0
 private void displayGroovyPage(
     final HttpServletRequest request,
     final HttpServletResponse response,
     final APISession apiSession,
     final PageResourceProvider pageResourceProvider)
     throws CompilationFailedException, InstantiationException, IllegalAccessException,
         IOException, BonitaException {
   final ClassLoader originalClassloader = Thread.currentThread().getContextClassLoader();
   final GroovyClassLoader pageClassloader =
       customPageService.getPageClassloader(apiSession, pageResourceProvider);
   try {
     Thread.currentThread().setContextClassLoader(pageClassloader);
     final Class<PageController> pageClass =
         customPageService.registerPage(pageClassloader, pageResourceProvider);
     final PageController pageController = customPageService.loadPage(pageClass);
     pageResourceProvider.setResourceClassLoader(pageClassloader);
     pageController.doGet(
         request,
         response,
         pageResourceProvider,
         new PageContext(apiSession, getCurrentLocale(request), getCurrentProfile(request)));
   } finally {
     Thread.currentThread().setContextClassLoader(originalClassloader);
   }
 }
Exemple #2
0
  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    // 1. 클라이언트가 요청한 URL을 먼저 알아낸다.(서블릿 경로 알아냄)
    // 예) http://localhost:9999/web01/score/step05/list.do
    // getServletPath()의 리턴 값: /score/step05/list.do
    String pageUrl = request.getServletPath();
    System.out.println(pageUrl);

    // 2. pageUrl로 ServletContext로부터 페이지 컨트롤러를 꺼낸다.
    PageController pageController = (PageController) this.getServletContext().getAttribute(pageUrl);

    try {
      if (pageController == null) {
        throw new Exception("URL 요청을 처리할 수 없습니다.");
      }

      // 3.페이지 컨트롤러가 사용할 객체를 준비한다.
      // 1) 요청 파라미터 맵을 준비한다.
      Map<String, String[]> paramMap = request.getParameterMap();
      // 2) 작업 결과를 담을 바구니를 준비한다.
      Map<String, Object> model = new HashMap<String, Object>();

      // 4. 페이지 컨트롤러를 실행한다.
      String viewUrl = pageController.execute(paramMap, model);

      // 5. 페이지 컨트롤러가 작업한 결과물을 ServlerRequest 보관함에 담는다.
      for (Entry<String, Object> item : model.entrySet()) {
        request.setAttribute(item.getKey(), item.getValue());
      }

      // 6. 뷰 컨포넌트(JSP)를 인클루드 한다.
      if (viewUrl.startsWith("redirect:")) {
        response.sendRedirect(viewUrl.substring(9));
      } else {
        response.setContentType("text/html; charset=UTF-8");
        RequestDispatcher rd = request.getRequestDispatcher(viewUrl);
        rd.include(request, response);
      }

    } catch (Exception e) {
      RequestDispatcher rd = request.getRequestDispatcher("/score/step05/error");
      request.setAttribute("error", e);
      rd.forward(request, response);
    }
  }
Exemple #3
0
  public static void main(String[] args) {
    PageController pc = new PageController();
    pc.setRowCount(39);

    System.out.println("totalPage=" + pc.getTotalPage());
  }