实现一个登陆权限验证的功能

message.jsp:

 <body>
message:${message }
</body>

login.jsp:

<%
request.getSession().setAttribute("user", "tom");
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
成功登录!
</body>
</html>

Action:

public class MainAction {

	private String message;
public String mainPage(){
message="welcome you!";
return "message";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
} }

拦截器:

public class PermissionsInterceptor implements Interceptor  {
private static final long serialVersionUID = 1L; @Override
public String intercept(ActionInvocation invocation) throws Exception {
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null){
return invocation.invoke();
}else{
ActionContext.getContext().put("message", "你没有权限制执行该操作!");
return "message";
}
} @Override
public void destroy() {
} @Override
public void init() {
}
}

Struts.xml:

<struts>
<constant name="struts.118n.encoding" value="UTF-8"></constant>
<constant name="struts.action.extension" value="do"></constant>
<package name="mainPackage" namespace="/cn" extends="struts-default">
<interceptors>
<interceptor name="permissions" class="cn.interceptor.PermissionsInterceptor" />
<interceptor-stack name="permissionsStack">
<!-- defaultStack 系统默认拦截器,在执行自定认拦截器之前必须加入系统默认拦截器,否则系统默认拦截器无法使用 -->
<interceptor-ref name="defaultStack" />
<interceptor-ref name="permissions" />
</interceptor-stack>
</interceptors>
<!-- 默认拦截器,程序内的所有Action都被拦截器拦截到 如果Action内又引入新的拦截器,此拦截器将被覆盖 -->
<!-- <default-interceptor-ref name="permissionsStack"></default-interceptor-ref> -->
<global-results>
<result name="message">/WEB-INF/message.jsp</result>
</global-results>
<action name="main_*" class="cn.actions.MainAction" method="{1}">
<interceptor-ref name="permissionsStack" />
</action>
</package>
</struts>

当用户没有访问login.jsp为Session添加User时,访问(http://localhost:9000/Struts4/cn/main_mainPage.do),被拦截器拦截到,报出”你没有权限制执行该操作!“的错误;

当用户执行过login.sjp以后显示”welcom you!“

Struts2 自定义拦截器实例—登陆权限验证的更多相关文章

  1. Struts2自定义拦截器实例—登陆权限验证

    版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...

  2. Struts2自己定义拦截器实例—登陆权限验证

    版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回 ...

  3. struts2自定义拦截器 设置session并跳转

    实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆. 为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成1分钟 修改web.xml view plainco ...

  4. Struts2自定义拦截器Interceptor以及拦截器登录实例

    1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...

  5. JavaWeb -- Struts 自定义拦截器, 登录权限拦截

    1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...

  6. 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】

    一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...

  7. Struts2自定义拦截器——完整实例代码

    比如一个网上论坛过滤系统,将网友发表的不文明.不和谐的语言,通过拦截器对这些文字进行自动替代. 该项目包含: 1.自定义拦截器(MyInterceptor.java) 2.发表评论的页面(news.j ...

  8. Struts2 自定义拦截器

    自定义拦截器(权限管理),包含了对ajax和表单请求的拦截 package com.interceptor; import java.io.IOException; import java.io.Pr ...

  9. 12.Struts2自定义拦截器

    12.自定义拦截器        拦截器是Struts2的一个重要特性.因为Struts2的大多数核心功能都是通过拦截器实现的. 拦截器之所以称之为“拦截器”,是因为它可以拦截Action方法的执行, ...

随机推荐

  1. mobile端

    1.技术解决方案--------->(widget/event/ajax)->function->data------>XMLHttpRequest----->Serve ...

  2. 李维作答 《insideVCL》——李维实在很勤奋,而且勇于突破,从不以旧的内容充数

    (编者按)<Inside VCL(VCL核心架构剖析)>一书出版以来,众多热心读者给李维先生.博文视点公司.CSDN写来信件,有更多朋友在各个论坛上发表关于该书的言论.读者们不但盛赞该书, ...

  3. 命令行解释器(shell)

    unix> ./hello hello world unix> ll 显示当前目录下文件信息. shell为命令行解释器,第一个单词可以是内置的外壳命令,也可以是一个可执行文件名.

  4. openstack 使用cloud init 和 console-log, nbd或者libguestfs 获取VM中的硬件信息。

    以获取PCI的信息为例. 基本代码: pci.py import base64 import guestfs from functools import partial import os impor ...

  5. they're hiring

    Gather Health ⋅ Careers Careers at Gather

  6. Redis 实践笔记

    本文来自:http://www.cnblogs.com/me-sa/archive/2012/03/13/redis-in-action.html 最近在项目中实践了一下Redis,过程中遇到并解决了 ...

  7. 使用工具来提升Android开发效率

    正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,能够让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包含:开发工具.监測工具.第三方代码库等. ...

  8. HDU 1757 A Simple Math Problem(矩阵高速幂)

    题目地址:HDU 1757 最终会构造矩阵了.事实上也不难,仅仅怪自己笨..= =! f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 ...

  9. C#中按指定质量保存图片的实例代码 24位深度

     /// <summary>        /// 按指定的压缩质量及格式保存图片(微软的Image.Save方法保存到图片压缩质量为75)        /// </summary ...

  10. Java基础笔记-异常总结,包

    异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建 ...