SpringMVC拦截器(实现登录验证拦截器)
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现
当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面
核心代码
首先是index.jsp,显示链接
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<div style="margin:0 auto;padding-top:100px;font-size:18px;" align="center">
<p><a href="loginpage.html">登陆</a></p>
<p><a href="user/home.html">用户中心</a></p>
<p><a href="exception.html">触发异常</a></p>
</div>
</body>
</html>
controller类
package com.jikexueyuan.demo.springmvc.lesson4.controller; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import com.jikexueyuan.demo.springmvc.lesson4.constant.Global;
import com.jikexueyuan.demo.springmvc.lesson4.exception.MyException;
import com.jikexueyuan.demo.springmvc.lesson4.model.User;
import com.jikexueyuan.demo.springmvc.lesson4.service.LoginService; /**
* 这个例子讲解了如何定义MVC三层注解,使用@Resource进行注入,以及使用@RequestMapping、@RequestParam 、@SessionAttributes
*/ @Controller
public class LoginController extends BaseController { @Resource
LoginService service; @Resource
HttpServletRequest request; @RequestMapping("/exception")
public void exception() throws MyException{
throw new MyException("测试springmvc中的异常捕获");
} @RequestMapping("/loginpage")
public String toLoginPage(){
return "/WEB-INF/jsp/login.jsp";
} @RequestMapping("/user/home")
public String toUserHome(){
return "/WEB-INF/jsp/userhome.jsp";
} @RequestMapping("/logout")
public String logout(){
request.getSession().removeAttribute(Global.USER_SESSION_KEY);
return "redirect:/";
} @RequestMapping(value = "/doLogin", method = RequestMethod.POST)
public String doLogin(@RequestParam String userName, @RequestParam String password){ try {
User user = service.doLogin(userName, password);
request.getSession().setAttribute(Global.USER_SESSION_KEY, user);
return "redirect:/user/home.html";
} catch (Exception e) {
return "/WEB-INF/jsp/login.jsp";
} } }
当点击用户中心时,触发拦截,相关配置如下
在spring-mvc.xml中加上拦截配置,拦截所有URL中包含/user/的请求,当然请求用户中心时就会触发这个拦截器了
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有URL中包含/user/的请求 -->
<mvc:mapping path="/user/**"/>
<bean class="com.jikexueyuan.demo.springmvc.lesson4.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
然后是bean指向的具体的interceptor类,如果session保存的用户信息为null,则跳到login页面,postHandle和afterCompletion方法都不执行,反之都执行。
package com.jikexueyuan.demo.springmvc.lesson4.interceptor; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import com.jikexueyuan.demo.springmvc.lesson4.constant.Global; public class LoginInterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute(Global.USER_SESSION_KEY);
if (user == null) {
System.out.println("尚未登录,调到登录页面");
response.sendRedirect("/loginpage.html");
return false;
} return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
} }
至此,简单的springmvc拦截器就完成了。
SpringMVC拦截器(实现登录验证拦截器)的更多相关文章
- SpringMVC之拦截器实现登录验证
今天回头看之前发的javaweb学习路线图,发现把路线图中的也学的有一半多了,不过还是路漫漫.在前面的博客中有学习过spring的aop,它利用动态代理实现,在springmvc中也是一样,今天使用H ...
- SSM项目使用拦截器实现登录验证功能
SSM项目使用拦截器实现登录验证功能 登录接口实现 public User queryUser(String UserName, String Password,HttpServletRequest ...
- 基于SSH2框架Struts2拦截器的登录验证实现(转)
大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证. 修改数 ...
- JavaWeb -- Struts 自定义拦截器, 登录权限拦截
1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- springmvc拦截器实现登录验证
首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Ti ...
- spring登录验证拦截器和根据用户角色登录
大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受. 德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员.超级管理 ...
- Django 之装饰器实现登录认证
def check_login(func): # 自定义登录验证装饰器 def warpper(request, *args, **kwargs): is_login = request.sessio ...
- springmvc 拦截器与用户验证token
1:springmvc 配置文件中添加拦截器,当然首先要有拦截后交给哪个类处理也要写上 <mvc:interceptors> <mvc:interceptor> <mvc ...
随机推荐
- ubuntu安装kvm流程
1. 查看CPU的虚拟化支持~ egrep 'svm|vmx' /proc/cpuinfo #查看是否有内容输出 2. 更新源~ sudo apt-get update 安装KVM及virt管理软件~ ...
- 帧动画 AnimationDrawable
Drawable Animation(Frame Animation):帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 首先,在res/drawable中定义动画 < ...
- JVM 内存分为四大块
1.栈区 存放函数参数值和局部变量值 2.堆区 3.静态区 4.代码区
- UFLDL课程学习(一)
章节地址:http://ufldl.stanford.edu/tutorial/supervised/LinearRegression/ 章节名称:线性回归 (Linear Regression) 第 ...
- Phonegap 版本minSdkVersion为8的时候的自动更新与升级
清单文件中: <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/> ...
- 微信企业号开发遇到的bug
a. 微信嵌入视频: a.1 视频元素播放时层级默认被顶置 a.1 视频播放后窗口无法通过css改变层级 a.2 视频播放后窗口无法通过css隐藏 解决方案:做个虚假的播放窗口,点击播放窗口(虚假的) ...
- cxf所用的lib
cxf_lib
- github 提交时候提示 org.eclipse.jgit.errors.ObjectWritingException: Unable to create new object: /usr/local/apache243/ht
只需要执行 chmod -R 777 ./* 把 .git文件权限设置为 777便可以实现.
- twisted(3)--再谈twisted
上一章,我们直接写了一个小例子来从整体讲述twisted运行的大致过程,今天我们首先深入一些概念,在逐渐明白这些概念以后,我们会修改昨天写的例子. 先看下面一张图: 这个系列的第一篇文章,我们已经为大 ...
- web安全:xss && csrf
首先在user.php文件中去除黑名单的第一行标签,在白名单中添加<script>E1:csrf攻击zoobarcsrf:cross-site request forgery 跨站伪 ...