2013-04-23 88 views
2

我是一名初學者,正試圖理解如何從Servlet重定向到JSP文件。我的Servlet在收到來自當前JSP文件的回覆後「生成」一個結果,並且結果我想將它傳遞給另一個JSP文件。據我所知,有一行代碼:如何從Servlet重定向到JSP文件

request.getRequestDispatcher("/upload.jsp").forward(request, response); 

但我創建一個單獨的方法爲,並調用它的的doGet?

+0

您直接在您的'doGet/doPost/doPut/etc.'中調用該方法。 – 2013-04-23 16:10:52

+0

將它作爲doGet方法的最後一行(更具體地說,您要從哪裏重定向)。基本的想法是你的控制器的邏輯結束,你想現在重定向,把它放在那裏。 – Nishant 2013-04-23 16:12:25

+0

在doGet中調用它;似乎不需要一個沒有令人意外的代碼的單行函數。此外,這是一個停止,之後應該有一個回報。 – 2013-04-23 16:12:41

回答

4

你可以做

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     request.getRequestDispatcher("/upload.jsp").forward(request, response); 
    } 

即使你創造了一個method seperately您需要的requestresponse對象的method

我嚴重推薦的官方文檔:

http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

pictorial

+0

謝謝!這很棒! – user2221016 2013-04-23 16:30:11

+0

很高興幫助:)如果您發現有用,請將其標記爲答案。 – 2013-04-23 16:51:00

0

如果您使用帶有註釋的版本3.0重定向是非常簡單的。

假設您有一個用戶類(字符串全名和用戶名與setter和getters)和UserDAO類來處理數據庫操作。 假設這是你的控制器:

@RequestMapping(value = "/user_list") 
public String users(HttpServletResponse response, HttpServletRequest request) 
{ 
    //some function to verify access 
    boolean authorized = client.getAccess(); 
    request.setAttribute("authorized", authorized); 

    if (authorized) 
    { 
     List<User> users = UserDAO.geUsers(); 

     request.setAttribute("users", users); 
     return "user_list"; 
    } 
    else 
    { 
     return "access_denied"; 
    } 
} 

然後你就可以使用以下語法從任何位置重定向

@RequestMapping(value = "/create_user", method = RequestMethod.POST) 
public String add_user(HttpServletResponse response, HttpServletRequest request) 
{ 

    boolean authorized = client.getAccess(); 
    if (authorized) 
    { 
     User user = new User(); 

      user.setUserName(request.getParameter("username")); 
      user.setFullName(request.getParameter("fullname")); 

     if (UserDAO.saveUser(user)) 
     { 
      return "redirect:/user_list"; 
     } 
     else 
     { 
      return "error"; 
     } 
    } 
    else 
    { 
     return "access_denied"; 
    } 
} 

重定向:/ USER_LIST將返回更新USER_LIST(例如,如果你被插入到數據庫您將會反映出 的變化)。

順便說一句:你可以刪除的.jsp和路徑在您的控制器如果您添加幾行到你的XML:

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/

看一看這些教程:

http://www.javatpoint.com/spring-3-mvc-tutorial

http://www.javatpoint.com/servlet-tutorial

+0

對不起,我以爲我讀了你使用的是Spring MVC,因此我在回答中使用了它。 – monika 2013-04-23 16:42:17

+0

它不是使用Spring MVC重定向,它是向前的,如果你想使用Spring MVC重定向,你應該在你的控制器方法中返回'redirect:url'! – 2013-04-23 17:06:11

+0

這是重定向,在我上面提到的XML(鏈接到教程)中提到的xml中縮短了URL。它看起來像這樣:index.prefix =/WEB-INF/jsp/ index.suffix = .jsp等。「user_list」是url的相關部分(因爲它們都有公共前綴和後綴) – monika 2013-04-23 18:29:13