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. win10 MySQL8.0 zip包安装及问题解决

    1.在官网下载zip包 https://dev.mysql.com/downloads/mysql/ 2.将zip包解压到自己的工作目录中 3.配置环境变量 1)添加环境变量 MYSQL_HOME E ...

  2. Java基础之 学java从宝宝的命令行做起

    JAVA学习笔记 JAVA命令行 在当前文件的命令行下 编译:输入命令javac GetGreeting.java 执行 命令 Java GetGreeting 有package包的程序 1.到文件当 ...

  3. python的if语句

    1.条件测试 (1)概念: 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试.Python 根据条件测试的值为True还是False来决定是否执行if语句中的代码. ...

  4. netty笔记(一)--Demo

    Netty是一个Java开源框架,用于传输数据.由server和client组成,封装了Java nio,支持TCP, UDP等协议.这里写了一Demo EchoClientHandler.java ...

  5. mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ...

  6. rest-framework框架——认证、权限、频率组件

    一.rest-framework登录验证 1.models.py添加User和Token模型 class User(models.Model): name = models.CharField(max ...

  7. 学习 JavaScript 树

    学习 JavaScript 树 树(Tree) 在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的操作和运算等的学科. 它包含三方面的内容: 数据的 ...

  8. java实现链表结构详细代码

    一.数据准备 1. 定义节点 2.   定义链表 1.数据部分 2.节点部分 class DATA //数据节点类型 { String key; String name; int age; } cla ...

  9. GO Lang学习笔记 - 基础知识

    Go lang Learn Note 标签(空格分隔): Go Go安装和Go目录 设置环境变量GOROOT和GOPATH,前者是go的安装目录,后者是开发工作目录.go get包只会将包下载到第一个 ...

  10. tampermonkey利用@require调用本地脚本的方法

    比如Tampermonkey上的有个用户脚本a,本来的方法是: 1.直接在Tampermonkey上编辑js,适合高手,但是本人不清楚脚本如何同步,况且不熟练js,在Tampermonkey上写太难了 ...