全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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%>" 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 


相关文章: 大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  网站网页制作专业公司,怎样制作自己的网页?  建站之星导航菜单设置与功能模块配置全攻略  一键网站制作软件,义乌购一件代发流程?  微信h5制作网站有哪些,免费微信H5页面制作工具?  在线教育网站制作平台,山西立德教育官网?  如何破解联通资金短缺导致的基站建设难题?  如何在阿里云高效完成企业建站全流程?  宝塔新建站点为何无法访问?如何排查?  如何快速搭建FTP站点实现文件共享?  如何用y主机助手快速搭建网站?  家庭服务器如何搭建个人网站?  建站主机是否等同于虚拟主机?  Swift开发中switch语句值绑定模式  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  智能起名网站制作软件有哪些,制作logo的软件?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何通过远程VPS快速搭建个人网站?  Android自定义控件实现温度旋转按钮效果  建站之星如何快速更换网站模板?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  外贸公司网站制作哪家好,maersk船公司官网?  建站之星伪静态规则如何设置?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何设置并定期更换建站之星安全管理员密码?  PHP正则匹配日期和时间(时间戳转换)的实例代码  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何在IIS中配置站点IP、端口及主机头?  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星如何优化SEO以实现高效排名?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  金*站制作公司有哪些,金华教育集团官网?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  网站制作免费,什么网站能看正片电影?  常州自助建站工具推荐:低成本搭建与模板选择技巧  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  网页设计网站制作软件,microsoft office哪个可以创建网页?  ,购物网站怎么盈利呢?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何在IIS中新建站点并解决端口绑定冲突?  测试制作网站有哪些,测试性取向的权威测试或者网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  动图在线制作网站有哪些,滑动动图图集怎么做?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  宝塔建站教程:一键部署配置流程与SEO优化实战指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。