SpringMVC学习(五) 视图和视图解析器
2017-07-25 16:54
375 查看
1.视图解析器工作原理:
(1)请求处理方法执行完成后,最终返回一个ModelAndView对象。对于那些返回String、View或ModelMap等类型的处理方法,SpringMVC也会在内部把他们装配成一个ModelAndView对象,它包含了逻辑名和模型对象的视图。
(2)SpringMVC借助视图解析器,将装配好的ModelAndView对象转化成一个真正的物理视图(一个View对象)
(3)调用View的render方法得到响应结果
2.view-controller标签
由之前的一些介绍我们知道,所有响应的视图都是通过@RequestMapping注解调用目标请求的响应返回最终得到响应视图,如果我们希望能够直接在浏览器地址栏输入一个URL地址访问视图的话,需要在SpringMVC的配置文件中加上一个view-controller标签
其中path表示相对于web根目录下的URL,view-name表示对应jsp页面去除.jsp后缀之后的名字,但是这样以来,虽然可以直接在地址栏输入URL访问想要的目标页面,但是会导致RequestMapping返回的响应视图失效,需要再在配置文件中加入以下代码:
annotation-driven标签的具体作用我们之后再说。
3.自定义视图
有时我们可以使用自定义的一些视图,首先创建一个视图类,要实现View接口并实现相应的方法:
要想让自定义的视图起作用,还需要在SpringMVC的配置文件中配置一个BeanName视图解析器,用于解析自定义视图
其中,order属性值表示视图解析器使用的优先级,order值越小,优先级越高。
注意这样之后还需要将编写的视图类放入IOC容器中。
测试代码:
返回的视图名字为视图类名的第一个字母小写(IOC容器的默认规则)
4.视图的重定向
我们知道,当目标方法返回一个String类型的字符串时,SpringMVC的视图解析器默认的以转发的是形式跳转到目标的物理视图,那么当我们想以重定向的方式到目标物理视图该怎么做呢?只需要在返回值前面加上“redirect:”即可,下面上测试代码:
同样的,想以转发的方式则在前面加上“forward:”即可,不过默认的方式就是转发,因此意义不大。
(1)请求处理方法执行完成后,最终返回一个ModelAndView对象。对于那些返回String、View或ModelMap等类型的处理方法,SpringMVC也会在内部把他们装配成一个ModelAndView对象,它包含了逻辑名和模型对象的视图。
(2)SpringMVC借助视图解析器,将装配好的ModelAndView对象转化成一个真正的物理视图(一个View对象)
(3)调用View的render方法得到响应结果
2.view-controller标签
由之前的一些介绍我们知道,所有响应的视图都是通过@RequestMapping注解调用目标请求的响应返回最终得到响应视图,如果我们希望能够直接在浏览器地址栏输入一个URL地址访问视图的话,需要在SpringMVC的配置文件中加上一个view-controller标签
<mvc:view-controller path="/success" view-name="success"/>
其中path表示相对于web根目录下的URL,view-name表示对应jsp页面去除.jsp后缀之后的名字,但是这样以来,虽然可以直接在地址栏输入URL访问想要的目标页面,但是会导致RequestMapping返回的响应视图失效,需要再在配置文件中加入以下代码:
<mvc:annotation-driven></mvc:annotation-driven>
annotation-driven标签的具体作用我们之后再说。
3.自定义视图
有时我们可以使用自定义的一些视图,首先创建一个视图类,要实现View接口并实现相应的方法:
public class HelloView implements View{ @Override public String getContentType() { // TODO Auto-generated method stub return "text/html"; } @Override public void render(Map<String, ?> arg0, HttpServletRequest arg1, HttpServletResponse arg2) throws Exception { // TODO Auto-generated method stub arg2.getWriter().print("hello view"); } }
要想让自定义的视图起作用,还需要在SpringMVC的配置文件中配置一个BeanName视图解析器,用于解析自定义视图
<!-- 配置BeanNameViewResolver视图解析器,使用视图的名字来解析视图 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100"></property> </bean>
其中,order属性值表示视图解析器使用的优先级,order值越小,优先级越高。
注意这样之后还需要将编写的视图类放入IOC容器中。
测试代码:
<a href="TestRequestMapping/TestView">TestView</a>
@RequestMapping("TestView") public String testView(){ System.out.println("TestView"); return "helloView"; }
返回的视图名字为视图类名的第一个字母小写(IOC容器的默认规则)
4.视图的重定向
我们知道,当目标方法返回一个String类型的字符串时,SpringMVC的视图解析器默认的以转发的是形式跳转到目标的物理视图,那么当我们想以重定向的方式到目标物理视图该怎么做呢?只需要在返回值前面加上“redirect:”即可,下面上测试代码:
<a href="TestRequestMapping/TestRedirect">TestRedirect</a>
@RequestMapping("TestRedirect") public String testRedirect() { System.out.println("testRedirect"); return "redirect:/index.jsp"; }
同样的,想以转发的方式则在前面加上“forward:”即可,不过默认的方式就是转发,因此意义不大。
相关文章推荐
- 学习SpringMVC(十一)之视图和视图解析器
- Javaweb学习之SpringMVC视图解析器的分析
- 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)
- springmvc 视图解析器的学习
- SpringMVC学习笔记 视图解析器
- 学习SpringMVC——说说视图解析器
- 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)
- 学习SpringMVC(十一)之视图和视图解析器
- springmvc之视图和视图解析器
- SpringMVC源码(六)Controller控制器4-View视图解析器
- springMVC视图解析器
- springmvc 视图和视图解析器相关类介绍
- springmvc控制层返回org.springframework.web.portlet.ModelAndView视图解析器无法解析异常
- SpringMVC视图解析器技术2
- springMVC的视图解析器
- springmvc自定义视图解析器
- SpringMVC视图解析器ViewResovlet问题
- SpringMVC视图解析器与数据类型转换
- 【SpringMVC】视图和解析器
- SpringMVC学习总结(六).异常处理解析器