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