2020-01-14

springMVC

他主要充当mvc思想中控制层部分,替换servlet

通过listener来启动

采用了无侵入式的设计方式,随便创建一个类就能充当控制器

有一个动态的参数列表,结合依赖注入,取值很方便

页面跳转很方便

采用负荷类型的依赖注入,取页面中的值很方便

三种获取页面值得方法

参数里传request,

参数里传与页面表单元素名字一样的属性

在实体类里加上与表单元素名字一样的属性 ,参数传这个实体类的对象

使用js,css第三方组件时,spring会过滤,拦截,要在springMvC.xml中加配置文件

拦截器

只能拦截控制器,依托于AOP来完成的(只能拦截已存在的 资源)

filter是过滤请求,通过路径来拦截,拦截器依托于Aop,是触发一件事情才会拦截,原理完全不一样,弥补Filter的不足,由Aservlet以Forword形式跳到Bservlet,不能过滤,和Filter一起使用

         
    
        
            所有都拦截
            
优化了可以设定固定哪个不拦截          
            
            包名.类名
        
    

package com.neusoft.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
//需要实现这个接口
public class MyInterceptor implements HandlerInterceptor{

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("---MyInterceptor---afterCompletion--最终通知");
        
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("---MyInterceptor---postHandle--后置通知");
        
    }
//开始一个事情时调用
    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse response, Object arg2) throws Exception {
        System.out.println("---MyInterceptor---preHandle--前置通知");
        response.sendRedirect("../index.jsp");
        return false; 
    }

}

你可能感兴趣的:(2020-01-14)