欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【基于轻量型架构的WEB开发】课程 12.4 页面跳转 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis

【基于轻量型架构的WEB开发】课程 12.4 页面跳转 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis

2024/11/13 17:13:12 来源:https://blog.csdn.net/m0_73972962/article/details/143505768  浏览:    关键词:【基于轻量型架构的WEB开发】课程 12.4 页面跳转 Java EE企业级应用开发教程 Spring+SpringMVC+MyBatis

12.4 页面跳转

12.4.1 返回值为void类型的页面跳转

返回值为void类型的页面跳转到默认页面

  • 当Spring MVC方法的返回值为void类型,方法执行后会跳转到默认的页面。
  • 默认页面的路径由方法映射路径和视图解析器中的前缀、后缀拼接成,拼接格式为“前缀+方法映射路径+后缀”。
  • 如果Spring MVC的配置文件中没有配置视图解析器,则会报HTTP Status 500错误。

1

  • 通过案例演示返回值为void类型的页面跳转。
  • 创建一个页面跳转类PageController,在PageController类中定义方法showPageByVoid(),用于测试Spring MVC方法返回值为void的页面跳转。
@Controller
public class PageController {@RequestMapping("/register")public void showPageByVoid() {System.out.println("showPageByVoid running");}
}

2

PageControllerjava类中的方法showPageByVoid()处理请求。

  • 上述代码的showPageByVoid()方法将会处理URL为register的请求。
  • showPageByVoid()方法中没有返回值,只有一行打印输出字符串的代码。

3

  • 启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/register
  • 控制台打印信息显示showPageByVoid running

  • 控制台打印上图所示的信息后,浏览器页面进行跳转,跳转的页面如图所示。

  • 注册页面显示,包含用户名和密码输入框,以及注册按钮。
  • 由上面两个图的内容可以得出,访问地址后,执行了showPageByVoid()方法,并且在执行后成功跳转到WEB-INF文件夹下的register.jsp页面。
  • 页面虽然跳转了,但浏览器地址栏没有变化,原因是Spring MVC对请求默认按转发的方式进行响应。

12.4.2 返回值为String类型的页面跳转

返回值为String类型的页面跳转-不携带数据

1

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

@Controller
public class PageController {@RequestMapping("/showPageByString")public String showPageByString() {System.out.println("showPageByString running");return "register";}
}

2

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

控制台打印上图所示信息后,浏览器页面进行跳转,跳转的页面如下图所示。

        由上面两图所示的内容可以看出,访问地址后,执行了showPageByString()方法,方法执行后成功跳转到WEB-INF文件夹下的registerjsp页面。如果此时注释掉Spring MVC配置文件spring-mvc.xml中的视图解析器,在浏览器中访问showPageByString0)方法,请求会转发到映射路径为register对应的showPageByVoid()方法中。

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

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

  • forward:需要转发到的资源路径(在服务端内部完成请求资源的过程,客户端不知情)
  • redirect:需要重定向到的资源路径(在客户端完成请求资源的过程)

1

修改文件PageControllerjava,新增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.itheima.com";}

2

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

控制台打印上图所示的信息后,浏览器页面进行跳转,跳转的页面如图所示。

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

3

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

控制台打印上图所示的信息后,浏览器页面进行跳转,跳转的页面如图所示。

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

返回值为String类型的页面跳转-携带数据

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

1

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

//只展示了showPageByRequest()方法@RequestMapping("/showPageByRequest")public String showPageByRequest(HttpServletRequest request) {System.out.println("showPageByRequest running");request.setAttribute("username", "request");return "register";}

2

修改文件Userjava,在registerjsp的表单中添加value属性,用于接收转发传递过来的数据。

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

3

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

控制台打印上图所示的信息后,浏览器页面进行跳转,跳转的页面如图所示,

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

4

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

控制台打印上图所示的信息后,浏览器页面进行跳转,跳转的页面如图所示

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

12.4.3 返回值为ModelAndView类型的页面跳转

ModelAndView对象组成部分

使用方法的返回值可以设定跳转的逻辑视图名称,使用Model等对象实现页面跳

转时传输数据。除此之外,Spring MVC还提供了兼顾视图和数据的对象

ModelAndView,ModelAndView对象包含视图相关内容和模型数据两部分,其中视

图相关的内容可以设置逻辑视图的名称,也可以设置具体的View实例;模型数据则会

在视图渲染过程中被合并到最终的视图输出。

ModelAndView设置视图和数据模型的方法

ModelAndView方法说明

setViewName()方法setView()方法都是为ModelAndView对象设置视图的方

法,其中前者使用更方便,因此setViewName()方法比较常用。后3个方法都是向

ModelAndView对象中添加模型数据的,其中addObject(Object attributeValue)方

法添加的attributeValue,默认名称为attributeValue类型全限定名的最后一个单词且

首字母小写;addObject(String attributeName, Object attributeValue)方法可以在

页面上以${attributeName}方式取出attributeValue。

接下来通过一个案例演示返回值为ModelAndView类型的页面跳转,案例具体实现步骤如下。

1

        修改文件PageController.java,新增showModelAndView()方法,在showModelAndView()方法中使用ModelAndView封装数据和视图,完成页面跳转时传递数据。

@RequestMapping("/showModelAndView")
public ModelAndView showModelAndView() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("username","heima");
User user = new User(); user.setPassword("password");
modelAndView.addObject("user",user);
modelAndView.setViewName("register");
return modelAndView;
}

2

启动chapter12项目,在浏览器中访问地址
http://localhost:8080/chapter12/showModelAndView。访问后,浏览器页面
进行跳转,跳转的页面如图所示。
从图中所示的页面可以得出,访问地址后执行了showModelAndView()方法,方法执行后,添加的模型数据都在register.jsp页面成功取出。

版权声明:

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

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