您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
13-SpringMVC组件解析-SpringMVC的XML配置解析(资源解析器)(请求转发与重定向)
发布时间:2024-12-27 19:35:33编辑:雪饮阅读()
-
首先我们来到IntelliJ IDEA中我们之前有pom中配置有spring mvc的情况下并同步了的情况下则在项目的External Libraries里面找到Maven:org.springframework:spring-webmvc:5.0.5.RELEASE下面的spring-webmvc-5.0.5.RELEASE.jar里面的o.s.w.servlet(缩写名)下面的DispatcherServlet.properties文件,该文件中其中的
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
里面的InternalResourceViewResolver
我们聚焦进去
public class InternalResourceViewResolver extends UrlBasedViewResolver
发现其继承自UrlBasedViewResolver
那么我们进一步聚焦到如
C:\Users\1\.m2\repository\org\springframework\spring-webmvc\5.0.5.RELEASE\spring-webmvc-5.0.5.RELEASE.jar!\org\springframework\web\servlet\view\UrlBasedViewResolver.class
这个文件中
那么接下来我们就基于该类进行了解与扩展。
看到public static final String FORWARD_URL_PREFIX = "forward:";
则我们可以在我们上篇中的user控制器中修改实现如
package com.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/save",method = RequestMethod.GET,params = {"username"})
public String save(){
System.out.println("UserController save running");
return "forward:/success.jsp";
}
}
那么也就是说默认响应jsp页面的方式其实是用forward转发的。
也就是浏览器地址栏的url是没有变化的,只是响应内容变化了。
那么所以你也可以修改如:
@RequestMapping(value = "/save",method = RequestMethod.GET,params = {"username"})
public String save(){
System.out.println("UserController save running");
return "redirect:/success.jsp";
}
这样就是redirect重定向了
浏览器访问后地址栏将会变到这个success.jsp的url路径上了。
还有一种就是比如我们的jsp文件不在webapp根目录,而是在webapp下面的jsp文件夹下面,那么我们每次return的时候还要写前面的/jsp/以及后面的.jsp
是挺麻烦的这种前后缀,其实也可以利用结合上面的这个类InternalResourceViewResolver
进行注入正好利用前面学习的spring注入知识。
因为
public void setPrefix(@Nullable String prefix) {
this.prefix = prefix != null ? prefix : "";
}
public void setSuffix(@Nullable String suffix) {
this.suffix = suffix != null ? suffix : "";
}
都是其父类UrlBasedViewResolver中的,所以结合
DispatcherServlet.properties文件中的
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
这一句,我们对InternalResourceViewResolver进行注入与Spring mvc的xml配置文件中如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
<context:component-scan base-package="com.web">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--
配置内部资源视图解析器
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
那么所以我们的user控制器中的save方法可以修改如:
package com.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/save",method = RequestMethod.GET,params = {"username"})
public String save(){
System.out.println("UserController save running");
return "redirect:/success";
}
}
External:外部的,外面的
Libraries:函数库
Resolver:解析器
关键字词:Spring,SpringMVC,转发,重定向
相关文章
- 12-SpringMVC组件解析-SpringMVC组件扫描(SpringMVC配
- 11-SpringMVC组件解析-SpringMVC注解解(限定http请求
- 08-SpringMVC简介-SpringMVC快速入门代码实现(并解决C
- 05-Spring集成web环境-Spring集成web环境代码实现(从w
- 04-Spring集成web环境-自定义ContextLoaderListener2(
- 03-Spring集成web环境-自定义ContextLoaderListener1(
- 01-Spring集成web环境-基本三层架构环境搭建(浏览器访
- 16-Spring集成Junit-代码实现(优化测试需要获取Spring
- 14-Spring注解开发-新注解详解(全注解类代替Spring Co
- 10-Spring注解开发-原始注解入门操作(SpringConfig配