1:ModelAndView

@RequestMapping("/viewall")
public ModelAndView viewAll(String name,String pwd,HttpServletRequest request){
ModelAndView mv= new ModelAndView();
request.getSession().setAttribute("user", name);
mv.setViewName("/hello1");
mv.addObject("msg","恭喜 "+name+" 登录成功!");
return mv;
} 2:配置请求过滤器,编码格式设为UTF-8,避免中文乱码

<!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码-->
<filter>
<filter-name>springUtf8Encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>springUtf8Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3:编写拦截器 实现HandlerInterceptor接口

public class Test1Interceptor implements HandlerInterceptor{

private Logger log = LoggerFactory.getLogger(Test1Interceptor.class);

@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {

log.debug("执行到了afterCompletion1方法");

}

@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView mv)
throws Exception {

//可以通过ModelAndView参数来改变显示的视图,或修改发往视图的方法。

log.debug("执行到了postHandle1方法");

// mv.addObject("msg","这里传回的是被拦截器修改之后的消息!");
// mv.setViewName("/hello2");
}

/**
* 返回值:表示我们是否需要将当期的请求拦截下来
* false:请求会被终止
* true:请求会被继续运行
* Object object:表示的是被拦截的请求的目标对象
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {

编码格式设为UTF-8,避免中文乱码

// request.setCharacterEncoding("UTF-8");

log.debug("执行到了preHandle1方法");
String path = request.getServletPath();
if("/login".equalsIgnoreCase(path)){
return true;
}
if("/viewall".equalsIgnoreCase(path)){
return true;
}
if(request.getSession().getAttribute("user") == null){
//如果用户没有登录,就终止请求,并发送到登录页面
request.getRequestDispatcher("/login").forward(request, response);
return false;
}

return true;
}

}

4:注册拦截器

<!-- 注册拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/list"/>
<bean class="com.com.interceptor.TestInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

5:多个拦截器执行顺序

6:WebRequestInterceptor 实现拦截器 向mvc中注册 和上面一样,不同的是preHandle不会反悔

public class threeInterpector implements WebRequestInterceptor {

public void preHandle(WebRequest request) throws Exception {
// TODO Auto-generated method stub
request.setAttribute("username", "zhang",WebRequest.SCOPE_REQUEST);
}

public void postHandle(WebRequest request, ModelMap model) throws Exception {
// TODO Auto-generated method stub
System.out.println(request.getAttribute("username", WebRequest.SCOPE_REQUEST));
}

public void afterCompletion(WebRequest request, Exception ex)
throws Exception {
// TODO Auto-generated method stub

}
}

7:拦截器和过滤器

1.过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处

理,并且在请求结束返回给前端这之间进行后期处理。依赖于servlet容器k=可以过滤静态资源文件

2.拦截器依赖于框架容器,基于反射机制,只过滤请求

spring mvc 拦截器(已完成)的更多相关文章

  1. SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器

    目录 2-2 Spring MVC拦截器 第一章 概述 第二章 Spring mvc拦截器的实现 2-1 拦截器的工作原理 2-2 拦截器的实现 2-3 拦截器的方法介绍 2-4 多个拦截器应用 2- ...

  2. spring mvc 拦截器的使用

    Spring MVC 拦截器的使用 拦截器简介 Spring MVC 中的拦截器(Interceptor)类似于 Servler 中的过滤器(Filter).用于对处理器进行预处理和后处理.常用于日志 ...

  3. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  4. Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)

    拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现, ...

  5. Spring MVC拦截器配置

    Spring MVC拦截器配置 (1)自定义拦截器 package learnspringboot.xiao.other; import org.springframework.web.servlet ...

  6. 写的太细了!Spring MVC拦截器的应用,建议收藏再看!

    Spring MVC拦截器 拦截器是Spring MVC中强大的控件,它可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是在渲染视图后进行操作. 拦截器概述 对于任何优秀的MVC框架, ...

  7. 对于Spring MVC 拦截器的一些了解

    Spring MVC 拦截器的执行顺序 应用场景 假设请求 localhost:8080/ 则要求直接重定向到 localhost:8080/login ; 定义拦截器顺序 permission lo ...

  8. Spring MVC拦截器浅析

    Spring MVC拦截器 重点:Spring MVC的拦截器只会拦截控制器的请求,如果是jsp.js.image.html则会放行. 什么是拦截器 运行在服务器的程序,先于Servlet或JSP之前 ...

  9. spring MVC拦截器01

    spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. sp ...

  10. spring mvc拦截器原理分析

    我的springMVC+mybatis中的interceptor使用@autowired注入DAO失败,导致报空指针错误,这个是为什么呢? :空指针说明没有注入进来,你可以检查一下你的这个拦截器int ...

随机推荐

  1. CheckBox 样式

    .cb td {             width: 100px;         } .cb label {             display: inline-block;          ...

  2. 纯代码编写的vc跳转SB

    今天遇到个问题,我整个项目都是纯代码,突然有个引用的VC用了storyboard,导航的跳转不知道如何操作,最后试了很多方法总算可以了 首先,找到要跳转的sb. UIStoryboard *story ...

  3. DOM的概念和简单应用:使用DOM解析XML数据

    概念:DOM是Document Object Model的简称,即文档数据模型. Oracle公司提供了JAXP(Java API for XML Processing)来解析XML.JAXP会把XM ...

  4. 亲测,很有效的忽略SSL证书方法

    1.在httpclient发起请求时,有时会出现下面这种情况 你的日志中出现有关SSL的异常,javax.net.ssl.SSLPeerUnverifiedException: peer not au ...

  5. OpenStack各组件详解和通信流程

    一.openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成.后来以apache许可证授权,旨在为公共及私有云平台建设.open ...

  6. 【代码笔记】JTable 、TableModel的使用3

    在java中插入Table,并通过TableModel插入表格初始化状态后,如果需要第一行标题栏进行重命名,直接利用TableModel接口去实现列名修改,在图形显示中是无法实现的. 这里需要用到 J ...

  7. 原生js获取手机定位信息

    <script type="text/javascript"> function Location() {}; Location.prototype.getLocati ...

  8. Web安全色的意义

    问题: 不同的平台(Mac.PC等)有不同的调色板,不同的浏览器也有自己的调色板.这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别很大. 选择特定 ...

  9. onload与ready差异

    window.onload: 等所有资源加载完document.ready: DOM树构建完资源还没加载完 应该使用ready保证用户体验.否则当网站有很多图片资源时要很长时间才能加载完这段时间内Js ...

  10. iOS中使用RNCryptor对资源文件加密

    原文:http://blog.csdn.net/chenpolu/article/details/46277587 RNCryptor源码https://github.com/RNCryptor/RN ...