springMVC学习笔记
Posted 拐柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC学习笔记相关的知识,希望对你有一定的参考价值。
springMVC学习笔记(二)
springmvc对于rest风格支持
rest是一个url请求的风格,基于这种风格设计请求的url。
原有设计url风格是比如,获取id为1的用户
/user/getUserById.do?id=1,url中定义了操作(get,delete,update等),参数具体锁定到操作的元素。
rest风格,rest中人为互联网中的所有东西都是资源,就会有一个唯一的uri标识它,/user/1 代表id为1的记录。根据请求方式不同,代表不同的操作,RequestMethod.GET代表获取,RequestMethod.POST代表新增,RequestMethod.PUT代表更新,RequestMethod.DELETE 代表删除。rest风格带来了传递参数的方式变化,参数可以在uri中
@PathVariable
该注解可以帮助我们从uri中取出参数。
@RequestMapping(value = "handle/{id}",method = {RequestMethod.GET})
public String handle04(@PathVariable("id")Integer id){
System.out.println(id);
return "success";
}
form表单缺失请求方式
在form表单中生命一个隐藏域,name为="_method" value=“put/delete”,同时需要在web.xml中进行配置过滤器。
<!-- springmvc请求方式转换过滤器,会检查请求参数中是否有_method参数,如果有就按照指定的请求方式转换-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
乱码问题
post请求处理
web.xml
<!-- POST请求springmvc过滤器处理中文乱码-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
get请求
配置tomcat 的server.xml 中connector标签中 URIEncoding=‘utf-8’
ajax json交互
@RequestBody
后端代码
@RequestMapping(value = "handle07",method = {RequestMethod.POST})
public String handle05(@RequestBody User user){
System.out.println(user.getId());
return "success";
}
前端代码
$(function (){
$("#ajaxBtn").bind("click",function (){
$.ajax({
url:"/demo/handle07",
type:"post",
data:'{"id":"1","userName":"李四"}',
contentType:"application/json;charset=utf-8",
success:function (data){
alert(data);
}
})
})
})
注意,使用RequestBody注解,须使用post请求方式,且指定contentType:“application/json;charset=utf-8”。
@ResponseBody
使用该注解之后,不在走视图解析器,而是使用response进行值的返回
springmvc拦截器使用
监听器、过滤器、拦截器、servlet对比
servlet
处理Request请求和response请求
过滤器(Filter)
对Request请求起到过滤的作用,作用在Servlet之前,如果配置为/*可以对所有资源访问进行过滤处理
监听器(Listener)
实现了ServletContextListListener接口的服务器端组件,它随web应用的启动而启动,只初始化一次,然后会一直运行监视,随web应用的停止而销毁
作用1:做一些初始化工作,web应用中spring容器启动 ContextListListener
作用2:监听web中的特定时间,比如httpsession,servletRequest的创建和销毁、修改等,可以在某些动作前后增加处理,实现监控,比如统计在线人数,利用HttpSessionLisener等。
拦截器(interceptor)
是springmvc、struts等表现层框架自己的组件,不会拦截jsp/html/css等静态资源,只会拦截handler方法。在handler业务逻辑执行之前拦截一次,在handler逻辑执行完毕但未跳转页面之前拦截一次,在跳转页面之后拦截一次。
<mvc:interceptors>
<!-- 拦截所有handler请求-->
<!-- <bean class="com.lagou.edu.interceptor.MyInterceptor01"></bean>-->
<mvc:interceptor>
<!-- 配置当前拦截器的url拦截规则,**代表当前目录下及其子目录下的所有url-->
<mvc:mapping path="/**"/>
<!-- exclude-mapping可以在mapping的基础上排除一些url-->
<!-- <mvc:exclude-mapping path="/demo/**"/>-->
<bean class="com.lagou.edu.interceptor.MyInterceptor01"></bean>
</mvc:interceptor>
</mvc:interceptors>
以上是关于springMVC学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题