使用springmvc配置视图解析器和重定向方式

springmvc配置视图解析器和重定向

为什么需要配置视图解析器

看图

配置步骤

第一步:需要在springmvc.xml配置

<!-- 配置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.println(m.getClass().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:http://www.jd.com";

}

配置多个视图解析器

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

}

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

以上是 使用springmvc配置视图解析器和重定向方式 的全部内容, 来源链接: www.h5w3.com/249482.html

回到顶部