springmvc是一个基于java实现了mvc设计模式的轻量级web框架,经过把model,view,controller分离,将web层进行解耦,把复杂的web应用分红几部分,简化开发。前端
1.用户发送请求被前端DispatcherServlet捕获, 2.DispatcherServlet捕获到请求后,调用HandlerMapping处理映射器,请求获取Handle 3.处理器映射器跟据请求url找到具体的处理器,生成处理器对象及处理器拦截器并返回给DispatcherServlet 4.DispatcherServlet调用HandlerAdapter处理器适配器 5.HandlerAdapter通过适配调用handler 6.Handler执行完成返回ModelAndView 7.HandlerApdater将Handler执行结果ModelAndView返回给DispatcherServlet 8.DispatcherServlet讲讲ModelAndView传给ViewResolver视图解析器进行解析 9.ViewResolver解析后返回具体View 10.DispatcherServlet对View进行视图渲染(即将模型数据充至视图中)而后DispatcherServlet响应用户java
与spring框架继承,支持各类请求资源的映射策略,支持各类视图技术程序员
前端控制器DispatcherServlet: 做用:接受请求,响应结果,至关于转发器 处理器映射器HandlerMapping 做用:跟据请求的·url来查找Handler 处理器适配器HandlerAdapter 处理器Handler(须要程序员开发) 视图解析器 ViewResolver(不须要程序员开发) 做用:进行视图的解析,根据视图逻辑名解析成真正的视图视图View(须要程序员开发jsp)web
1.转发:在返回值前面加“forward” 2.重定向:在返回值前面加:“redirect”spring
经过jackson框架把java里面的对象直接转化为js能够识别的json对象,具体步骤: 加入jar包:jackson.jar 在配置文件中配置json的映射 在接受Ajax方法里面直接返回list等,但在方法前面加@ResponseBody注解json
1.解决post请求乱码方法 在web.xml配置一个过滤器,设置成utf-8设计模式
<filter> <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.get请求解决方法 修改tomcat配置文件添加编码与工程编码同样tomcat
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一种是对参数从新编码: String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")安全
ISO8859-1是tomcat默认编码,须要将tomcat编码后的内容按utf-8编码。restful
能够将异常抛给Spring框架,有Spring处理,咱们只须要配置简单的异常处理器,在异常处理器中添加视图页面便可。
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的全部响应请求的方法都是以该地址做为父路径。
@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
是单例模式,因此在多线程访问的时候存在线程安全的问题。
能够在@RequestMapping注解里面加上method=RequestMethod.GET
直接在方法形参声明request,SpringMVC就自动就把request对象传入
在形参里面声明这个参数,名字和传过来的参数必须同样
直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。
返回值能够有不少类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一块儿的,但通常用String比较好
用modelmap对象,能够在这个对象里面调用put方法,把对象加到里面,前台就能够经过el表达式拿到。
能够在类加注解@SessionAttributes,里面包含的字符串要放入session里面的key
1.导入jackson2包
2,开启注解驱动mvc:annotation-driven/
ModelAndView
有两种写法,一种是实现HandlerInterceptor接口,另一种是继承适配器类,,接着在接口方法当中,实现处理逻辑;而后在SpringMvc的配置文件中配置拦截器便可:
<!-- 拦截器的配置 --> <mvc:interceptors> <mvc:interceptor> <!-- ** 表示当前目录及其子目录路径 --> <mvc:mapping path="/**"/> <bean class="com.dpb.interceptor.FirstIntercepter"></bean> </mvc:interceptor> </mvc:interceptors>
RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构 在RESTful接口中,全部的方法都是返回JSON,没有返回页面的(ModelAndView),所以,全部的方法上都须要添加@ResponseBody注解。一个替代的简化方案,是使用 @RestController 代替@Controller。@RestController其实是一个组合注解,是@Controller和@ResponseBody的组合