1. RequestMapping注解的使用
1.1 指定给方法或者类
当指定给类时,value的值为请求的相同路径部分(模块的名称)
指定给方法时,value的值为请求的全部路径
1.2 get和post提交方式的区别
get: 1.每次发送的请求量比较小,要发送大请求量时,不合适 2.浏览器地址栏会明文化显示数据 3.浏览器缓存可以存储数据
post: 1.每次请求都是重新提交请求,无缓存, 2.适合提交大量数据和保密的数据时
一般查询多使用get方式,添加修改多使用post方式。 参数少使用get,参数多使用post 查的数据长时间不变可以用get
1.3 method属性
使用RequestMethod类的枚举值 例如:get方式,RequestMethod.GET
2. 接受请求中的参数
对应HttpServletRequest,HttpServletResponse,HttpSession只需在控制器方法的形参列表中,定义就可以了,框架会给参数赋值,再控制器方法中就可以直接使用request、response、session参数
框架使用request对象接收参数 request的getParameter()方法,在中央调度器的内部调用doProperParam方法时,按名称对象传递参数
400:http status,表示客户端异常,主要是发生在用户提交数据过程中
2.1 逐个接收
请求中的参数名和控制器方法中的形参名一样,按照名称对象接受参数
解决中文乱码问题
使用过滤器
请求参数名和方法名不一致问题
在@RequestParam注解中的value值设置为“请求名”
2.2 对象接收
在控制器方法中的形参是对象,请求中参数名和对象的属性名一样(java类需要有无参构造,且有set方法)
3. 控制器方法的返回值
控制器方法的返回值表示本次请求的处理结果:返回值有ModelAndView。String,void,Object。
3.1 ModelAndView 数据和视图
请求结果有数据又有视图,使用此类最方便,数据存放在Request作用域,视图由forword转发。
3.2 String 视图
框架对返回值是String,执行的是forword操作,视图可以表示为完整名称,也可是表示为逻辑名称。 在@RequestMapping的produces属性赋值为“text/plain;charset=utf-8”
3.3 void 没有数据和视图
没有数据和视图,可以使用HttpServletResponse对象输出数据,响应ajax请求
3.4 Object
控制器方法返回对象Object,用来响应ajax请求,这些都是数据,而ajax请求需要的就是数据。在ajax请求,一般需要从服务器端返回json格式的数据,经常要处理java对象到json的转换,而且还需要输出数据来响应ajax请求。框架提供了处理java对象到json转换,还有数据的输出工作
HttpMessageConverter 消息转换器
接口,作用是 :1)实现请求的数据转为java对象, 2)把控制器方法返回的对象转为json,xml,text,二进制等不同格式的数据 需要在springmvc的配置文件,加入注解驱动的标签mvc:annotation-driven,会创建HttpMessageConverter接口的8个实现类对象。
@ResponseBody
@ResponseBody注解的作用,就是把student转换后的json通过HttpServletResponse对象输出给浏览器
控制器方法返回对象转为json的步骤
1)pom.xml加入jackson依赖,springmvc框架默认处理json就是使用jackson 2)在springmvc的配置文件中,加入注解驱动的标签mvc:annotation-dirven 3)在控制器方法的上面加入@ResponseBody注解,表示返回值数据输出到浏览器。
4. 静态资源处理方式
url-pattern设置为‘/’后,导致中央调度器成为默认的servlet,不能处理静态资源,访问静态资源会出现404的错误。需要设置对静态资源的访问
4.1 使用mvc:default-servlet-handler
4.2 使用mvc:resources标签
mapping:访问静态资源的uri地址,可以使用通配符(**) **:表示任意的目录和目录的资源名称 location:静态资源在项目中的位置,不要使用/WEB-INF目录
|