使⽤springmvc配置视图解析器和重定向⽅式
⽬录
springmvc配置视图解析器和重定向
为什么需要配置视图解析器
配置步骤
解决配置视图解析器带来的问题
重定向
配置多个视图解析器
springmvc
controller
springmvc配置视图解析器和重定向
为什么需要配置视图解析器
看图
配置步骤
第⼀步:需要在l配置
<!-- 配置SpringMVC的视图解析器: 配置前缀和后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置视图跳转的前缀 -->
<property name="prefix" value="/WEB-INF/view/"/>
<!-- 配置视图跳转的后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
第⼆步:配置视图解析器后的controller代码 Controller⽅法返回字符串表⽰逻辑视图名,通过视图解析器解析为物理视图地址。此时默认的物理视图地址为:视图前缀+返回值+视图后缀
/*
* ⽅法返回ModelAndView ⽅式
* ModelAndView
*  Model : 模型,数据
*  View :视图
* 将需要共享的数据也跳转的视图封装到ModelAndView对象中,⽅法直接返回即可
*
*  默认只能使⽤请求转发
*/
@RequestMapping("/method2")
public ModelAndView method2() {
ModelAndView mv = new ModelAndView();
//共享数据
mv.addObject("username", "莉莉");
//设置视图地址
//配置视图解析器前后缀之前
//mv.setViewName("/WEB-INF/view/hello.jsp");
//配置视图解析器前后缀之后
mv.setViewName("hello");
return mv;
}
/*
* ⽅法返回String 字符串⽅式
*
* ⽅法返回的字符就是要跳转的地址
*
* 在⽅法中注⼊⼀个Model 对象,在Model中共享数据
*
* 默认使⽤请求转发
*/
@RequestMapping("/method3")
public String method3(Model m) {
System.out.Class().getName());
//共享数据
m.addAttribute("username", "吉姆");
/
/配置视图解析器前后缀之前
//return "/WEB-INF/view/response.jsp";
//配置视图解析器前后缀之后
return "response";
}
解决配置视图解析器带来的问题
如果直接使⽤视图解析器的配置开发,那么必须保证视图解析器前缀⽬录下⾯有对应的页⾯⽂件才能跳转,否则报错
默认页⾯跳转也只能使⽤请求转发跳转,不能使⽤重定向
需要解决问题: 除了使⽤视图解析器对应规则的开发,⽤户还得⾃定义跳转⽅式,和⾃定义跳转页⾯⽅案: 使⽤视图解析器的请求转发和重定向配置,可以打破默认的规则
public static final String REDIRECT_URL_PREFIX = "redirect:"; public static final String
FORWARD_URL_PREFIX = "forward:";
/*
*
* 问题1:上述两种⽅法默认只能进⾏请求转发跳转,如何进⾏重定向跳转?
* 问题2:跳转的页⾯永远只能按照视图解析的前后缀路径放,如何页⾯放在其他⽬录下⾯也能跳转
*
* 解决⽅案:使⽤视图解析器中⾃定义的页⾯跳转功能(使⽤这种,只适⽤返回String字符串的⽅式)
*  在返回的字符串前⾯加上前缀
*  重定向
*  redired:跳转的页⾯
*  请求转发
*  forward:要跳转的页⾯
*
*
*/
//⾃定义请求转发页⾯(打破默认的视图解析器前后缀规则跳转的页⾯)
@RequestMapping("/method4")
public String method4(Model m) {
m.addAttribute("username", "韩梅梅");
return "forward:/WEB-INF/user_list.jsp";
}
重定向
/
/⾃定义重定向
@RequestMapping("/method5")
public String method5() {
return "redirect:www.jd";
}
配置多个视图解析器
springmvc
<!-- jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="viewNames" value="*"/>
<!-- 模板优先级别 -->
<property name="order" value="1"></property>
</bean>
<!-- html -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/html/" />
<property name="suffix" value=".html" />
<property name="viewNames" value="html*"/>
<!-- 模板优先级别 -->
<property name="order" value="0"></property>
</bean>
controller
@Controller
@Scope("prototype")
@RequestMapping("/viewResolver")
public class ViewResolverController {
@RequestMapping("/t1")
public String t1() {
return "index";// webinfo/jsp/index
}
@RequestMapping("/t2")
public String t2() {
return "htmlindex";// webinfo/html/index
}
mvc的controller
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。