SpringMVC 转发、重定向

转发、重定向到其它业务方法

@org.springframework.stereotype.Controller
@RequestMapping("/userController")
public class UserController{

    @RequestMapping("/handler1")
    public String handler1() throws IOException {
        //转发给handler2处理
        return "forward:handler2";
    }

    @RequestMapping("/handler2")
    public void handler2(HttpServletResponse response) throws IOException {
       //......
    }

}

返回String,在里面加上关键字:forward(转发),redirect(重定向)。

(1)如果是转发、重定向到本controller的其它业务方法:

  • 可以写全路径
return "forward:/userController/handler2";
  • 也可以只写子路径,但不要子路径开头的斜杠

     不管handler2()是标注为@RequestMapping("/handler2"),还是标注为@RequestMapping("handler2"),都只能这样:

return "forward:handler2";

(2)如果是转发、重定向到其它controller的业务方法,只能写全路径。


转发、重定向到视图

springmvc本来就会把返回的字符串作为视图名解析,然后转发到对应的视图。

转发有2种方式:

  • 不使用关键字forward,可以使用视图解析器
  • 使用关键字forward,但只能写全路径

重定向:

  • 使用关键字redirect,只能写全路径

因为使用关键字forward、redirect时,SpringMVC不会使用视图解析器来解析视图名,也就不能使用视图名拼接,只能写全路径。

示例

在web文件夹下新建1.jsp

return "redirect:/1.jsp";

/表示web文件夹根目录。

可以转发、重定向到html这种静态页面,也可以转发、重定向到WEB-INF下的页面,但需要配置资源,不然会出错,

参考:



当然,也可以使用servlet的方式来实现:

  • 传入HttpServletRequest | HttpServletResponse类型的参数。

原文地址:https://www.cnblogs.com/chy18883701161/p/12248550.html

时间: 2024-10-10 15:29:34

SpringMVC 转发、重定向的相关文章

SpringMVC转发和重定向区别!

在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping("/login.do") public String login(HttpServletRequest request,HttpServletResponse response){ request.setAttribute("message", "hello

SpringMVC之转发重定向

package com.tz.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ViewController { @RequestMapping("/view") public String view(){ return "../

SpringMVC(二八) 重定向

在控制器中在返回的字符串中使用 return  "redirect:/index.jsp" 的形式,使返回重定向到另外一个页面. 控制器参考代码: package com.tiekui.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public

域对象的属性和请求的转发重定向

1 在HttpServlet中有操作属性的方法,在pageContext,request,session,application四个域对象中也有操作属性的方法. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E

关于转发重定向以及包含

一.请求重定向:    1.原始方式        response.setStatus(302);        response.setHeader("Locaton","/xxxxxx");    2.快捷方式        response.sendRedirect("/xxxx");    *3.额外的方式        response.setHeader("refresh","0;url=/xxxx&q

JSP总结报告二(域对象,请求转发,重定向)

一. JSP四大域对象介绍 1. pageContext  :  属性的作用范围仅限于当前 JSP 页面. 2. request:  属性的作用范围仅限于同一个请求. 3. session: 属性的作用范围限于一次会话, 浏览器打开直到关闭称之为一次会话(在此期间会话不失效). 4. application (servletContext ): 属性的作用范围限于当前 WEB 应用. 是范围最大的属性作用范围, 只要在一处设置属性, 在其他各处的 JSP 或 Servlet 中都可以获取到. 二

关于Struts2的通配方法、转发重定向

1.通配符 在配置struts.xml文件的时候,需要很多action,这时可以用到通配符找到与之对应的方法和类,当然实际开发中很少用到这种方法 struts.xml: <!--通配方法 *_* 第一个* 是类名 第二个* 方法名--> <action name="*_*" class="cn.struts.action.{1}" method="{2}"> <result name="{2}"

SpringMVC中重定向底层原理

只要将数据放入model中, 也能取到值,原因是model临时放入session域中,当从定向到另一个url时,底层把数据拼接在url地址后面(重定向一定是get请求方式),同时将session域中的这条数据清除,重定向到conttoller时,取值方式只有request.getParameter("id");      request.getAttribute("id")和request.getSession().getAttribute("id&quo

SpringMVC:重定向

重定向问题 @Controller @RequestMapping("/StdManage") public class StdManageController {     @RequestMapping("/test1")     public String test1() {         return "test1";     }          @RequestMapping("/test2")     publi