SpringMVC(一)

1 springmvc框架

springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
springmvc是一个基于mvc的web框架。
springmvc框架
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler 可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果

编写springmvc流程(代码和截图请看下一篇—springmvc参考)

1、 配置前端控制器
在web.xml中配置springmvc前端控制器;
2、 配置处理器适配器
在classpath下的springmvc.xml中配置处理器适配器,此适配器能执行实现 Controller接口的Handler。

<!-- 处理器适配器 所有处理器适配器都实现 HandlerAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

3、 开发Handler
需要实现Controller接口才能由SimpleControllerHandlerAdapter这个适配器执行;
重写handleRequest()方法,返回ModelAndView;
4、 编写视图
5、 配置Handler
将Handler在spring中加载;

<!-- 配置Handler -->
<bean id="itemsController1" name="/queryItems_test.action" class="cn.itcast.ssm.controller.ItemsController1" />

6、 配置处理器映射器
在classpath下的springmvc.xml中配置处理器映射器

<!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url) 
所有的映射器都实现 HandlerMapping接口。
-->
<bean
    class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

7、 配置视图解析器
需要配置解析jsp的视图解析器。

<!-- 视图解析器
解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包
 -->
<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" />

到此,这个springmvc 项目就简单完成了。

非注解的处理器适配器和映射器
非注解的处理器映射器:

<!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url) 
所有的映射器都实现 HandlerMapping接口。
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

<!--简单url映射  -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <!-- 对itemsController1进行url映射,url是/queryItems1.action
             itemsController1是配置Handler的id-->
            <prop key="/queryItems1.action">itemsController1</prop>
            <prop key="/queryItems2.action">itemsController1</prop>
            <prop key="/queryItems3.action">itemsController2</prop>
        </props>
    </property>
</bean>

非注解的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handler实现 Controller接口。

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handler实现 HttpRequestHandler接口。
这个需要用request设置数据模型和转发视图,使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据;

注解的处理器映射器和适配器
在spring3.1之前使用
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之前使用
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。
在spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

<!--注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
mvc:annotation-driven默认加载很多的参数绑定方法,
比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
实际开发时使用mvc:annotation-driven
 -->
<!-- <mvc:annotation-driven></mvc:annotation-driven> -->

开发注解Handler
注解的Handler和注解的适配器,映射器一起使用;

//使用Controller标识 它是一个控制器
@Controller
public class ItemsController3 {

    //商品查询列表
    //@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
    //一般建议将url和方法写成一样
    @RequestMapping("/queryItems")
    public ModelAndView queryItems()throws Exception{
    // 省略。。。

在spring容器中加载Handler,可以批量扫描

<context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值