这几天在看用Spring开发的一个小程序。它的界面层也是用的Spring开发的。
[size=18](一)[/size]
首先Spring建立WEB层时的流程如下:
一般来说,界面层是与用户打交道的层面。用户通过在地址栏输入地址从而发出请求。在Spring的MVC框架中,第一个接受这个请求的的组件是Spring MVC中的前端控制器dispatcherServlet。它的功能是找出一个或多个控制器来处理用户输入的请求。
控制器一般会返回一个视图对象的逻辑名。
dispatcherServlet会需要一个视图解析器来查找渲染对象。
最后diapatcherServlet将渲染结果发送给用户。
[size=18](二)[/size]
这里面需要的配置文件如下:
1.在web.xml中配置dispatcherServlet,dispatcherServlet和一般的servlet一样,<servlet-name> <servlet-mapping>进行配置,<servlet-name>中设置的名字就是以后dispatcherServlet试图载入应用上下文的文件.
eg:<servlet-name>dispatcher</servlet-name>
<servlet-mapping>则是决定这个dispatcherServlet要处理的URL
2.在web.xml中配置如下
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/applicationContext-service.xml,/WEB-INF/classes/applicationContext-dao.xml
</param-value>
</context-param>
将一个配置文件分成三个.
2.映射URL和控制器的bean(写在dispatcher中)
<bean name="/leaveAction.do" class="com.oyy.osworkflowdemo.action.LeaveAction">
<property name="leaveService" ref="leaveService" />
<property name="methodNameResolver">//因为采用了多动作控制器而用到的方法解析的途径.
<ref bean="methodNameResolver" />
</property>
</bean>
3.视图解析器的配置bean(写在dispatcher中)
[size=18](三)[/size]
映射处理器的种类:
1. BeanNameUrlHandlerMapping
最简单 eg:<bean name="/listCourse.htm" class="com.springinaction.training.mvc.ListCoursesController">
.....
2. SimpleUrlHandlerMapping
和BeanNameUrlHandlerMapping差不多
不同在于:
<bean id="[color=indigo]simpleUrlMapping[/color]" class="org.springframework.web.servlet.handler.[color=indigo]SimpleUrlHandlerMapping[/color]">
<property name="mapping"
<props>
<prop key="/listCourse.htm">listCourseController</prop>
<prop key="/register.htm">registerController</prop>
<prop key="/login.htm">loginController</prop>
...
</props>
</property>
</bean>
3. CommandsPathMapHandlerMapping
暂时没看懂.
[size=18](四)处理器的种类[/size]
1.最简单的实现Controller接口或继承AbstractController实现handleRequestInternal()
用这种控制器的前提是你不需要给视图传递参数
2.处理命令的处理器
实现BaseCommandController接口或继承AbstractCommandController实现handle()
这个控制器会自动将参数绑定到命令对象中.
3.处理表单提交的处理器
实现AbstractFormController接口或继承SimpleFormController实现doSubmitAction().
doSubmitAction()这个方法不返回视图的逻辑对象. 如果要返回视图逻辑对象就要覆写OnSubmit()P261.
验证表单完整性
一般在调用doSubmitAction()时保证表单数据的完整性非常重要.可以使用org.springframework.validation.Validator接口提供验证功能.
它包含两个需要实现的方法.
boolean supports(Class clazz)
void validatoe(Object command ,Errors errors)
要用到验证器肯定要把它装配到表单提交控制器的bean的属性当中
<class id="..controller" class="com.......RegisterStudentController">
...
<property name="validator">
<bean class="自己写的控制器bean类"
</property>
</bean>
[size=18](五)视图解析器的种类[/size]
1.InternalResourceViewResolver
2.BeanNameViewResolver
3.ResourceBoundleViewResolver
4.XmlViewResolver
InternalResourceViewResolver:
说白了就是使用前缀后缀来定位视图文件(如JSP文件)的位置.
BeanNameViewResolver
根据控制器返回的逻辑视图的名字在应用上下文中(在这就是dispatcher.xml)找到与之相同名字的bean,这个bean的class属性就是视图解析器.对应的视图文件的bean也在diaptcher.xml中
XmlViewResolver
于上面的那个相似,唯一不同的是找与逻辑视图名字相同的bean时,不是在应用上下文,而是在一个独立的XML文件中找(比如training-views.xml).默认的就是/WEB-INF/views.xml.对应的视图文件在training-views.xml
ResourceBoundleViewResolver从资源包中解析视图
主要应用于国际化方面.
使用多视图解析时,依据就是<property name="order"><value>n</value></property>
哈哈~~~大的梗概终于完成了
[size=12][/size][size=12][/size]
[size=18](一)[/size]
首先Spring建立WEB层时的流程如下:
一般来说,界面层是与用户打交道的层面。用户通过在地址栏输入地址从而发出请求。在Spring的MVC框架中,第一个接受这个请求的的组件是Spring MVC中的前端控制器dispatcherServlet。它的功能是找出一个或多个控制器来处理用户输入的请求。
控制器一般会返回一个视图对象的逻辑名。
dispatcherServlet会需要一个视图解析器来查找渲染对象。
最后diapatcherServlet将渲染结果发送给用户。
[size=18](二)[/size]
这里面需要的配置文件如下:
1.在web.xml中配置dispatcherServlet,dispatcherServlet和一般的servlet一样,<servlet-name> <servlet-mapping>进行配置,<servlet-name>中设置的名字就是以后dispatcherServlet试图载入应用上下文的文件.
eg:<servlet-name>dispatcher</servlet-name>
<servlet-mapping>则是决定这个dispatcherServlet要处理的URL
2.在web.xml中配置如下
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/applicationContext-service.xml,/WEB-INF/classes/applicationContext-dao.xml
</param-value>
</context-param>
将一个配置文件分成三个.
2.映射URL和控制器的bean(写在dispatcher中)
<bean name="/leaveAction.do" class="com.oyy.osworkflowdemo.action.LeaveAction">
<property name="leaveService" ref="leaveService" />
<property name="methodNameResolver">//因为采用了多动作控制器而用到的方法解析的途径.
<ref bean="methodNameResolver" />
</property>
</bean>
3.视图解析器的配置bean(写在dispatcher中)
[size=18](三)[/size]
映射处理器的种类:
1. BeanNameUrlHandlerMapping
最简单 eg:<bean name="/listCourse.htm" class="com.springinaction.training.mvc.ListCoursesController">
.....
2. SimpleUrlHandlerMapping
和BeanNameUrlHandlerMapping差不多
不同在于:
<bean id="[color=indigo]simpleUrlMapping[/color]" class="org.springframework.web.servlet.handler.[color=indigo]SimpleUrlHandlerMapping[/color]">
<property name="mapping"
<props>
<prop key="/listCourse.htm">listCourseController</prop>
<prop key="/register.htm">registerController</prop>
<prop key="/login.htm">loginController</prop>
...
</props>
</property>
</bean>
3. CommandsPathMapHandlerMapping
暂时没看懂.
[size=18](四)处理器的种类[/size]
1.最简单的实现Controller接口或继承AbstractController实现handleRequestInternal()
用这种控制器的前提是你不需要给视图传递参数
2.处理命令的处理器
实现BaseCommandController接口或继承AbstractCommandController实现handle()
这个控制器会自动将参数绑定到命令对象中.
3.处理表单提交的处理器
实现AbstractFormController接口或继承SimpleFormController实现doSubmitAction().
doSubmitAction()这个方法不返回视图的逻辑对象. 如果要返回视图逻辑对象就要覆写OnSubmit()P261.
验证表单完整性
一般在调用doSubmitAction()时保证表单数据的完整性非常重要.可以使用org.springframework.validation.Validator接口提供验证功能.
它包含两个需要实现的方法.
boolean supports(Class clazz)
void validatoe(Object command ,Errors errors)
要用到验证器肯定要把它装配到表单提交控制器的bean的属性当中
<class id="..controller" class="com.......RegisterStudentController">
...
<property name="validator">
<bean class="自己写的控制器bean类"
</property>
</bean>
[size=18](五)视图解析器的种类[/size]
1.InternalResourceViewResolver
2.BeanNameViewResolver
3.ResourceBoundleViewResolver
4.XmlViewResolver
InternalResourceViewResolver:
说白了就是使用前缀后缀来定位视图文件(如JSP文件)的位置.
BeanNameViewResolver
根据控制器返回的逻辑视图的名字在应用上下文中(在这就是dispatcher.xml)找到与之相同名字的bean,这个bean的class属性就是视图解析器.对应的视图文件的bean也在diaptcher.xml中
XmlViewResolver
于上面的那个相似,唯一不同的是找与逻辑视图名字相同的bean时,不是在应用上下文,而是在一个独立的XML文件中找(比如training-views.xml).默认的就是/WEB-INF/views.xml.对应的视图文件在training-views.xml
ResourceBoundleViewResolver从资源包中解析视图
主要应用于国际化方面.
使用多视图解析时,依据就是<property name="order"><value>n</value></property>
哈哈~~~大的梗概终于完成了
[size=12][/size][size=12][/size]