发表于: 2022-05-07 18:08:39
1 626
一些今天学习过程中发现的代码理解:
<!--表示要拦截所有的请求,并交由Spring MVC的后台控制器来处理-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<body>
<!--指定超链接目标的 URL-->
<a href="test">welcome</a>
</body>
SpringMVC执行流程和原理
今天学习了springMVC :
JSON 是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。
JavaScript、PHP、Java、Python、C++ 等编程语言中都内置了处理。
什么是RESTful :
Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件
主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等
Restful风格的请求是使用“url+请求方式”表示一次请求目的的
HTTP 协议里面四个表示操作方式的动词如下:
GET: 读取(Read)
POST: 新建(Create)
PUT: 更新(Update)
DELETE: 删除(Delete)
拦截器(Interceptor):是一种动态拦截方法调用的机制
作用:
在指定的方法调用前后执行预先设定的代码
阻止原始方法的执行
核心原理:AOP思想
拦截器链:多个拦截器按照一定的顺序,对原始被调用功能进行增强
拦截器VS过滤器
归属不同:Filter数据Servlet技术,Interceptor属于SpringMVC技术
拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强
拦截器开发
制作拦截器功能类(通知)
配置拦截器的执行位置(切入点)
Servlet 有以下几点优势:
性能明显更好。
Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
Servlet 是独立于平台的,因为它们是用 Java 编写的。
服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
SpringMVC是一个基于模型(M)-视图(V)-控制器(C)的的Web框架。
1、中央前端控制器DispatcherServlet(不需要程序员开发)
作用:接收请求,相应结果。相当于转发器,中央处理器。
2、处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的url查找Controller(也可称为Handler)
3、处理器适配器HandlerAdapter(不需要程序员开发)
作用:按照特定规则(HandlerAdapter要求的规则)去执行Controller
注意:编写Controller时按照HandlerAdapter的要求做,这样适配器才可以正确执行Controller
4、处理器Controller(需要程序员开发)
作用:实现具体的业务逻辑
5、视图解析器ViewResolver(不需要程序员开发)
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
6、视图View(需要程序员开发)
View是一个接口,实现类支持不同的view类型。
h1 : 网站大标题
h2 : 网站副标题
h3 : 网站分类目录
h4 : 网站的文章分类
h5 : 文章标注
h6 : tag标签
FreeMarkerViewResolver:自由标记视图解析器
FreeMarkerViewResolver 是 UrlBasedViewResolver 的子类,可以通过 prefix 属性指定前缀,通过 suffix 属性指定后缀。
1. value 属性
value 属性是 @RequestMapping 注解的默认属性,因此如果只有 value 属性时,可以省略该属性名,如果有其它属性,则必须写上 value 属性名称。如下。
@RequestMapping(value="toUser")
@RequestMapping("toUser")
value 属性支持通配符匹配,
如 @RequestMapping(value="toUser/*") 表示 http://localhost:8080/toUser/1 或 http://localhost:8080/toUser/hahaha 都能够正常访问。
2. path属性
path 属性和 value 属性都用来作为映射使用。
即 @RequestMapping(value="toUser") 和 @RequestMapping(path="toUser") 都能访问 toUser() 方法。
path 属性支持通配符匹配,
如 @RequestMapping(path="toUser/*") 表示 http://localhost:8080/toUser/1 或 http://localhost:8080/toUser/hahaha 都能够正常访问。
3. name属性
name属性相当于方法的注释,使方法更易理解。如 @RequestMapping(value = "toUser",name = "获取用户信息")。
4. method属性
method 属性用于表示该方法支持哪些 HTTP 请求。如果省略 method 属性,则说明该方法支持全部的 HTTP 请求。
@RequestMapping(value = "toUser",method = RequestMethod.GET) 表示该方法只支持 GET 请求。也可指定多个 HTTP 请求,如 @RequestMapping(value = "toUser",method = {RequestMethod.GET,RequestMethod.POST}),说明该方法同时支持 GET 和 POST 请求。
5. params属性
params 属性用于指定请求中规定的参数,代码如下。
@RequestMapping(value = "toUser",params = "type")
public String toUser() {
return "showUser";
}
以上代码表示请求中必须包含 type 参数时才能执行该请求。
即 http://localhost:8080/toUser?type=xxx 能够正常访问 toUser() 方法,而 http://localhost:8080/toUser 则不能正常访问 toUser() 方法。
@RequestMapping(value = "toUser",params = "type=1")
public String toUser() {
return "showUser";
}
以上代码表示请求中必须包含 type 参数,且 type 参数为 1 时才能够执行该请求。
即 http://localhost:8080/toUser?type=1 能够正常访问 toUser() 方法,而 http://localhost:8080/toUser?type=2 则不能正常访问 toUser() 方法。
6. header属性
header 属性表示请求中必须包含某些指定的 header 值。
@RequestMapping(value = "toUser",headers = "Referer=http://www.xxx.com") 表示
请求的 header 中必须包含了指定的“Referer”请求头,以及值为“http://www.xxx.com”时,才能执行该请求。
7. consumers属性
consumers 属性用于指定处理请求的提交内容类型(Content-Type),例如:application/json、text/html。如
@RequestMapping(value = "toUser",consumes = "application/json")。
8. produces属性
produces 属性用于指定返回的内容类型,返回的内容类型必须是 request 请求头(Accept)中所包含的类型。
如 @RequestMapping(value = "toUser",produces = "application/json")。
遇到的问题:没有
明天计划:学习spring的增删查改
评论