重定向和转发
转发 和 重定向 从Request域里取值 也就是jsp页面取值
如果用到转发或重定向的话 后面的视图解析器 将不在 执行。
Return Void没有返回值:
转发:
//转发可以直接访问/WEB-INF目录下的文件
@RequestMapping("ReturnVoid1")
public void ReturnVoid1(HttpServletRequest request,HttpServletResponse response ) throws Exception {
/*
* 请求转发只发生一次请求 可以不用写项目名称
request.getRequestDispatcher("也可以不用写项目名称:意思就是里面什么也不写 ") forward的意思是转发 并把值(request的值和response的值)带过去
如果你想手动直接转发到视图页面的话request.getRequestDispatcher("这里是要加地址了 /WEB-INF/pages/abc.jsp")
自己手动调用转发的方法 它不会再帮你执行视图 解析器的方法
*/
request.getRequestDispatcher("/WEB-INF/pages/abc.jsp").forward(request,response);
//如果转发完 后面有代码 继续执行 没有了 直接return;
}
重定向:
//重定向 不能直接访问 /WEB-INF 目录 下的文件 通过拼接 request.getContextPath()(项目名称)+".jsp"
@RequestMapping("ReturnVoid2")
public void ReturnVoid2(HttpServletRequest request,HttpServletResponse response) throws Exception {
/*
* 重定向 两次 请求 不能写项目的位置 要拼出位置 通过新的XXX.jsp 进行转发 这里是+".jsp"
* request.getContextPath():作用是 返回的是项目名称
* */
response.sendRedirect(request.getContextPath()+"abc.jsp");
}
特殊字 进行转发 和重定向
Return String 返回字符串类型 通过特殊字 进行 操作:
//关键字进行转发和重定向
@RequestMapping("/ReturnVoid4")
public String ReturnVoid4() {
//转发
return "forward:/WEB-INF/pages/abc.jsp"; //forward:转发
//重定向
return "redirect:/abc.jsp"; //redirect:重定向
}