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

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. tomcat------https单向认证和双向认证

     一.https分为单向认证和双向认证: 单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己 ...

  2. KeyEvent

    http://blog.csdn.net/elfylin/article/details/8008763 一. 接口KeyEvent.Callback和View.OnKeyListener 二. 流程 ...

  3. 反调试技术(Delphi版)

    1.程序窗口句柄检测原理:用FindWindow函数查找具有相同窗口类名和标题的窗口,如果找到就说明有OD在运行//****************************************** ...

  4. COCI 2015/2016 Day 8 PROKLETNIK

    PROKLETNIK 题目描述:给出\(n\)个数,定义一段连续的数为魔法串是该区间的左右端点值正好是区间的最小值与最大值(最小值可以在左也可以在右,最大值也一样).\(Q\)个询问,每次询问一个区间 ...

  5. boost::asio 使用 libcurl

    curl 使用 asio 的官方样例 http://curl.haxx.se/libcurl/c/asiohiper.html, 但这个例子用起来有很明细的 bug,asio 异步IO 只注册一次,也 ...

  6. cdoj 491 Tricks in Bits

    //无脑爆居然能过!!!!! 解:其实正解也是暴力,但是可以证明在n>6时答案一定为零. 第一步:对于任意两个数他们的二进制数要么有一半+的位是相同的,要么有一半+的位是不同的,于是首先使用与运 ...

  7. HDOJ-1007 Quoit Design(最近点对问题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 给出n个玩具(抽象为点)的坐标 求套圈的半径 要求最多只能套到一个玩具 实际就是要求最近的两个坐标的距离 ...

  8. Stackoverflow上人气最旺的10个Java问题(转ImportNew)

    本文转自:http://www.importnew.com/16841.html 写的确实太好了 1.为什么两个(1927年)时间相减得到一个奇怪的结果? 如果执行下面的程序,程序解析两个间隔1秒的日 ...

  9. 将常见对象转换成json字符串

    public class JsonUtil { public static String objectTojson(Object obj) { StringBuilder json = new Str ...

  10. 【csdn】文章很好 - system函数遇到的问题

    system函数遇到的问题http://blog.csdn.net/yangzhenzhen/article/details/51505176