SpringMVC基于注解的使用
首先导入spring-mvc的依赖文件

然后配置上篇文章的web.xml文件
在配置上篇文章的spring-mvc.xml文件
创建一个ParamsContrller类写个方法方法里面的参数名可以用到客户端请求,且可以为参数写任意类型


如果想改参数名可以用@RequestParam为参数名修改名字


其完别名和如果你没在username的值会报错,如果你真不想用还不想报错的话就设置required=false就不会报错了

注意一点传入的参数类型必须是包装类入int得换成Integer因为如果当没传入参数时会传入一个null,普通数据类型接收不了null,也可以设置默认值,当设置默认值的时候自动隐式就会设置required=false,设置默认值用defaultValue

表单的名字要和参数的名字保持一致,input里的name值要和上图的value值相同,如果没用@RequestParam就和name的值相同,${pageContext.request.contextPath}(spel表达式)代表以绝对路径的方式动态获取项目名(简单数据类型演示)

但是如果在文本中写入中文的话会出现乱码问题
下面是处理get请求的办法


下面是处理post请求的办法

这是没用springmvc处理post请求的办法但是这样太麻烦了需要再每个请求上加入处理方法

用springmvc配置过滤器先在web.xml里面配置CharacterEncodingFilter,如下面解释
servlet-name里的springmvc是要拦截哪些请求,springmvc是前端控制器的名字,因为前端控制器拦截的是除了.jsp以外的所有文件,所以过滤器拦截的也是除了.jsp以外的所有文件

复杂数据类型演示,name的值就是类里面的属性

id,姓名,外号,里面的name和类里面的属性名写一样的就行,checked意思是在客户端上勾选框直接就勾选上了,爱好是list类型里面的参数是引用类型string,name中的写法就按属性名加[],亲属是map类型用属性名加上自定义的键值名,角色是复杂数据类型直接用属性名加上该复杂数据类型中的出参数就行,朋友是list类里面是复杂数据类型所以用属性名加上[]点上想要的属性名就行,value里面写的是要传到服务器上的内容,而后面写的中文名是在客户端能看到的




如果你想要在参数中传入两个复杂数据类型时不能这么写因为数据发生重复或者覆盖的情况

所以我们应该重新封装一个类在这个类里设置这两个类为属性,然后表单里的书写格式为下面第三张图所示




获取头信息

获取cookie信息

api和mvc结合使用,getParameter获取服务器name属性的值,把name属性传入到reuqest域里面

RequestMapping的用法


RequestMapping中method的用法,和简略写法


params的用法在RequestMapping









header在RequestMapping的用法


RequestMapping的consumes的写法


RequestMapping的produces的写法


RequestMapping的通配符使用方法

通配符
?通配符


*通配符


**通配符


@PathVariable注解的用法,此用法就是把在地址栏上设置参数的方法从?改为/,如下图所示



@PathVariable还可以设置多个参数


还可以给类设置,就不用加@PathVariable只要和类属性名字一样就行


rest的写法
查询的方法

basepath就是给request.getContextPath()设置了个名字



新增的方法



由于html不支持put delete请求但是http协议支持,ajax也支持
下面是修改方法由于html不支持put方法所有需要在代码中加入下下面图片第二行,还需要加入过滤器,如果程序中有处理中文乱码的过滤器一定要把所有其他过滤器放在处理中文乱码的过滤器的下面



如果你使用tomcat以上的版本会在服务器报错第一种方法在方法中改为重定向


第二种方案在jsp中加入isErrorPage=true

删除方法和修改方法一样


@RestController用法return返回的内容就是json数据了,写json的时候我会仔细写

当我们向要访问静态资源文件时改怎么办呢,如果我们想访问图片的话
首先在web.xml中DispatcherServlet,中url-pattern会拦截除.jsp文件所有的文件包括图片但是我们又不想改该怎么办呢

我们先导入要显示的图片


然后在spring-mvc.xml文件中写入<mvc:annotation-driven/>
在写入要映射的路径<mvc:resources mapping="/images/**" location="/images/"/>
mapping="/images/**就是下图地址路径下images

location="/images/"指的是本地文件夹下的images


在index配置要访问的路径

注意images一定要在编译文件夹下也有
