SpringMVC视图解析器(1)
来源:互联网 发布:淘宝客佣金代扣款给谁 编辑:程序博客网 时间:2024/06/06 00:27
ModelAndView对象中的view对象,可以使用字符串来让Spring框架进行解析获得适合的视图。而解析View的就是ViewResolver技术。
ViewResolver的定义如下:
public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception; }
在[spring-dispatcher-name]-servlet.xml中,可以定义viewResolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
来让DispacherServlet进行加载默认的viewResolver,如果没有设置viewResolver,spring使用InternalResourceViewResolver进行解析。
Spring实现ViewResolver的非抽象类且我们经常使用的viewResolver有以下四种:
InternalResourceViewResolver将逻辑视图名字解析为一个路径BeanNameViewResolver将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的beanResourceBundleResolver和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件XmlViewResolver和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件
使用多视图解析器:
我们不想只使用一种视图解析器的话,可以在[spring-dispatcher-name]-servlet.xml定义多个viewResolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <bean id=”beanNameViewResolver” class=”...BeanNameViewResolver”> <property name="order" value="1"></property> </bean> <bean id=”beanNameViewResolver” class=”...XmlViewResolver”> <property name="order" value="0"></property> </bean>
DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。注意order中的值越小,优先级越高。而id为viewResolver
的viewResolver的优先级是最低的。
一,框架默认情况下是通过转发进行跳转的,如果我们想通过重定向怎么办呢?只需要在控制器类中,将返回的结果对象中传递View视图参数,RedirectView对象就是重定向的视图。
View view = new RedirectView("http://www.ljh.com/index.jsp");
returnnew ModelAndView(view);
或者可以将路径写到配置文件中,或者属性配置文件中,都是可以的。这样我们的控制器类的返回对象ModelAndView的构造方法只需要设置一个字符串参数即可。
returnnew ModelAndView("index");
配置文件中使用重定向视图解析器进行页面跳转。
- <bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
- <!-- bean的id属性值要与控制器的返回对象参数名称一致-->
- <bean id="index" class="org.springframework.web.servlet.view.RedirectView">
- <property name="url" value="http://www.ljh.com/index.jsp"></property>
- </bean>
这样,我们一个配置文件中就可能出现多个视图解析器,怎么判断使用那个呢?我们可以通过设置order来进行选择优先级的设置,<property name="order"value="2"></property> ,需要注意的是,InternalResourceViewResolver优先级应该最低,order属性值要比其他的视图解析器的值要大。能够保证所有的映射不被遗忘。而且能够达到我们想要的效果。这是对转发和重定向的学习,其实就是一些新设置,原理和其它都是相同的,我们可以通过查看资料获取更多,例如api,网上资料等。
- SpringMVC视图解析器(1)
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- springMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC 视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- js里面的属性和方法类型
- SSL基础
- 黑马程序员--数组常用排序方法
- java门禁系统面向对象程序设计
- Java并发编程-03-守护线程的创建和运行
- SpringMVC视图解析器(1)
- MySQL:ERROR 2002 (HY000)
- Centeros 系统下error while loading shared libraries:libmysqlclient.so.18错误
- 【Swift】text修改内容
- 几种天线性能比较
- Intent.action
- 黑马day02 玩转tomcat
- ExtJs4.2的合并单元格
- 将博客搬至CSDN