拦截器 Interceptor
springmvc 自定义拦截器
自定义拦截器的类
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
自定义拦截器
*/
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("调用之前触发此方法!"+handler);
/**
* return false 代表拦截,不调用controller方法直接返回
* true 不拦截
*/
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
/**
* 调用之后调用此方法
*/
System.out.println("handler已经被调用完毕!"+handler);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
/**
* 响应已经被渲染后,执行该方法.
*/
System.out.println("响应已经进行了渲染");
}
}
2 在springmvc配置文件中注册拦截器
springmvc-servlet.xml
<!--定义拦截器 用MyInterceptor类拦截 /user/**路径 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.lanou.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
3 测试拦截器是否可用
http://localhost:8080/user/save?uname=无情&id=1001
拦截 /user/下的路径可以看到效果,
405 error Request method ‘GET’ not supported
@RequestMapping(method=“get/post”)
<form action="/arAccount/save" method="post">
id:<input type="text" name="id"><br/>
username:<input type="text" name="username"><br/>
money:<input type="text" name="money"><br/>
<input type="submit" value="保存账户">
</form>
此时再访问/save路径,就会报405
//一、通过modelandView返回
@RequestMapping(value = "/save",method = RequestMethod.POST )
public ModelAndView addAccount(@RequestParam(required = false)
Integer id,
String username,
Double money,
ModelAndView modelAndView){
System.out.println(id+"---"+username+"---"+money);
modelAndView.setViewName("account");//页面
//request返回
modelAndView.addObject("username",username);//返回数据
return modelAndView;
}
后台指定要用post方法,结果你前端给我用get方法传递,当然会报405错Request method ‘GET’ not supported,请求方法get不被支持。