发表于: 2022-05-07 18:08:39

1 332



一些今天学习过程中发现的代码理解:



 <!--表示要拦截所有的请求,并交由Spring MVC的后台控制器来处理-->
 <servlet-mapping>
   <servlet-name>dispatcherServlet</servlet-name>
   <url-pattern>/</url-pattern>
 </servlet-mapping>


<body>
   <!--指定超链接目标的 URL-->
   <a href="test">welcome</a>

</body>



SpringMVC执行流程和原理


preview

今天学习了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的增删查改










返回列表 返回列表
评论

    分享到