Java web登录拦截器_SpringMVC拦截器(实现登录验证拦截器)

本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现

核心代码

首先是index.jsp,显示链接

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

首页

登陆

用户中心

触发异常

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/的请求,当然请求用户中心时就会触发这个拦截器了

然后是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拦截器就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Poi 向excel中插入图片

博客 package com.unicom.yangjiabin.utils;import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.po…

visual studio for mac的离线安装初体验

微软2016 Connect 大会发布了visuo studio for mac的pre版本,由于工作原因,现在工作环境是mac,虽然开发现在是在用python,但一直关注着.net的发展,于是自己很激动的体验了一把,在张善友老师的提醒下,把安装…

JAVAWEB(笔记)

简介 web开发: web,网页的意思,www.baidu.com静态web html,sss提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站;提供给所有人看的数据始终会发生变化,每个人在不同的时…

Java IO: 其他字节流(上)

转载自 Java IO: 其他字节流(上)作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 本小节会简要概括Java IO中的PushbackInputStream,SequenceInputStream和PrintStream。其中,最常用的是PrintStream,System.out和System.err都是Pri…

java中public private_java中public、private、protected区别

类中的数据成员和成员函数据具有的访问权限包括:public、private、protect、friendly(包访问权限)1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有&#xff0…

Excel转为图片

Java 将Excel转为图片、html、XPS、XML、CSV E_iceblue关注0人评论66人阅读2020-01-10 16:16:24 通过文档格式转换,可满足不同办公场合对文档操作的需求。本文将介绍转换Excel文档为其他常见文档格式的方法。通过文中的方法,可支持将Excel转换为包括PDF、…

Hibernate中使用Criteria查询及注解——( EmpCondition)

EmpCondition: 动态查询的条件类: package cn.bdqn.hibernate_Criteria.entity;import java.util.Date;/*** Criteria动态查询的条件类* author Administrator**/ public class EmpCondition {private String job;//职位private Double sal;//工资privat…

.NET Core 构建配置文件从 project.json 到 .csproj

从 .NET Core SDK 1.0 Preview 3 build 004056 开始,.NET Core 弃用 project.json,回归 .csproj,主要原因是为了兼容 MSBuild ,详见 Announcing .NET Core Tools MSBuild “alpha” 。 如果你安装了 .NET Command Line Tools (1.0…

Java IO: 字符流的Piped和CharArray

转载自 Java IO: 字符流的Piped和CharArray作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader、PipedWriter、CharArrayReader、CharArrayWriter。PipedReader 原文链接 PipedRead…

java正则表达式验证密码_最新密码验证正则表达式

正则表达式验证密码功能在项目中经常被使用到,但是很多朋友还是不大会使用密码正则表达式进行验证,本文小编为大家整理了php密码验证正则表达式、python密码强度正则,当然还有大家常用到的js正则表达式,希望大家喜欢。刚开始复习一…

2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)

第一章 1-1课程整体介绍.mp4 1-2核心技术列表.mp4 1-3课程要求与收益.mp4 1-4系统的整体演示.mp4 https://www.jianshu.com/writer#/notebooks/42211254/notes/59340149 第二章 2-1微服务项目的搭建-SpringBoot搭建多模块项目一.mp4 2-2微服务项目的搭建-SpringBoot搭建多模块…

mybatis解决 1 字节的 UTF-8 序列的字节 1 无效

Mybatis执行代码报错: Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。 具体报错: java.lang.ExceptionInInitializerError at com.zhang.dao.UserMapperTest.test(UserMappe…

Java IO: 字符流的Buffered和Filter

转载自 Java IO: 字符流的Buffered和Filter作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。 BufferedReader 原文链接 BufferedR…

TechEmpower 13轮测试中的ASP.NET Core性能测试

应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此。此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚。在选择框架时,又有许多因…

hibernate注解的测试

注解用到的jar包:下载地址 /** * * 注解 * 步骤: * 1.导入jar包 * (1)hibernate-annotations.jar * (2)hibernate-commons-annotations.jar * (3)ejb3-persistence.jar * 2.使用注解配置持久化类级对象关…

Java IO: FileReader和FileWriter

转载自 Java IO: FileReader和FileWriter作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 本章节将简要介绍FileReader和FileWriter。与FileInputStream和FileOutputStream类似,FileReader与FileWriter用于处理文件内容。 FileReader 原文链接 FileReader能…

java sentence_Java Sentence類代碼示例

本文整理匯總了Java中aima.core.logic.propositional.parsing.ast.Sentence類的典型用法代碼示例。如果您正苦於以下問題:Java Sentence類的具體用法?Java Sentence怎麽用?Java Sentence使用的例子?那麽恭喜您, 這裏精選的類代碼示…

Redis在windows下的安装、启动、配置

Redis在windows下的安装、启动、配置 原创scorpio_meng 最后发布于2018-06-29 13:42:39 阅读数 9687 收藏 展开 1,下载地址:https://github.com/MicrosoftArchive/redis/releases 2,解压缩后在文件夹中创建两个文件夹dbcache、logs。 3&am…

在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

Angular2是对Angular1的一次彻底的,破坏性的更新。 相对于Angular1.x,借用某果的广告语,唯一的不同,就是处处都不同。 首先,推荐的语言已经不再是Javascript,取而代之的TypeScript,(TypeScript …

xml vs db.properties

xml vs db.properties <property name"url" value"jdbc:mysql://localhost:3306/mybatis?useSSLtrue&amp;useUnicodetrue&amp;characterEncodingUTF-8"/>urljdbc:mysql://localhost:3306/mybatis? useSSLtrue&useUnicodetrue&cha…