Java Web技术
2021-12-22 22:04:40 1 举报
AI智能生成
SpringMVC相关知识点总结
作者其他创作
大纲/内容
Spring MVC
常用角色
DispatcherServlet, 前端控制器
HandlerMapping, 请求到处理器映射
HandlerAdapter, 处理器适配器
ViewResolver, 视图解析器
Controller 处理器或页面控制器
Validator,验证器
常用注解
参数绑定有关
@PathVariable
作用
解析rest占位符参数,并将数据赋值给方法形参
属性
value
指定与url中的参数名绑定
name
同value
required
是否是必选字段,默认为true
@RequestParam
@RequestBody
作用
请求有关
@RequestMapping
作用
建立请求URL和处理方法之间的对应关系,利用AntMatcher原则进行匹配
可以作用在方法和类上
作用在类上:第一级的访问目录
作用在方法上:第二级的访问目录
属性
path
指定请求路径上的url
value
value属性和path属性是一样的,AliasFor
method
指定方法的请求方式
RequestMethod
GET
HEAD
POST
PUT
PATCH
DELETE
OPTIONS
TRACE
不满足时报错【405】
405:Request method not supported
params
指定限制请求参数的条件
四种表达式限制
要求请求映射所匹配的请求必须携带param请求参数
param
要求请求映射所匹配的请求必须不能携带params请求参数
!param
要求请求映射所匹配的请求必须携带param请求参数且param=value
param=value
要求请求映射所匹配的请求必须携带param请求参数但是param!=value
param!=value
不满足时报错【400】
400:Parameter conditions not met for actual request parameters
headers
发送的请求中必须包含的请求头
四种表达式限制
要求请求映射所匹配的请求必须携带heade请求头信息
header
要求请求映射所匹配的请求必须不能携带heade请求头信息
!header
要求请求映射所匹配的请求必须携带heade请求头信息且header=value
header=value
要求请求映射所匹配的请求必须携带heade请求头信息但是header!=value
header!=value
不满足时报错【404】
404:failed to load resource data
consumes
指定处理请求的提交内容类型
produces
指定返回的内容类型
@ResponseStatus
用应返回的状态代码和原因消息标记方法或异常类。 调用处理程序方法时或抛出指定的异常时,状态代码将应用于 HTTP 响应。 它会覆盖通过其他方式设置的状态信息,例如`ResponseEntity`或`redirect:`。
@ResponseBody
将函数返回值装入responsebody中返回到前端,也就是将return返回值作为请求返回值,return的数据不会解析成返回跳转路径
bean相关
@Controller
@RestController
获取请求参数
通过ServletAPI获取
HttpServletRequest作为控制器方法的形参,此封装了当前请求的请求报文的对象;
HttpServletResponse作为控制器方法的形参,此封装了当前请求的请求报文的响应体;
控制器方法同名的形参获取
设置和请求参数同步的形参,当匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参
若在请求参数中有个多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数
字符串数组类型的形参,数组中包含了每一个数据
字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果
子主题
异常处理
全局异常处理
异常种类
NoHandlerFoundException
当DispatcherServlet中的throwExceptionIfNoHandlerFound配置为true时,当请求404时会抛出NoHandlerFoundException异常
加载spring的配置文件
加载的三种方式
加载默认配置文件,但是路径必须在WEB-INF下,命名规范是springmvc-servlet.xml
利用ContextLoaderListener
ContextLoaderListener的作用就是启动Web容器时,读取在contextConfigLocation中定义的xml文件,自动装配ApplicationContext的配置信息,并产生WebApplicationContext对象,然后将这个对象放置在ServletContext的属性里,这样我们只要得到Servlet就可以得到WebApplicationContext对象,并利用这个对象访问spring容器管理的bean。简单来说,就是上面这段配置为项目提供了spring支持,初始化了Ioc容器。
如果不存在利用contextConfigLocation参数则默认加载“applicationContext.xml”
指定DispatcherServlet的初始化参数contextConfigLocation
重复加载问题
利用ContextLoaderListener加载优先于DispatcherServlet,如果已指定Listener,则可以在DispatcherServlet中加载一个空的xml配置文件
国际化
ResourceBundle
获取Locale
资源文件
命名规则
资源名+_语言_国别.properties
messag_en_US.properties
message_zh_CN.properties
子主题
Spring Security
FilterChainProxy
HTTP协议
HTTP协议解析
常见的HTTP请求头
常见的HTTP响应头
常见的HTTP状态码
常见的HTTP请求类型
浏览器缓存机制
HTTP Head字段的可选值
Pragma:no-cache/Cache-Control:no-cache
Cache-Control字段被各个浏览器支持得较好,且优先级较高,会覆盖Expires等字段
Expires
后面跟一个日期和时间,超过这个时间值后,缓存内容失效
Last-Modified/Etag
Tomcat
web.xml配置
文件路径
tomcat/conf/web.xml
应用于所有的web应用程序
WEB-INF/web.xml
应用于应用程序本身
配置元素(按顺序)
web-app
display-name
description
filter
作用
配置servlet的过滤器,与一个实现javaxs.servlet.Filter接口的类关联
属性
filter-name:定义过滤器的名字,当有多个过滤器时不能同名
filter-class:指定实现这一过滤器的类,这个类负责具体的过滤事务
init-param:配置初始化参数
param-name
param-value
filter-mapping
作用
设置过滤器负责过滤的url,每个filter必须有对应的,当有多个filter时filter-mapping的顺序决定了filter的加载顺序
属性
filter-name
定义过滤器的名字,当有多个过滤器时不能同名
url-pattern
指定过滤器负责过滤的URL
servlet
作用
配置一个servlet,与一个servlet-mapping相关联
属性
servlet-name:定义servlet的名称
servlet-class:定义servlet的类
init-param:配置初始化参数
param-name
param-value
load-on-startup:标记容器是否在启动的时候就加载这个servlet,值必须是一个整数,表示servlet应该被载入的顺序,当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet, 当值小于0或者没有指定时,则表示容器应该在servlet被选择(客户首次访问时)才去加载;正数值越小表示该servlet优先级越高,启动时就越先被加载;值相同时,容器自己选择顺序来加载
jsp-file
指定web站台中的某个JSP网页的完整路径
servlet-mapping
作用
用来定义servlet所对应的URL,包含两个子元素
属性
servlet-name
指定servlet的名称
url-pattern
指定servlet对应的URL
session-config
作用
会话配置
属性
session-timeout
配置会话超时配置,单位为秒
welcome-file-list
作用
指定欢迎文件页列表配置
属性
welcome-file
指定欢迎文件页
taglib
作用
配置Tag Library,对JSPs的开源增强
属性
taglib-uri
设定Tag Library的唯一标识符,在Web应用中将根据这一标识符来引用Tag Library
taglib-location
指定和Tag Library对应的TLD文件的位置
resource-ref
作用
配置资源引用
属性
description
对所引用资源的说明
res-ref-name
指定所引用资源的JNDI名字
res-type
指定所引用资源的类名字
res-auth
指定管理所引用资源的Manager,它有两个可选值
Container
由容器来创建和管理resource
Application
同WEB应用来创建和管理Resource
security-constraint
login-config
listener
作用
Listener是Servlet提供的扩展点,一般用于对特定对象的生命周期和特定事件进行响应处理。
属性
listener-class
context-param
作用
该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数
属性
param-name
设定上下文的参数名称。必须是唯一名称
param-value
设定的参数名称的值
常见问题
SAXParseException
在web.xml中元素定义的先后顺序不能颠倒
server.xml配置
web工程目录结构
属性配置
catalina.home
指向Tomcat公用信息的位置,即tomcat的bin和lib目录
catalina.base
指向每个Tomcat目录私有信息的位置,即conf、logs、temp、webapps和work
Servlet
Servlet接口
init()
由servlet容器调用,仅在实例化servlet时调用一次
service()
仅允许在init成功之后调用,每次访问都会调用
destory()
关闭servlet容器后调用
getServletConfig()
getServletInfo()
生命周期
加载servlet
初始化,调用init()
处理服务,调用service()
销毁,主动删除或者长时间不使用,调用destory()方法
卸载,调用完destory()之后等待垃圾回收,如果再次使用这个servlet,重新调用init初始化
HttpServlet
实现了Servlet所有方法
在service()方法中根据http请求头,分别调用doGet()、doPost()等方法
特点
Servlet是单例的
每次请求对象与响应对象都是新的
线程安全问题
当多个用户访问Servlet的时候,服务器会为每个用户创建一个线程,当多个用户并发访问Servlet共享资源的时候会出现线程安全问提
如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制synchronized (对象){}
ServletConfig
读取web.xml中配置的初始化参数,单个Servlet的参数信息
ServletContext
当Tomcat启动的时候,就会创建一个ServletContext对象。它代表着当前web站点
作用
所有的Servlet都共享着一个ServletContext对象,Servlet之间可以通过ServletContext实现通讯
ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息
利用ServletContext读取web站点的资源文件
实现Servlet的转发
0 条评论
下一页
为你推荐
查看更多