modelandview

Spring 过滤器 拦截器 AOP区别

旧时模样 提交于 2020-03-08 00:46:25
https://blog.csdn.net/dreamwbt/article/details/82658842 简介 这几天在回顾Spring的AOP时,对过滤器,拦截器,AOP的关系有点好奇,故记录做以备份。在实现一些公共逻辑的时候,很多功能通过过滤器,拦截器,AOP都能实现,但是不同的方式有不同的效率。具体有什么区别,看下文描述。 过滤器 过滤器拦截的是URL Spring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当前请求地址是否配置有过滤器,有则调用该过滤器的方法(可能会有多个过滤器),然后才调用真实的业务逻辑,至此过滤器任务完成。 过滤器并没有定义业务逻辑执行前、后等,仅仅是请求到达就执行。 特别注意:过滤器方法的入参有request,response,FilterChain,其中FilterChain是过滤器链,使用比较简单,而request,response则关联到请求流程,因此可以对请求参数做过滤和修改,同时FilterChain过滤链执行完,并且完成业务流程后,会返回到过滤器,此时也可以对请求的返回数据做处理。 拦截器 拦截器拦截的是URL 拦截器有三个方法,相对于过滤器更加细致,有被拦截逻辑执行前、后等。Spring中拦截器有三个方法:preHandle,postHandle,afterCompletion

SpringMVC执行原理

冷暖自知 提交于 2020-03-06 10:20:20
SpringMVC执行原理 1. 前端控制器:DispatcherServlet 位于 /WEB-INF/web.xml <!--1.注册DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联一个springmvc的配置文件:【servlet-name】.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动级别-1:和服务器同时启动--> <load-on-startup>1</load-on-startup> </servlet> <!-- 在SpringMVC中: --> <!-- / 匹配所有的请求,但不匹配.jps文件--> <!-- /* 匹配所有的请求,并且匹配.jsp文件--> <servlet-mapping> <servlet-name>springmvc</servlet

根据登录流程解释Springmvc原理day3_5

我是研究僧i 提交于 2020-03-06 00:03:42
SpringMVC与Struts SpringMVC采用Servlet。而Struts采用filter Filter在容器启动之后即初始化;服务停止以后销毁,晚于Servlet。Servlet在是在调用时初始化,服务停止后销毁。 Struts2框架是类级别的拦截,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,所以方法直接基本上是独立的。 SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。 而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC执行效率和性能高于Struts2,但是开发效率略比Struts2差一些。 Struts2有自己的拦截Interceptor机制,SpringMVC可以采用独立的Aop方式也有自己的拦截器AbstractInterceptor 视图解析器 会 根据 把控制器返回的逻辑视图名 确定 渲染模型的视图文件的物理位置。 SpringMvc原理 根据登录流程解释SpringMvc的原理 用户进入登录页面,输入用户名和密码进行登录请求,将登录请求发给DispatcherServlet,调用handleradapter,根据请求的路径来确定执行哪个控制器,在控制器中处理业务逻辑,从数据库中调出用户名和密码的数据

springmvc

最后都变了- 提交于 2020-03-05 11:58:15
如果代码写成这样,就表示跳转到页面 index.jsp new ModelAndView(" index.jsp"); 所谓的视图定位,指的是代码还是写成这样,但是会跳转到 /WEB-INF/page/index.jsp new ModelAndView(" index"); 来源: https://www.cnblogs.com/Yueryy/p/12419118.html

SpringMVC学习(一)SpringMVC入门 、HelloSpringMVC程序、SpringMVC执行原理

丶灬走出姿态 提交于 2020-03-04 14:21:19
一、SpringMVC简介 官方文档地址 1、什么是SpringMVC? Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的 轻量级Web框架 ,即使用了MVC架构模式的思想,将Web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型, SpringMVC框架的目的就是帮助我们简化开发。 2、SpringMVC的优点 (1)结构松散,几乎可以在 Spring MVC 中使用各类视图 (2)松耦合,各个模块分离 (3)和Spring的兼容性好, 无缝集成 二、SpringMVC执行原理 1、SpringMVC中的 DisPatchServlet Spring的web框架围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器.。 Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。 2、SpringMVC的执行原理 图解: 图中的实线部分为SpringMVC为我们提供好的技术,不需要我们程序员进行多余的操作,虚线部分就是我们程序员要实现的。 流程分析: 我们假设请求的url为 : http://localhost:8080

SSM框架部分功能实现

删除回忆录丶 提交于 2020-03-02 13:19:23
1.实体类(UserInfo) package com . zjitc . bean ; /** * UserInfo - 实体类,映射数据库字段,字段建议一致 */ public class UserInfo { private int id ; //用户ID private String username ; //用户名 private String password ; //用户密码 // get/set 访问器 public int getId ( ) { return id ; } public void setId ( int id ) { this . id = id ; } public String getUsername ( ) { return username ; } public void setUsername ( String username ) { this . username = username ; } public String getPassword ( ) { return password ; } public void setPassword ( String password ) { this . password = password ; } // 构造方法 public UserInfo ( ) { } public

【SSM】SSM之SpringMVC框架:SpringMVC的工作原理

情到浓时终转凉″ 提交于 2020-03-01 16:34:09
客户端发送的请求被DispatcherServlet捕获后其流程如下: 其大致流程如下: 1、用户发送请求至前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器如果没有找到具体的处理器: 如果配置了<mvc:default-servlethandler/>,就调用默认的Servlet处理找到匹配的静态资源,如果没有找到就返回404页面; 如果没配置<mvc:default-servlethandler/>,直接返回404页面。 3、处理器映射器如果找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、执行处理器拦截器的preHandle()方法(如果有的话)。 5、DispatcherServlet获得HandlerAdapter处理器适配器。 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、Controller执行完成返回ModelAndView前执行处理器拦截器的postHandle()方法(如果有的话)。 7、Controller执行完成返回ModelAndView。 8

SpringMVC模型数据解析

前提是你 提交于 2020-03-01 15:52:13
模型数据解析 我们通过JSP表单在客户端页面提交了一个对象信息,再将该对象信息显示在客户端页面上,这就是模型数据解析。 JSP的四大作用域对应的内置对象 pageContext、request、session、application 模型数据能够绑定到requeat、seesion、application三个对象中,下面代码会一一实现。在绑定模型数据之前,我们先写一个view.jsp,用来提交我们的模型数据。 模型数据的绑定是由ViewResolver来完成的,在实际开发中,我们需要先添加模型数据,再交给ViewResolver来绑定。 SpringMVC提供了以下几种方式添加模型数据 Map Model ModelAndView @SessionAttribute @ModelAttribute (1)将模型数据绑定到request对象 1、Map 业务方法 @RequestMapping ( "/map" ) public String map ( Map < String , User > map ) { User user = new User ( ) ; user . setId ( 1 L ) ; user . setName ( "张三" ) ; map . put ( "user" , user ) ; return "view" ; //将逻辑视图

【SpringBoot】SpringBoot 错误处理机制(九)

旧街凉风 提交于 2020-03-01 03:42:11
  本例介绍SpringBoot错误处理机制 错误处理现象   新建一个SpringBoot Web项目,在浏览器中随便输入一个错误地址进行访问,如:http://localhost:8081/test/aa,会出现一个错误页面   浏览器页面错误:        如果用PostMan请求错误地址,得到一个Json错误   Json错误:      错误处理原理   可以参考ErrorMvcAutoConfiguration,错误处理的自动配置   一但系统出现4xx或者5xx之类的错误;ErrorPageCustomizer就会生效(定制错误的响应规则);就会来到/error请求;就会被BasicErrorController处理;   1、DefaultErrorAttributes: 错误请求中有的属性 1 @Override 2 public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { 3 Map<String, Object> errorAttributes = new LinkedHashMap<>(); 4 errorAttributes.put("timestamp", new Date()); 5 addStatus

springmvc自定义拦截器

橙三吉。 提交于 2020-02-29 14:53:11
1、步骤 1.1、创建自定义拦截器类,实现HandlerInterceptor接口 1.2、在springmvc.xml中配置自定义拦截器 2、具体代码 2.1、自定义拦截器类 package com.ly.mvc.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor1 implements HandlerInterceptor { /** * 前处理方法,在控制器方法执行前执行 * 返回false不会执行后续拦截器以及控制器 * 返回true,若还有拦截器会继续执行后续拦截器,若没有拦截器会执行控制器的方法 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws