SpringMVC详尽知识点思维导图
2021-07-27 18:15:27 0 举报
AI智能生成
登录查看完整内容
非常详细的介绍springmvc知识点
作者其他创作
大纲/内容
接收客户端请求并分发
web.xml中配置核心Servlet
DispatherServlet
根据请求url查找对应的处理【类】(控制层)
SimpleUrlHandlerMapping【手动】通过K/V的方式将url和bean id一一对应,使用时需要显式声明
RequestMappingHandlerMapping 主要是针对注解配置@RequestMapping的
常用接口
HandlerMapping
在查找到控制层所在类后辨识对应的处理【方法】并且调用
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
RequestMappingHandlerAdapter
HandlerAdapter
1.HttpServletRequest
2.HttpServletResponse
3.HttpSession
4.Writer
5.Reader
6.OutputStream
7.InputStream
8.java.security.Principal
Servlet原生API 可直接使用
文件类型 使用MultiPartFile类型接收
页面参数传递
方法入参绑定
Model
View
ModelAndView
value 指定访问url
get
post
put
delete
...
RequestMethod.
method 指定访问方式
包含使用"键=值"的形式
不包含使用"!值"
params 指定请求数据必须(不)包含的内容
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
application/json
text/html
consumes 指定接收请求数据类型
指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
produces指定返回数据类型
属性
@RequestMapping 请求映射
@RequestParam 请求参数
@ModelAttribute
@SessionAttributes 将参数放入session中
@PathVariable RESTful风格url
@responseBody Ajax返回json数据
@CookieValue 获取cookie内容
实例1:域对象的绑定
实例2:日期等复杂类型绑定
@InitBinder 结合WebDataBinder对象对复杂类型数据进行转换
常用注解
Handler/Controller核心
InternalResourceViewResolver 【最常用】默认View类型为InternalResourceView
FreeMarkerViewResolver 默认View类型为InternalResourceView
VolocityViewResolver默认View类型为VolocityView
XmlViewResolver 通过xml文件指定ViewName和View的对应关系
ResourceBundleViewResolver 通过classpath根目录下的.properties文件指定
AbstractCachingViewResolver 抽象类
BeanNameViewResolver 根据beanName解析ViewName
ViewResolver
处理流程
xml配置文件
xml中配置多方法解析器<bean id="multiActionResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> \t<property name="paramName" value="action"></property></bean>
前台调用时使用****/userLogin?action=方法名
多方法Servlet【配置方式】
引入jackson的jar包用于将数据转为json格式输出
方法返回值可以是任意类型
在返回值类型前加@ResponseBody 标注 或者在方法上面加@ResponseBody 标注
ajax
getOriginalFilename() 获取上传文件名
transferTo(file) 将文件保存到指定文件中
文件上传
方案一: 使用servlet容器方法response的write直接写到客户端
方案二: 使用SpringMVC的方法解耦
文件下载
文件上传下载
HandleInterceptor 接口
55pdi08kqc5j8qsls58bq8khel.png
拦截器调用顺序.png
反射
函数回调
原理
servlet容器
不依赖Servlet
容器依赖
servlet前后
+ 方法前后、异常前后..
使用位置
request和response
+ 所在框架的各种资源皆可注入
可用资源
字符编码统一、非法字符过滤请求数据压缩
用户登录验证、日志记录
用途
拦截器和过滤器的区别
拦截器
常用功能
web.xml配置如下:<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> <url-pattern>*.css</url-pattern> </servlet-mapping>
<mvc:default-servlet-handler/>
指定默认放行url
<mvc:resources location="/js/" mapping="/js/**"/>
指定资源文件路径
<mvc:interceptors> \t\t<mvc:interceptor> \t\t\t<mvc:mapping path="/**"/> \t\t\t<mvc:exclude-mapping path="/**/user*"/> \t\t\t<bean class="com.zl.interceptor.LoginInterceptor"></bean> \t\t</mvc:interceptor> </mvc:interceptors>
指定拦截器放行
静态资源的放行
配置静态资源放行后无法访问controller???
使用@InitBinder和WebDataBinder解决
【对象属性传递】需要在对象类中给属性加上注解\t@DateTimeFormat(pattern="yyyy-MM-dd")
【使用类型转换器】
日期格式参数传递
前台传来无法直接接受的数据类型??
前台传来数据空指针?
在使用视图解析器定义前后缀后,会在解析视图时加上;但是当显式使用redirect: 和forward: 时,不会自动加上前后缀
前后缀问题
web.xml中加上过滤器
字符编码的统一处理
使用get拼接的方式 url...?key=value&key=value
数据从一个controller传递到另一个controller
问题总结
SpringMVC
收藏
0 条评论
回复 删除
下一页