网页左边,向下滑有目录索引,可以根据标题跳转到你想看的内容 |
---|
springMVC就是spring框架的一个子模块,是spring基于MVC设计模式提供的web展示层框架,通常单独拿出来作为一个框架说明,但它只是spring的一个子模块。 |
---|
3.0后全面超越Struts2,成为最优秀MVC框架,通过一套MVC注解,只需配置一个前端控制器就可以实现以前必须实现大量接口才能得到的功能 |
全面支持REST的URL风格,而且此框架有非常不错的扩展性和灵活性 |
一、环境搭建
建立工程,引入jar包 |
---|
配置前端控制器 |
---|
- 配置web.xml
- 配置前端控制器
- 测试
二、@RequestMapping注解
作用:告诉SpringMvc被标注的方法是用来处理哪个请求的,URL中的/代表从当前项目开始 |
---|
如果此注解标注了一个类,就相当于使这个类成了一个文件夹,那么这个类的路径就是类中所有拦截方法的父路径,而不是web目录了。所以若类标注了注解@RequestMapping(/class),某个方法标注了@RequestMapping(/method)那么访问时就要写"class/method"才行,因为相当于多了一层路径 |
- url通配符
- ?:代表任意一个字符
- *:代表任意多个字符或一层路径
- **:代替多层路径
- RequestMapping注解中的属性
- method: 设置处理请求类型:method=RequestMethod.GET
使用RequestMethod类中参数表示请求方式,默认是全部请求 - params: 规定请求参数
- params={“user”}:表示如果请求参数不带user就报错
- params={"!user"}:表示请求参数不允许带user参数,否则就报错
- params={“user=‘航宇零’”}:请求参数必须带user参数且值必须为航宇零
- params={“user”,"!password",…}:表示请求参数必须满足这些规则
- headers: 规定请求头
- consumes: 设置请求内容类型
规定接受的内容请求类型,规定请求的Context-Type - produces: 设置响应内容类型
规定响应的内容请求类型,给请求头上加Context-Type
- method: 设置处理请求类型:method=RequestMethod.GET
三、获取客户端请求信息
代码截图在下面,请根据截图看这些注解怎么用
SpringMvc提供了自动封装,如果客户端传来的参数是一个javaBean(比如from表单传来的用户名,密码等)可以创建一个对象,方法传递对象时只需要test(Book book)参数就会根据类进行自动封装,属性名要相同支持级联封装,value="对象名.属性名"即可 |
---|
- @RequestParam:获取请求参数
- 方法一:String username直接在方法中写参数,参数名字要和客户端传来的一致,客户端传来的值存在变量中,没值就是null
- 方法二:@RequestParam(value=“user”,required=false,defaultValue=“defaultUser”)String username;
- value:指定要获取参数id,获取后存在username变量中
- required:指定不带此参数是否报错,如果为true,没带就报错
- defaultValue:指定如果没带,就给默认值
- 获取客户端user的值存在变量username中,若值不存在,不要报错,赋默认值defaultUser
- @PathVariable(“user”)与@RequestParam(“user”)的区别
- @PathVariable指定动态路径,之后可以使用{user}形式引用路径
- @RequestParam指定参数,保存参数后存储到后面跟着的方法参数变量中
- {user}动态路径: /{user}/path?username
- 两个注解在url中具体位置:/@pathVariable?@RequestParam
- @RequestHeader:获取请求头中某个key的值
- @RequestHeader(value=“User-Agent”,required=false,defaultValue=“defaultUser-Agent”)String userAgent
- 上面代码的意思是:获取请求头User-Agent参数的值,存储到变量userAgent中,若参数没带值,不要报错并赋默认值defaultUser-Agent
- @CookieValue:获取某个Cookie的值
四、REST请求风格
如果给每一个请求单独定义一个名字,就会显得整个网站太过繁杂,
所以出现了REST的一种请求风格,把同一类请求都设置成相同名字,然后根据请求方式不同,来处理不同请求
例如
setuser/1:get请求,表示查看id为1的setuser
setuser/1:delete请求,表示参数id为1的setuser
setuser :put请求,表示更新setuser
setuser :post,表示添加setuser
- get:获取资源
- post:添加资源
- put:修改资源
- delete:删除资源
实现步骤 |
---|
- 配置web.xml文件,因为是过滤器,所以拦截所有请求也没事,就配置的了/*
- 页面中编写form表单
- 编写处理方法
五、解决中文乱码
六、返回数据给客户端
七、请求转发与重定向
八、文件下载
九、文件上传
十、拦截器