• springMVC 学习(一)


    本文主要介绍springmvc的框架原理,并通过一个入门程序展示环境搭建,配置以及部署调试。

    springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

    组件及其作用

    • 前端控制器(DispatcherServlet):接收请求,响应结果,相当于转发器,中央处理器。减少了其他组件之间的耦合度
    • 处理器映射器(HandlerMapping):根据请求的url查找Handler
    • Handler处理器:按照HandlerAdapter的要求编写
    • 处理器适配器(HandlerAdapter):按照特定规则(HandlerAdapter要求的规则)执行Handler。
    • 视图解析器(ViewResolver):进行视图解析,根据逻辑视图解析成真正的视图(View)
    • 视图(View):View是一个接口实现类试吃不同的View类型(jsp,pdf等等)

    注:其中加粗的为需要程序员开发的,没加粗的为不需要程序员开发的

    文末参考链接中《跟开涛学SpringMVC》里面有张图挺好的,感觉很详细.

    springmvc_核心架构图

    步骤:

    • 1.发起请求到前端控制器(DispatcherServlet)
    • 2.前端控制器请求处理器映射器(HandlerMapping)查找Handler(可根据xml配置、注解进行查找)
    • 3.处理器映射器(HandlerMapping)向前端控制器返回Handler
    • 4.前端控制器调用处理器适配器(HandlerAdapter)执行Handler
    • 5.处理器适配器(HandlerAdapter)去执行Handler
    • 6.Handler执行完,给适配器返回ModelAndView(Springmvc框架的一个底层对象)
    • 7.处理器适配器(HandlerAdapter)向前端控制器返回ModelAndView
    • 8.前端控制器(DispatcherServlet)请求视图解析器(ViewResolver)进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
    • 9.视图解析器(ViewResolver)向前端控制器(DispatcherServlet)返回View
    • 10.前端控制器进行视图渲染,即将模型数据(在ModelAndView对象中)填充到request域
    • 11.前端控制器向用户响应结果

    web.xml中配置dispatcherServlet类

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)
          若不配置,默认加载WEB-INF/servlet名称-servlet(springmvc-servlet.xml)
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
        第一种:*.action,访问以.action结尾,由DispatcherServlet进行解析
        第二种:/,所有访问的地址由DispatcherServlet进行解析,对静态文件的解析需要配置不让DispatcherServlet进行解析,
                使用此种方式和实现RESTful风格的url
        第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,
                不能根据jsp页面找到handler,会报错
        -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

     springmvc.xml 配置文件

    <!-- 配置Handler -->
    <bean name="/queryItems.action" class="com.iot.ssm.controller.ItemsController"/>
    <!-- 处理器映射器
        将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
    -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">

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



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

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 配置jsp路径的前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 配置jsp路径的后缀 -->
            <property name="suffix" value=".jsp"/>
    </bean>
  • 相关阅读:
    Java项目往数据库中插入数据,出现中文乱码
    转-取字符串中值(精辟)
    转-js对数组的操作(精辟)
    get、post(菜鸟教程转)
    (转)style/getComputerStyle/currentStyle
    去除默认样式
    link和import
    编辑中
    CSS的transfrom ransition
    css中 Span 元素的 width 属性无效果原因及多种解决方案(转自http://www.cnblogs.com/hnyei/archive/2012/03/12/2392026.html)
  • 原文地址:https://www.cnblogs.com/peng111/p/5759279.html
Copyright © 2020-2023  润新知