SpringMVC

什么是springmvc

springmvcspring框架的一个模块,springmvcspring无需通过中间整合层进行整合。springmvc是一个基于mvcweb框架。


 springmvc框架


第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找 Handler

         可以根据xml配置、注解进行查找

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

         ModelAndViewspringmvc框架的一个底层对象,包括 Modelview

第八步:前端控制器请求视图解析器去进行视图解析

         根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染

         视图渲染将模型数据(ModelAndView对象中)填充到request

第十一步:前端控制器向用户响应结果

Springmvc的使用

web.xml中配置前端控制器

springmvc.xml中配置处理器适配器、处理器映射器、处理器配置(Controller)、视图解析器。

配置前端控制器

web.xml中配置springmvc前端控制器。

load-on-startup:表示servlet随服务启动;

servlet拦截方式解析:

1、拦截固定后缀的url,比如设置为 *.do、*.action,例如:/user/add.action

此方法最简单,不会导致静态资源(jpg,js,css)被拦截。

 

2、拦截所有,设置为/,例如:/user/add  /user/add.action

此方法可以实现REST风格的url,很多互联网类型的应用使用这种方式。

但是此方法会导致静态文件(jpg,js,css)被拦截后不能正常显示。需要特殊处理。

 

3、 拦截所有,设置为/*,此设置方法错误,因为请求到Action,当action转到jsp时再次被拦截,提示不能根据jsp路径mapping成功。

配置处理器适配器、处理器映射器、处理器配置(Controller)、视图解析器

此处配置的是非注解的处理器适配器和处理器映射器

 <!--配置Handler  -->
    <bean name="/queryItems.action" class="cn.itcast.ssm.controller.ItemsController1"/>
    
    <!--处理器适配器:所有处理器适配器都实现HandlerAdapter接口  -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    
    <!--配置处理器映射器:HandlerMapping  -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    
    <!--配置视图解析器:ViewResolver,解析jsp,默认使用jstl标签,classpath下需要有jstl标签  -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

处理器开发,也就是Controller需要实现Controller接口才能org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行。

配置注解处理器映射器和处理器适配器

注:注解的映射器和注解的适配器必须配对使用

springmvc.xml的配置

	<!--注解映射器 -->
    <!-- <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 />


    <!-- 配置controller扫描 -->
    <context:component-scan base-package="com.dmsd.itoo.card.controller" />

    <!-- 配置视图解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 写法二 -->
    <!-- <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> -->

    <!--资源映射 -->
    <mvc:resources location="/css/" mapping="/css/**" />
    <mvc:resources location="/Script/" mapping="/Script/**" />
    <!-- <mvc:resources location="/images/" mapping="/images/**"/> -->

  配置了视图解析器的前缀和后缀,在Handler中可以不用指定前缀和后缀:


注解Handler的开发:

   1、需要在类上面添加@Controller,说明这个类是一个控制器;

   2、@RequestMapping(“/queryItems”)用来定义访问Url,可以为整个类或者方法定义;

   3、可以在方法的参数上添加@PathVariable("pageIndex")注解,表示方法参数绑定到地址URL的模板。即,获取RequestMapping中的参数,如果RequestMapping中没有参数,则使用PathVariable将会报错。

   4、@ModelAttribute:应用于方法参数,参数可以在页面直接获取,相当于request.setAttribute。

   5、@ResponseBody:放在方法上,表示返回类型将会直接作为HTTP响应字节流输出。出去json格式的数据时,经常使用。和@ResponseBody类似的注解,@RequestBody,指定方法参数应该被绑定到HTTP请求Body上。

   6、@RequestParam:应用于方法参数,如果jsp传递的参数和方法中使用的参数不一致,可以使用此参数。

   7、@SessionAttributes:session管理,Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性,只能声明在类上,不能声明在方法上。

   8、@CookieValue: 获取cookie信息

   9、@RequestHeader: 获取请求的头部信息

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值