spring mvc 之 servlet.xml

最近在研究spring mvc,于是乎把看到的相关文章贴来,没事看一看,转自[u]http://code.google.com/p/simplejee/source/browse/trunk/simplejee/WebContent/WEB-INF/springmvc-servlet.xml?r=46[/u]


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- struts1的action的方法是返回ActionForward,找到相应的JSP,
而spring是根据controller的方法返回的ModelAndView对象,找到相应的JSP

前者actionForward对象是调用mapping对象,和struts-config.xml里的actionForward的配置对应起来的
而springmvc是根据ModelAndView和viewResolver来决定的,
不同的viewResolver有不同的决定方法。
这里的逻辑是这样,比如你返回的ModelAndView是这么生成的new ModelAndView("hello")
那么这里的viewResolver,就是去找prefix+"hello"+suffix,也就是
/springmvc/hello.jsp

InternalResourceViewResolver
A convenience subclass of UrlBasedViewResolver that supports
InternalResourceView (i.e. Servlets and JSPs), and subclasses such as
JstlView and TilesView. The view class for all views generated by this
resolver can be specified via setViewClass(..). See the Javadocs for
the UrlBasedViewResolver class for details.
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/springmvc/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 这是urlMapping
意思就是说什么请求由哪个controller来处理
-->
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.spring">helloController</prop>
</props>
</property>
</bean>
<!-- 这里定义了一个controller,就是一个实现了Controller接口的普通类 -->
<bean id="helloController" class="com.yuqiaotech.simplejee.spring.springmvc.HelloController">
<!--
<property name="helloManager" ref="helloManager" />
-->
</bean>

<!-- BeanNameUrlHandlerMapping 顾名思义,是根据bean的name来决定某个url应该由哪个Contrlloer的bean来处理的
除此之外,如下所示你还可以添加拦截器,以便在Controller处理请求之前和之后做一些预处理和善后处理。

只要是实现了HandlerMapping的bean,spring都会用来做url影射,但如果两个HandlerMapping都能解析
某个url就出现问题了,所以常用的HandlerMapping还实现了Ordered接口。用来决定其优先顺序。
-->
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="1"/><!-- -->
<property name="interceptors">
<list>
<ref bean="authInterceptor" />
</list>
</property>
</bean>
<!-- 拦截器 -->
<bean id="authInterceptor" class="com.yuqiaotech.simplejee.spring.springmvc.AuthInterceptor">
<property name="redirectTo" value="/unAuth.html"/>
</bean>
<!-- 以下为SimpleFormController的例子

注意的是当你访问/login.spring的时候,onSubmit方法没有被执行,
而是在你点击了提交按钮后onSubmit方法才被执行的,另外是如果你把login.jsp里的form中的method去掉的话,
即便点击提交按钮onSubmit方法也不会被调用。
-->
<bean name="/login.spring"
class="com.yuqiaotech.simplejee.spring.springmvc.LoginController" >
<property name="commandClass">
<value>com.yuqiaotech.simplejee.hibernate.model.User</value>
</property>
<property name="formView">
<value>login</value>
</property>
<property name="successView">
<value>redirect:/index.html</value><!-- 注意这里的redirect方式 -->
</property>
<property name="jdbcTemplate" ref="jdbcTemplate"/><!-- 注入了一个jdbcTemplate对象 -->
</bean>

<!-- -->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>method</value>
</property>
<property name="defaultMethodName">
<value>list</value>
</property>
</bean>

<bean name="/userAdmin.spring"
class="com.yuqiaotech.simplejee.spring.springmvc.UserAdminController">
<property name="methodNameResolver" ref="methodNameResolver"/>
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="dataSource" ref="dataSource"/>
</bean>

<!-- 最开始的例子我是如下来写的,但对于User里的birthday属性,没办法处理
因为除了重写initBinder方法似乎无法为springmvc指定定制的CustomEditor,只能写一个
Controller继承MultiActionController,然后重写initBinder了。
当然也可以写个MultiActionController的子类来替换下面这个配置里的MultiActionController,
并保持delegate方式。

spring有个CustomEditorConfigurer可以添加自定义的CustomEditor,但只在ApplicationContext
范围内有效,就是说在<property name="birthday" value="2009-01-01"/>
这种场合才能使用。

还有个办法就是在User类的包里添加一个UserPropertyEditor extends PropertyEditorSupport。
但像日期转换这种通用操作而给User添加一个PropertyEditor类,似乎不太好。
-->
<!-- <bean name="/userAdmin.spring"-->
<!-- class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">-->
<!-- <property name="methodNameResolver" ref="methodNameResolver"/>-->
<!-- <property name="delegate">-->
<!-- <bean class="com.yuqiaotech.simplejee.spring.springmvc.UserAdminController">-->
<!-- <property name="jdbcTemplate" ref="jdbcTemplate"/>-->
<!-- <property name="dataSource" ref="dataSource"/>-->
<!-- </bean>-->
<!-- </property>-->
<!-- </bean>-->

<!-- 这种配置方法把methodNameResolver直接定义在里面了,这种方式有点类似匿名类的用法
这是spring里的标准用法,和MultiActionController没有特定关系。
-->
<!--<bean id="paramMultiController"-->
<!-- class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">-->
<!-- <property name="methodNameResolver">-->
<!-- <bean-->
<!-- class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">-->
<!-- <property name="paramName" value="method" />-->
<!-- </bean>-->
<!-- </property>-->
<!-- <property name="delegate">-->
<!-- <bean class="com.yuqiaotech.simplejee.spring.springmvc.StudentController" />-->
<!-- </property>-->
<!--</bean>-->


<bean name="/chart.spring" class="com.yuqiaotech.simplejee.spring.springmvc.ChartController">
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>

</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值