栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring mvc简单总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring mvc简单总结

1.什么是MVC:

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。

2.spring mvc的执行原理

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。
  2. HanderMapping处理器映射器,根据请求的url找到对应的handler。
  3. HandlerExecution将解析信息传给DispatcherServlet。
  4. HandlerAdapter处理器适配器,按照路径去执行Handler
  5. Controller访问根据请求做执行对应的业务逻辑,返回(ModelAndView)
  6. ViewResolver视图解析器:根据ModelAndView传过来的结果调用对应的视图,渲染数据。
3.spring mvc的拦截器

过滤器与拦截器的区别:拦截器是AOP思想的具体应用。

过滤器:

  1. servlet规范中的一部分,任何java web工程都可以使用
  2. 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截

拦截器:

  1. 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
  2. 拦截器只会拦截访问的控制器方法,如果访问的是jsp/html/css/image/js是不会进行拦截的

过滤器注解使用

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//类似于在web.xml中注册了,根据类名排序来执行
//@WebFilter(filterName = "TestFilter1",urlPatterns = "/*")
public class TestFilter2 implements Filter {
    //容器在创建当前过滤器的时候自动调用;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("====================TestFilter1容器创建了=========================");
    }
    //过滤器的主要代码写在这个地方
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("====================TestFilter1方法执行了=========================");
        //因为有可能不止这一个过滤器,所以需要将所有的过滤器执行
        //注意 这一行代码一定要写到最后
        filterChain.doFilter(servletRequest,servletResponse);
    }
    //容器在销毁当前过滤器的时候自动调用
    @Override
    public void destroy() {
        System.out.println("====================TestFilter1容器销毁了=========================");
    }
}

过滤器配置web.xml使用

   
        
            TestFilter2
            com.wwy.common.TestFilter2
        
        
            TestFilter2
            /*
        
        
        
            TestFilter1
            com.wwy.common.TestFilter1
        
        
            TestFilter1
            /*
        

拦截器的使用:

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class TimeInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //执行请求方法前调用的方法
        System.out.println("------------处理前------------");
        //返回false则终止方法
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        //执行请求方法后调用的方法
        System.out.println("------------处理后------------");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        //dispatcherServlet执行后清理的方法
        System.out.println("------------清理------------");
    }

}

拦截器mvc里面的配置文件:

 
    
        
        
            
            
            
        
        
            
            
            
        
    

拦截器的执行顺序
1、跟配置文件的顺序有关,链式执行;
2、如果第一个pre就返回false,是不会进入第二个拦截器的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号