本例实现登陆时的验证拦截,采用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%>" rel="external nofollow" >
<title>首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<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" rel="external nofollow" >
-->
</head>
<body>
<div style="margin:0 auto;padding-top:100px;font-size:18px;" align="center">
<p><a href="loginpage.html" rel="external nofollow" >登陆</a></p>
<p><a href="user/home.html" rel="external nofollow" >用户中心</a></p>
<p><a href="exception.html" rel="external nofollow" >触发异常</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
# 登录拦截器
# spring
# mvc
# 登录验证
# springmvc登录拦截
# SpringMVC自定义拦截器登录检测功能的实现代码
# SpringMVC 如何使用注解完成登录拦截
# SpringMVC配置拦截器实现登录控制的方法
# springmvc拦截器登录验证示例
# SpringMVC拦截器实现登录认证
# 基于SpringMVC实现网页登录拦截
# 拦截器
# 都不
# 时就
# 时要
# 来实现
# 首页
# 跳到
# 用户登录
# 之都
# 大家多多
# 本例
# 完成了
# keywords
# expires
# cache
# control
# link
# stylesheet
# description
# title
相关文章:
C#怎么使用委托和事件 C# delegate与event编程方法
如何快速重置建站主机并恢复默认配置?
教程网站设计制作软件,怎么创建自己的一个网站?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
Python如何创建带属性的XML节点
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
黑客如何通过漏洞一步步攻陷网站服务器?
开源网站制作软件,开源网站什么意思?
网站制作员失业,怎样查看自己网站的注册者?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何彻底删除建站之星生成的Banner?
太平洋网站制作公司,网络用语太平洋是什么意思?
如何在宝塔面板中修改默认建站目录?
建站ABC备案流程中有哪些关键注意事项?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
如何用花生壳三步快速搭建专属网站?
音乐网站服务器如何优化API响应速度?
创业网站制作流程,创业网站可靠吗?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何用免费手机建站系统零基础打造专业网站?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何规划企业建站流程的关键步骤?
建站之星备案是否影响网站上线时间?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
定制建站如何定义?其核心优势是什么?
公司网站的制作公司,企业网站制作基本流程有哪些?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
C#如何在一个XML文件中查找并替换文本内容
如何快速完成中国万网建站详细流程?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何在Golang中使用replace替换模块_指定本地或远程路径
建站之星24小时客服电话如何获取?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何获取上海专业网站定制建站电话?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
C#怎么创建控制台应用 C# Console App项目创建方法
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何通过多用户协作模板快速搭建高效企业网站?
如何在新浪SAE免费搭建个人博客?
制作网站的模板软件,网站怎么建设?
建站之星下载版如何获取与安装?
制作网页的网站有哪些,电脑上怎么做网页?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
家庭建站与云服务器建站,如何选择更优?
C++时间戳转换成日期时间的步骤和示例代码
*请认真填写需求信息,我们会在24小时内与您取得联系。