SpringMVC

1.SpringMVC环境搭建及第一个程序

首先导入需要的jar包

  • spring-aop.jar
  • spring-bean.jar
  • spring-content.jar
  • spring-core.jar
  • spring-web.jar
image.png

springmvc就是servlet

springmvc也是一个spring,所以需要spring环境所需要的jar包

在springsrc下建立一个springmvc.xml的文件

image.png
image.png

正常的servlet会在访问/AA的时候会被拦截,然后去访问它所对应的servlet-class.

图片.png

如果现在想用springmvc而不是普通的servlet,需要进行配置:

图片.png

需要在web.xml中进行配置:

  • 拦截所有请求,交给springmvc进行处理


    图片.png
图片.png

这4中命名都是指servlet

图片.png
  • 前台jsp的页面


    图片.png
  • 首先创建一个类,然后使其成为一个servlet


    图片.png
  • 使用扫描器扫描有注解的类


    图片.png
  • 配置视图解析器


    图片.png

    -通过解析器给请求页面增加前缀和后缀


    图片.png
  • 如果控制台报这个错误,证明jar包不够


    图片.png
  • 请求页面的位置


    图片.png
  • springmvc中,拦截一切请求是/,而不是/*


    图片.png
  • 只拦截user开头的请求


    图片.png

    图片.png

    图片.png

    图片.png

    图片.png
  • 默认的路径应该在WebContent下的WEB-INF中,文件的名字应该为class-name的名字加上-servlet.xml


    图片.png

    图片.png

2.RequestMapping映射及属性

首先会找类前面的RequestMapping,然后再找方法前面的RequestMapping

图片.png

图片.png

图片.png

图片.png

默认使用的请求转发的方式

图片.png
图片.png
  • 其中RequestMapping中有很多属性,使用的是键值对的形式


    图片.png
  • 默认使用的值为value


    图片.png

规定请求的方式必须为post的方式,method是一个枚举类型

图片.png

超链接请求默认为get请求的方式

图片.png
图片.png

通过表单来写一个请求方式为post的请求

图片.png
  • 请求参数必须包含name


    图片.png
  • 如果请求参数中没有name,则会报404错误


    图片.png
  • 通过表单写一个包含name属性的请求,则可以请求成功


    图片.png
  • 不但需要有name属性,而且name的属性值必须为zs,否则不能请求成功,报404错误


    图片.png
  • 如果有age属性,那么age的属性必须不为23,没有age属性也可以


    图片.png
  • 请求参数中不能包含height


    图片.png
  • 如果有了name="height",如下,则不能请求成功,也是报404错误


    图片.png
  • params={"xxx=xxx"}设置的是name=“xxx”的属性


    图片.png

    -对请求头的约定


    图片.png
  • 在mvc中书写,不应该写:应该写为=


    图片.png
  • 请求头中的这条信息


    图片.png

    图片.png

    图片.png

    图片.png

ant风格的请求路径

  • *带表任意字符,中间写啥都可以(0个或多个)


    图片.png

    图片.png
  • **任意目录


    图片.png

    图片.png
  • ?单个字符


    图片.png

    图片.png

传值

  • 通过地址栏传值zs,@PathVariable


    图片.png

    图片.png

可以一键生成springmvc.xml文件

  • 在xml文件中右击,选择Dispatcherservlet


    图片.png

    图片.png

REST风格,软件编程风格

SpringMVC GET : 查 POST :增 DELETE: 删 PUT :改

普通浏览器只支持get和post请求,delete和put是通过过滤器来实现的
过滤器转换delete和put的条件
  • 表单type必须为hidden的类型(隐藏域的类型)
  • 表单的name值必须为_method
  • 表单的value值必须为delete或put
  • 表单的请求方式必须为post的方式
当发现满足以上的要求,则自动进入过滤器中,通过value值来确定实际的请求方式
图片.png
如果value值为delete,就将post请求转换为delete请求,如果value值为put,则将之前的post请求转换为put请求

过滤器需要配置,过滤器的名字为 HiddenHttpMethodFilter

图片.png

图片.png
  • 删方式的表单内容


    图片.png
  • 改方式的表单内容


    图片.png
  • 要求请求方式是put和delete方式


    图片.png
  • 全都请求一个映射名,然后通过method来区分


    图片.png

    图片.png

过滤器中处理delete和put的部分源码,经过过滤器请求之后,request请求就可以处理delete和put 的请求了

图片.png

表单字段的传值

  • 前台jsp中name="uname"


    图片.png
  • 通过@RequestParam("uname") 来接收


    图片.png
  • 如果是多个值,通过,分割来接收
    前端jsp页面


    图片.png

    servlet中@RequestParam中


    图片.png
  • 在@RequestParam中,默认属性为value,如果需要写其他的属性,则通过键值对的形式


    图片.png

    -设置默认的参数值defaultValue


    图片.png

常见属性的解释

图片.png
  • 获取请求头中的信息


    图片.png
图片.png

通过mvc获取cookie的值(JSESSIONID)

  • 通过注解@CookieValue来接收


    图片.png

    图片.png
  • 控制台


    图片.png

使用对象(实体类student)接收请求参数

  • student实体类


    图片.png
  • address实体类


    图片.png
  • 表单内容


    图片.png
  • 通过实体类来直接接收


    图片.png

在mvc中使用原生态的servletAPI

  • 通过在方法中添加参数来获取原生态的servletrequest
图片.png

6处理模型数据及ModelAttribute等注解的使用

处理模型数据

如果跳转的时候需要带数据跳转过去(V视图,M数据),比如需要带request域中的数据过去,则需要使用以下方式:

  • ModerAndView 把数据自动放到了request作用域中


    图片.png
  • 前台jsp页面


    图片.png
  • ModelMap 把数据自动放到了request作用域中


    图片.png
  • Map 把数据自动放到了request作用域中


    图片.png
  • Model 把数据自动放到了request作用域中


    图片.png

将数据存放到Session中,注意:需要先存放到request域中的对象,才可以存放到session域中

通过注解@SessionAttributes("student")在session域中存放数据

图片.png

如果想要存放多个,可以通过,分割

图片.png

通过对象类型来一次性都存放到session域中@SessionAttributes(type={Student.class,Address.class})

图片.png

ModelAttribute 在任何请求前,都会执行此方法

图片.png

将ModelAttribute中查到的student赋值到testModelAttribute中的student参数中

图片.png

图片.png

图片.png

7视图、视图解析器、国际化

在springmvc中,返回值:

  • String
  • View
  • ModelAndView

流程图

图片.png

view接口的中方法

InternalResourceView的实现类JstlView

图片.png

视图的顶级接口为:View

视图解析器的顶级接口:ViewResolver

View实现类简介

图片.png

ViewResolver实现类

图片.png

JstlView可以解析jstl,实现国际化操作

springMVC解析jsp时 会默认使用InternalResourceView, 如果发现Jsp中包含了jstl语言相关的内容,则自动转为JstlView。

国际化: 针对不同地区、不同国家 ,进行不同的显示

具体实现国际化步骤:

  • a.创建资源文件
    基名语言地区.properties
    基名_语言.properties(地区可以省略)
    图片.png

i18n((其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。)

图片.png

在i18n_zh_CN.properties中

图片.png

在i18n_en_US.properties中

图片.png

加载到mvc配置文件中

图片.png

在springmvc.xml中

图片.png
  • b.配置springmvc.xml,加载资源文件


    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="i18n"></property>
    </bean>
    ResourceBundleMessageSource会在springmvc响应程序时 介入(解析国际化资源文件)

使用jstl实现国际化,首先引入支持国际化的标签

图片.png

success.jsp页面

图片.png

需要通过ResourceBundleMessageSource进行解析之后,页面才可以显示国际化显示,ResourceBundleMessageSource是在响应的时候进行的介入。所以需要通过一个页面请求之后,然后进行响应之后的显示。

图片.png
  • c.通过jstl使用国际化
    需要的包 :jstl.jar standar.jar

springmvc在启动时,会自动查找一个id="messageSource"的bean,如果有 ,则自动加载。

图片.png

将id改为messageSource,名字是固定的。不可以为别的。

图片.png

前台jsp页面

图片.png

将浏览器语言设置为:英语美国

图片.png

jsp页面显示:


图片.png

8视图解析器常见功能、处理静态资源、类型转换器

实现springmvc从一个jsp直接跳转到另一个jsp,不经过controller控制器

<mvc:view-controller path=" 请求链接("addservlet")" view-name="响应页面(success.jsp) ">

jsp页面

图片.png

在springmvc.xml中进行配置,这样子写view-name也会被视图解析器解析。注意:如果只是这样配置的话,程序会把controller中的地址全都屏蔽掉,访问controller中的地址都会找不到报404错误

图片.png

如果俩者请求的是同一个地址:

图片.png

如果想要是俩种请求都共存,需要加入注解:

图片.png

springmvc中的注解驱动支持:

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

将默认的请求转发更改为重定向:(如果使用此方法,视图解析器不会自动拼接前缀和后缀)

请求转发:

图片.png

重定向:(这里因为是在springmvc框架中,所以重定向也不用写项目名)

图片.png

处理静态资源,不会因为时间,地点的变化而变化(html,css,js,图片,视频)

在springmvc中,如果直接访问静态资源,会报404错误找不到。原因是:请求图片的请求被dispatcherservlet拦截了,然后去找对应的requestMapping(“”)或者<mvc:view-controller path=" 请求链接("addservlet")" view-name="响应页面(success.jsp) ">,因为这俩这都没有配置处理,所以找不到。

图片.png

如果需要springmvc处理的,则交给dispatcherservlet处理。如果不需要,则使用tomcat默认的servlet处理。 在tomcat中处理请求是通过url-pattern来拦截。如果没有相应的url-pattern拦截,则会直接访问这个资源。

tomcat默认的servlet在\conf\web.xml中

图片.png

tomcat中默认servlet(DefaultServlet)的功能:在tomcat中处理请求是通过url-pattern来拦截。如果没有相应的url-pattern拦截,则会直接访问这个资源。

在springmvc.xml中增加一个配置:这个注解会让springmvc接收到一个请求,并且没有对应的@requesetMapping时,将该请求交给默认的servlet处理(直接访问),此注解也需要注解驱动的支持<mvc:annotation-driven></mvc:annotation-driven>否则只能访问静态资源

<mvc:default-servlet-handler></mvc:default-servlet-handler>
图片.png

实现类型的转换:

<a href=" ">
  • 创建一个class类,实现Converter接口


    图片.png

前台传一个字符串,后台转为一个学生

图片.png

学生实体类Student

图片.png

将转换器加入到springmvc.xml中:

  • 将自定义转换器纳入springIOC容器:


    图片.png
  • 再将myConverter(自定义的转换器)纳入springmvc提供的转换器bean中
    这个bean是:ConversionServiceFactorybean


    图片.png

    图片.png

    图片.png
  • 再将conversionService注册到annotation-driven中


    图片.png

前台jsp页面

图片.png

页面填写的内容:

图片.png

控制台打印

图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容