Spring 建立Web层

本文详细介绍了Spring MVC框架的工作流程,包括请求处理过程、关键配置文件的设置及多种控制器与视图解析器的应用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天在看用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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值