2020-01-14

springMVC

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

通过listener来启动

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

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

页面跳转很方便

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

三种获取页面值得方法

参数里传request,

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

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

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

拦截器

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

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

        <!-- 拦截器的配置:只能拦截处理器路径   --> 
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>所有都拦截
            <mvc:exclude-mapping path="/login.action"/>
优化了可以设定固定哪个不拦截          
            <bean class="com.neusoft.interceptor.MyInterceptor"></bean>
            包名.类名
        </mvc:interceptor>
    </mvc:interceptors>

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; 
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容