我是初学者,我正在尝试了解如何从Servlet重定向到JSP文件。我的Servlet在收到当前JSP文件的回复后“生成”了一个结果,结果我希望将它传递给另一个JSP文件。我知道有一行代码:
request.getRequestDispatcher("/upload.jsp").forward(request, response);
但我是否为此创建了一个单独的方法并在doGET中调用它?
答案 0 :(得分:4)
你可以做到
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/upload.jsp").forward(request, response);
}
即使您单独创建了method
,也需要request
和response
method
对象。
我非常推荐官方文档:
答案 1 :(得分:0)
如果您使用带注释的3.0版,则重定向非常简单。
假设您有一个User类(带有setter和getter的字符串全名和用户名)和处理数据库操作的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(例如,如果你要插入db你的 变化将反映出来。)
顺便说一句:如果向xml添加几行,可以删除控制器中的.jsp和路径:
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/
看一下这些教程: