[SSM网上书店基础与实战]-10Spring MVC

141 阅读5分钟

一、Spring MVC入门

名称中含有mvc字样,即spring框架下mvc开发模型

    M,Model,模型

    V,View,视图

    C,Controller,控制器(处理业务逻辑最核心的部分,也是服务端编码的重点)

spring从3.0开始,全面超越struts,开始和spring合并为一个框架

    特点:

       基于springmvc注解,极大的简化了开发

       po类自动封装,数据类型自动转换

       支持REST风格的URL请求

       支持插件结构,扩展性强

1、hello

创建Project/Module,添加web的框架支持

image.png

添加jar包引用和tomcat服务器

image.png

image.png

配置web.xml

image.png

创建控制器

image.png

创建访问成功页面

image.png

springmvc.xml

image.png

结果

image.png

image.png

注意目录结构

image.png

分析流程

springmvc的DispatcherServlet核心类,接收到了请求【hello】

读取springmvc.xml配置文件【扫描包中的控制器和映射路径“/hello”】

执行匹配的控制其中的方法【public String hello()】

方法的返回值是字符串,会经过视图解析器组合前缀后缀,进行跳转【WEB-INF/views/success.jsp】

2、传递参数测试

请求

image.png

控制器

image.png

测试

image.png

image.png

二、深入学习

1、@RequestMapping

定义URL

映射URL

标记在类上

    相当于该控制器的所有请求,都加上该前缀

标记在方法上

       方法级URL

案例

控制器

image.png

访问

image.png

测试

image.png

定义请求信息

定义请求的参数

    value      url

    method     请求方式

    params     携带参数

    heads      请求头信息

还支持简单表达式(了解)

    支持“非,!”,“等,不等”等运算符

浏览器F12打开调试面板

image.png

案例--指定请求方式

控制器

image.png

请求

image.png

结果

image.png

案例--限定头信息

控制器

image.png

访问

image.png

image.png

image.png

image.png

Ant风格请求格式

Ant风格支持3中匹配符

    ?:匹配文件中任意一个字符

    *:匹配文件中任意字符

    **:匹配多层路径

如:

    /user/*/createUser

       匹配user/aaa/createUser,user/bbb/createUser等

    /user/**/createUser

       匹配user/createUser,user/aaa/bbb/createUser等

    /user/createUser??

       匹配user/createUseraa,user/createUserbb等

案例--ant风格请求

控制器

image.png

访问

image.png

测试

image.png

2、@PathVariable

映射URL绑定的占位符

    这是spring3.0新增功能,通过这个设定可以实现REST风格请求

案例--绑定占位符

控制器

image.png

访问

image.png

测试

image.png

image.png

3、REST风格请求

REST

    Representactional State Transfer,表现层(资源)状态转化

是一种简明扼要的URL请求写法

其实就是把HTTP请求的类型由2个扩展为4个

    GET

       如:/order/1,查询id=1的订单

    POST

       如:/order/1,新增id=1的订单

    PUT

       如:/order/1,修改id=1的订单

    DELETE

       如:/order/1,删除id=1的订单

注意

浏览器的form表单,只支持GET与POST请求,DELETE和PUT请求method属性并不支持,需要使用spring  的过滤器来转换实现支持

案例--REST风格请求

配置web.xml

image.png

控制器

image.png

访问

image.png

测试

image.png

查询

image.png

image.png

添加

image.png

image.png

更新

image.png

原因是jsp默认不支持PUTDELETE形式的请求,需设定jsp页面,在success.jsp页面中添加

image.png

image.png

image.png

删除

image.png

image.png

4、使用po类作为参数

SpringMVC会按照请求,将相应的参数名,对应PO类的属性名,直接填充值,支持级联

po类,同时自动生成get、set和toString方法

image.png

image.png

控制器

image.png

请求

image.png

测试

image.png

image.png

image.png

5、使用ServletAPI作为参数

控制器

image.png

访问

image.png

测试

image.png

6、处理数据模型

SpringMVC提供了以下几种途径进行数据输出(其实就是控制其中的方法返回值)

    ModelAndView

       可以添加Model的数据,以及需要跳转的View数据

    Map以及Model

       方法的输入参数是,Map就是单纯的映射数据,Model单纯的模型数据

    @SessionAttributes

       模型中的某个属性加上该注解,即为将某个数据存放至session作用域

    @ModelAttribute

       方法输入参数加入该注解,参数会直接放置数据模型中

案例--ModelAndView的使用

控制器

image.png

请求

image.png

页面

image.png

测试

image.png

案例--Map作为传入参数

控制器

image.png

访问

image.png

测试

image.png

image.png

案例--使用@SessionAttributes

SpringMVC默认会把数据存放至request作用域,只用该注解,可以将数据暂存至session作用域

控制器

image.png

访问

image.png

测试

image.png

案例--出现问题

控制器

image.png

访问

image.png

结果

image.png

解决问题,使用@ModelAttribute注解,在控制器中添加一个方法

image.png

结果

image.png

@SessionAttributes引发的异常

情况

image.png

不报错

image.png

结果

image.png

解决方案

image.png

7、JstlView

JSTL在JSP开发中使用比较频繁,SpringMVC会自动把InternalResourcesView转为JstlView,若使用jstl中fmt国际化标签,则需要在SpringMVC配置中加入相关配置和资源文件

image.png

image.png

springmvc.xml中的配置

image.png

控制器

image.png

index.jsp

image.png

success.jsp

image.png

问题

其实这种情况,有必要经过控制器吗?

    没必要,但是不经过控制器会报错

    如果出现不想经过控制器的的请求,需要添加配置

image.png

问题又来了

访问之前的控制器,又报错

image.png

需要添加配置

image.png

8、重定向

控制器的跳转方式,默认都是转发,如果需要重定向,采用如下写法

控制器

image.png

访问

image.png

三、处理ajax和json

1、处理静态资源

添加css文件

image.png

访问测试

image.png

无法访问,原因:

    因为所有的请求都被SpringMVC的核心servlet拦截,即使静态资源文件也不行

    解决方案1:

       配置一些特定结尾的请求,如:.action,.do等

    解决方案2:推荐

       SpringMVC可以直接配置

image.png

再次访问测试,一切正常

image.png

注意

如果想要将css,js等静态资源文件也放在WEB-INF下,那就需要添加新的配置

image.png

2、处理ajax

项目结构

image.png

控制器

image.png

访问页面

image.png

ajax.jsp页面

image.png

3、处理json

需要

image.png

控制器

image.png

测试

image.png

四、文件上传

需要jar

image.png

项目结构

image.png

配置

image.png

index.jsp

image.png

控制器

image.png

success.jsp

image.png

配置

image.png

结果

image.png

写在最后: 这里目前就是Spring MVC的基本使用,学习内容基本告一段落。

网盘链接:链接:pan.baidu.com/s/1Thr6dxw4… 提取码:1234