1.MVC执行流程
![](https://i-blog.csdnimg.cn/direct/8f6cf75dba18496bb7b4a42f95771a18.png)
7.Service 层通常会调用 DAO 层来实现对数据库的实际操作.
8.DAO 层会使用 JDBC、Hibernate 或者其他持久化框架,执行具体的 SQL 操作。DAO 层执行完数据库操作后,将结果返回给调用它的 Service 层方法
9.Service 层在获得了 DAO 层返回的结果后,可能会进行一些额外的业务逻辑处理,然后将最终结果(通常是业务逻辑需要的数据或者操作结果)返回给 Controller。
10.Controller 方法会收到来自 Service 层的结果, 返回⼀个 ModelAndView( 即模型和视图 ) 给HandlerAdaptor。
11.HandlerAdaptor 适配器将执⾏结果 ModelAndView返回给前端控制器。
12.前端控制器接收到 ModelAndView后,请求对应的视图解析器。
13.视图解析器解析ModelAndView后返回对应View。
14.渲染视图并返回渲染后的视图给前端控制器。
15.最终前端控制器将渲染后的⻚⾯响应给⽤户或客户端。
2.过滤器,拦截器,监听器的使用
2.1 过滤器(Filter)
过滤器是Servlet规范中的一部分,它可以截取请求在进入Servlet之前或者从Servlet生成的响应返回客户端之前进行预处理或后处理。在Spring MVC中,过滤器通常用于:
请求过滤和处理:可以在请求到达DispatcherServlet之前对请求进行预处理,如认证、日志记录、字符编码转换等。
响应处理:可以在生成响应之前对响应进行后处理,如设置响应的头信息、内容处理等。
过滤器是在Servlet容器级别配置和管理的,通常在web.xml或使用注解方式配置。
<!-- 设置过滤器 !-->
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.sxkj.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
2.2 拦截器(Interceptor)
拦截器是Spring MVC框架提供的一种机制,用于在请求处理过程中进行拦截和处理。拦截器是基于Spring框架的,因此能够访问Spring容器中的Bean,并且对处理器执行过程进行更详细的控制。
处理器前预处理:在进入处理器之前进行操作,如登录检查、权限验证等。
处理器后后处理:在处理器执行完毕但未返回视图前进行操作,如记录日志、添加公共模型数据等。
视图渲染前后处理:在视图渲染之前或之后进行操作,如修改模型数据、修改视图等。
springmvc.xml中配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.sxkj.interceptor.LoginIntercepter"/>
</mvc:interceptor>
</mvc:interceptors>
拦截器可以通过配置HandlerInterceptor接口实现类或继承HandlerInterceptorAdapter
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 预处理逻辑
return true; // true表示继续流程,false表示中断后续流程
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 后处理逻辑
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 渲染完视图后的处理
}
}
3. 监听器(Listener)
监听器是Servlet规范中的一种机制,用于监听Web应用中的事件和状态变化。在Spring MVC中,监听器主要用于:
应用生命周期事件监听:如应用启动、销毁等。
会话生命周期事件监听:如会话创建、销毁等。
属性变化监听:如会话属性变化等。
监听器通过实现ServletContextListener、HttpSessionListener等接口来监听相应的事件。
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
// 应用初始化逻辑
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// 应用销毁逻辑
}
}