您的位置:首页 > 娱乐 > 八卦 > Spring MVC数据绑定和响应——页面跳转(二)返回值为String类型的页面跳转

Spring MVC数据绑定和响应——页面跳转(二)返回值为String类型的页面跳转

2024/12/23 6:03:04 来源:https://blog.csdn.net/W_Fe5/article/details/139904558  浏览:    关键词:Spring MVC数据绑定和响应——页面跳转(二)返回值为String类型的页面跳转

一、不携带数据

        接下来通过一个案例演示返回值为String类型时,不携带数据的页面跳转,案例具体实现步骤如下。

1、修改文件PageController.java,新增showPageByString()方法,用于测试返回值为String类型的页面跳转,showPageByString()方法的实现代码如下所示。

@Controller
public class PageController {@RequestMapping("/register")public void showPageByVoid() {System.out.println("showPageByVoid running");}
}

2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showPageByString。访问后,控制台打印信息如图所示。

showPageByString running

        控制台打印上图所示信息后,浏览器页面进行跳转。访问地址后,执行了showPageByString()方法,方法执行后成功跳转到WEB-INF文件夹下的register.jsp页面。如果此时注释掉Spring MVC配置文件spring-mvc.xml中的视图解析器,在浏览器中访问showPageByString()方法,请求会转发到映射路径为register对应的showPageByVoid()方法中。

二、返回值为String类型的页面跳转的转发方式

        当方法的返回值为普通的字符串时,Spring MVC在方法执行后会默认以转发的方式响应给客户端。除了这种默认的转发方式,还可以返回指定前缀的字符串,来设定处理器执行后对请求进行转发还是重定向,设定转发和重定向的字符串格式如下所示。

forward:需要转发到的资源路径
redirect:需要重定向到的资源路径

接下来,通过一个案例演示返回指定前缀的字符串的页面跳转,具体实现步骤如下。

        1、修改文件PageController.java,新增showPageByForward()方法和showPageByRedirect()方法,分别用于测试方法执行后转发和重定向的页面跳转。  

@RequestMapping("/showPageByForward")
public String showPageByForward() {System.out.println("showPageByForward running");return "forward:orders.jsp";	}
@RequestMapping("/showPageByRedirect")
public String showPageByRedirect() {System.out.println("showPageByRedirect running");return "redirect:http://www.test.com";	}

2、启动chapter12项目,在浏览器中访问访问地址http://localhost:8080/chapter12/showPageByForward。访问后,控制台打印信息如图所示。

showPageByForward running

        控制台打印上图所示的信息后,浏览器页面进行跳转。由控制台打印信息、跳转的页面和地址栏信息可以得出,访问地址后,执行了showPageByForward()方法,方法执行后转发到项目的orders.jsp页面。

        3、在浏览器中访问地址http://localhost:8080/chapter12/showPageByRedirect。访问后,控制台打印信息如图所示。

showPageByRedirect running

        控制台打印上图所示的信息后,浏览器页面进行跳转。 由控制台打印信息、跳转的页面和地址栏信息可以看出,访问地址后执行了showPageByRedirect()方法,方法执行后重定向到黑马程序员的官网。需要注意的是,方法返回的字符串一旦添加了“forward:”或“redirect:”前缀,那么视图解析器不再会为方法返回值拼接前缀和后缀了。

三、携带数据

        接下来通过一个案例演示携带数据的页面转发,该案例使用HttpServletRequest类型形参和Model类型形参进行数据传递,案例具体实现步骤如下。

        1、修改文件PageController.java,新增showPageByRequest()方法和showPageByModel()方法,showPageByRequest()方法使用HttpServletRequest传递数据,showPageByModel()方法使用Model传递数据,两个方法都使用字符串指定跳转的页面。 

    @RequestMapping("/showPageByRequest")public String showPageByRequest(HttpServletRequest request){System.out.println("showPageByRequest running");request.setAttribute("username","request");return "register";}@RequestMapping("/showPageByModel")public String showPageByModel(Model model){System.out.println("showPageByModel running");model.addAttribute("username","model");User user = new User();user.setPassword("password");model.addAttribute("user",user);return "register";

2、修改文件User.java,在register.jsp的表单中添加value属性,用于接收转发传递过来的数据。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/registerUser" method="post">用户名:<input type="text" name="username" value="${username}"/><br/>密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"/><br/><input type="submit" value="注册"/>
</form>
</body>
</html>

        3、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showPageByRequest。访问后,控制台打印信息如图所示。

showPageByRequest running

        控制台打印上图所示的信息后,浏览器页面进行跳转。 由控制台打印信息,以及跳转的页面信息可以看出,访问地址后执行了showPageByRequest()方法,方法执行后HttpServletRequest中的username转发到register.jsp页面中。

        4、在浏览器中访问地址http://localhost:8080/chapter12/showPageByModel。访问后,控制台打印信息如图所示。

showPageByModel running

        控制台打印上图所示的信息后,浏览器页面进行跳转。 由控制台打印信息,以及跳转的页面信息可以看出,访问地址后执行了showPageByModel()方法,方法执行后,Model中的username和user对象转发到register.jsp页面。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com