springMvc学习笔记一

zcwry 2018-03-01 原文

springMvc学习笔记一

什么是springmvc  springmvc就是spring框架的一个模块 所以springmvc与spring之间无需通过中间整合层进行整合的。

springmvc又是基于mvc的web框架 mvc是一种设计模式

详细记录一下springmvc的核心内容,也就是springmvc是如何工作的。

第一步:用户发送请求, 有前端控制器(dispatcherserverler) 进行接收与发送

 

第二步:前端控制器发送请求 处理器映射器(HandlerMapping) 查找所需要的Handler(也就是常说的controller 控制器)

根据什么来找的呢,根据请求的url 就是把name作为url来进行查询的,这个后面再说,在配置xml时会提及

第三步:处理器映射器查找到Handler 了之后返回前端控制器,向前端控制器返回Handler

第五步:处理适配器(HandlerAdapter)按照特定规则(HandlerAdapter 继承接口要求的规则)去执行可执行的Handler(controller 控制器)

第六步:执行完毕之后给适配器返回modelandview

剩余的就是一步步返回数据了,所以重要的就是上面的六大步,这六大步,也就是去配置springmvc.xml的关键

最后两步就是试图解析器向前端控制器返回modelandview  前端控制器进行试图渲染

根据上面的流程我们可以了解了springmvc的结构了

整理下重要部分:

1.前端控制器(dispatcherservlet 作用接收请求响应结果,相当于转发器,也有称之为分发器的。

2.处理器映射器(HandlerMapping)作用根据请求的url 查找匹配的Handler(controller 控制器)

需要把相应的Handler(controller)注册到springmvc框架中,这个地方也需要在xml中配置。

3.处理器适配器(HandlerAdapter)作用按照特定的规则,HandlerAdapter继承的接口找到匹配的Handler 去执行

4.视图解析器(viewResolve) 作用进行视图解析

看懂了springmvc的核心,下一步就是搭建一个springmvc的环境了

我当前用的开发工具是idea,这个工具集成了好多的插件,比如maven 等。

搭建java环境这里不说了。

创建好项目之后,首先配置web.xml  咱们根据springmvc的原理去配置xml

第一步,它需要前端控制器,去接收与分发。配一个前端控制器

前端控制器是什么,我在上面写前端控制器的时候故意把dispatcheservler 这个单词的后面一部分servelet标注了。前端控制器是什么,前端控制器就是一个servlet

 

<servlet>
<servler-name>springMvc</servler-name>
<servler-class>jar包release里面的dispatcherservlet(前端控制器)复制他的全路径名</servler-chass>
<%--
咱们配的是springmvc的框架,所以下面还需要定义一个springmvc的配置文件路径,创建一个spring_mvc.xml的文件
在
init-param 里面配置 param-name 名称就是contextconfigLocation param-value 的值就是咱们创建的spring_mvc.xml的文件名称
classpath:sping_mvc.xml 这个springmvc配置文件里面配置了处理器映射器,处理器适配器,视图解析器,等等
这个地方需要注意如果不配置contextconfigLocation 那么默认加载的是web-inf /servlet下面名称为servlet.xml(springmvc-servlet.xml)--%>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring_mvc.xml</param-value>
</init>
</servlet>

 

下面配置servlet-mapping 主要是截获请求的,用户发送请求数据,前端控制器得截获才行啊,所以这个地方需要配置个截获请求,同样是一个servler

<servler-mapping>
<servler-name>springmvc</servlet-name>
<%--主要的是下面这个地方-它要截获那些请求,这个地方详细百度一下,都有那些值得配置方式,各有什么意思--%>
<url-pattern>/</url-pattetn>
</servlet-mapping>

下面该去spring_mvc.xml 里面配置映射器,处理器,映射器 等等了, 这个顺序是没有固定的,只要配上就可以了。

创建完spring_mvc.xml 首先需要配置这个文件的一些约束了,直接拷贝就行了

下面咱们先来配置一个非注解的 适配器  很简单,一句话

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

这个就是适配器

框架为什么会自动他是个适配器呢,看这个jar的源码,咱们找到了这个一个方法

boolean supports(object handler)这么个方法

你会发现,所有的处理器适配器都实现了HandlerAdapter接口,框架也就是根据这个接口来判断他是不是一个适配器。,也就是根据这个方法来看这个适配器支持哪一种类型的handler(也就是controller 控制器)

下面咱们配置一个非注解的映射器

也是一句话很简单

<bean class="org.springframework.web.servlet.handler.beanNameUrlHandlerMapping"/>

仔细看这个依赖jar包,能看出一些东西, bean Name Url HandlerMapping
这个映射器的含义是将bean的name 作为url 来进行查找handler 的

所以我们下面配置handler的配置

<bean name="/queryitem" class="当前配置Handler(controller)的全路径名称"/>
这个name就相当于url 也相当于注解requestMapping(/queryitem)

下面配置视图解析器 也是一个bean

<bean class="org.springmvcframework.web.servlet.view.internalResourceViewResolve"/>

这个作用就是解析jsp 视图,默认使用jstl标签,注意,这个视图解析器可以配置上前缀和后缀例如下面的配置。

<bean class="org.springmvcframework.web.servlet.view.InternalResourceViewResolvew">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>

这样写的好处就是前面访问时,不要在加这些共同地方了,例如

http://10.10.07.8:8080/web-inf/pages/方法名 与

http://10.10.07.8:8080/方法名

后台返回view 时 web-inf/pages/list.jsp  与   list

这就是区别。

 

下面继续说一种非注解的适配器与非注解的映射器

上面所说的非注解的适配器都是实现了controller的接口

另一个非注解的适配器

<bean class="org.springmvc.framework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

要求编写的Handler都实现HttpRequestHandler接口
 下面在加一种非注解的简单映射器

<bean class="org.springmvcframework.web.servlet.handler.simpleurlHandLerMapping">
<property name="mapping">
<prop key="/items11">item1</prop>
<prop key="/items22">item2</prop>
</property>
</bean>

<%--下面是配置注册Handler了(controller)---%>
<bean id="item1" name="queryItem(当前控制器的方法名称)" class=“当前控制器的全路径名”>
<bean id="item2" name="queryitem1" class="当前控制器的全路径名"/>

 

上面学习的都是非注解的,配置有些麻烦,繁琐,下面学习一下注解的映射器与适配器

当然配置也很简单,就一句话

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
下面是适配器
<bean class="org.springmvcframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
上面的两种是3.1之后才出现的,现在主要也就是用这个,3.1之前用的了解一下就可以
DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter

springmvc 还提供了一种全新的注解方式在实际项目开发中都用这种,使用这种全新的注解方式,默认加载了很多的参数绑定方法,比如json转换解析器就默认加载了。

<mvc:annotation-driven></mvc:annotation-driven>

这种方式内容暂不表述,后续补充,我也没学到,哈哈

注意啊,注解的适配器和映射器是成对使用的。

对于注册的handler可以单个配置,但是麻烦,实际开发中建议使用组件扫描,进行扫描注册,

下面是写法:

<context:component-scan base-package="扫描某个路径包">
<context:include-filter type="annotation" expression="扫描路径下的哪个文件夹"/>例如(controller 文件夹)
<context:include-filter type="annotation" expression="扫描路径下的那个文件夹"/>例如(service 文件夹)
</context:component-scan>

 

注意: 使用注解适配器及映射器时,在controller 类文件加上@controller 映射注解

方法加上@RequestMapping 映射注解

 

以上就是今天所学习的内容,明天将学习整合springmvc+mybatis 框架

 

posted on 2018-03-01 11:35 蓉宇-轩 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为zcwry原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zcwry/p/springMvc.html

springMvc学习笔记一的更多相关文章

  1. SpringMVC 请求/响应乱码问题解决方案

    请求乱码解决之get乱码问题 GET请求乱码原因分析   GET请求参数是通过请求行中的URL发送给Web服务 […]...

  2. Spring MVC介绍和第一个例子

    1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一 […]...

  3. SpringMVC源码阅读:Json,Xml自动转换

    1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入 […]...

  4. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第十四天(非原创)

    文章大纲 一、淘淘商城总体架构介绍二、淘淘商城重要技术点总结三、项目常见面试题四、项目学习(all)资源下载五 […]...

  5. SpringMVC里静态网页不能加载到.js .css文件的问题

    在写SpringMVC项目时候,写的js css文件打不开,网上查了一下,解决办法: 在web.xml里面: […]...

  6. SSM框架开发web项目系列(七) SpringMVC请求接收

      前言   在上篇Spring MVC入门篇中,我们初步了解了Spring MVC开发的基本搭建过程,本文将 […]...

  7. SpringMVC后台token防重复提交解决方案

    本文介绍如何使用token来防止前端重复提交的问题。 目录 1.思路 2.拦截器源码实现 3.注解源码 4.拦 […]...

  8. springMvc配置xml使ResponseBody返回Json

    @ResponseBody         在返回的数据不是html标签的页面,而是其他某种格式的数据时(如j […]...

随机推荐

  1. 测试 JQuery

    声明该文部分代码和内容节选自菜鸟教程,仅用作个人学习,特此声明链接:https://www.runoob.com/测试 JQuery该部分内容学习如何测试 JavaScript 框架库 - jQuery1、引用 JQuery如需测试...

  2. 基于ASP.Net Core开发一套通用后台框架记录-(数据库设计(权限模块))

    写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过。如果您有发现错误,请告知我 […]...

  3. 28-正定矩阵和最小值

    一、本讲的目标  1)怎么判断一个矩阵是否是正定矩阵  2)为什么我们对正定矩阵如此感兴趣   二、正定矩阵 […]...

  4. SPSS-单因素方差分析(ANOVA) 案例解析(转)

    今天将我最近学习SPSS单因素方差分析(ANOVA)分析,今天希望跟大家交流和分享一下:      继续以上一 […]...

  5. NIO笔记—上

    小弟前端时间由于开发个管理系统导致断更了近20天!!马上就要春招了,学习了一下NIO,将笔记记录下,希望和我一 […]...

  6. Selenium系列(一) – 通俗易懂的8种元素定位方式

    安装Selenium和下载Driver 安装selenium pip3 install  selenium - […]...

  7. 如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126

    如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126 通常情况下使用LoadLi […]...

  8. 【高并发】学好并发编程,关键是要理解这三个核心问题

    写在前面 写【高并发专题】有一段时间了,一些读者朋友留言说,并发编程很难,学习了很多的知识,但是在实际工作中却 […]...

展开目录

目录导航