版本号:struts2.1.6

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

代码例如以下:

一、页面

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>yuewei'Login</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> </head> <body> <form action="login.action" method="post"> User:<input type="text" name="username"><br> Passoword:<input type="password" name="password"><br> <input type="submit" value="submit"> </form> </body> </html>

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title> yuewei's Welcome</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> </head> <body> <h1>登录成功后显示此页面</h1> <a href="show.action" mce_href="show.action">show</a> </body> </html>

show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>yuewei's Show</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> </head> <body> Show This Page 登录后运行此页面<br> </body> </html>

二、Action

LoginFormAction

package com.ywjava.action; import com.opensymphony.xwork2.ActionSupport; public class LoginFormAction extends ActionSupport { public String exexcute() { return "success"; } }

LoginAction

package com.ywjava.action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.ywjava.utils.Constants; public class LoginAction extends ActionSupport{ private String username; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } private boolean isInvalid(String value) { return (value == null || value.length() == 0); } public String execute(){ System.out.println(username); System.out.println(password); if (isInvalid(getUsername())) return INPUT; if (isInvalid(getPassword())) return INPUT; if(this.getUsername().equals("yuewei")&& this.getPassword().equals("yuewei")){ ActionContext.getContext().getSession().put(Constants.USER_SESSION,getUsername()); ActionContext.getContext().getSession().put(Constants.PASS,getPassword()); return "success"; } return "error"; } }

ShowAction

package com.ywjava.action; import com.opensymphony.xwork2.ActionSupport; public class ShowAction extends ActionSupport { public String execute() { return "success"; } }

三、拦截器

package com.ywjava.interceptot; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.ywjava.utils.Constants; public class LoginInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { // 取得请求相关的ActionContext实例 ActionContext ctx = invocation.getInvocationContext(); Map session = ctx.getSession(); String user = (String) session.get(Constants.USER_SESSION); // 假设没有登陆,或者登陆全部的username不是yuewei,都返回又一次登陆 if (user != null && user.equals("yuewei")) { System.out.println("test"); return invocation.invoke(); } ctx.put("tip", "你还没有登录"); return Action.LOGIN; } }

四 struts.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="authority" extends="struts-default"> <!-- 定义一个拦截器 --> <interceptors> <interceptor name="authority" class="com.ywjava.interceptot.LoginInterceptor"> </interceptor> <!-- 拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <!-- 定义全局Result --> <global-results> <!-- 当返回login视图名时,转入/login.jsp页面 --> <result name="login">/login.jsp</result> </global-results> <action name="loginform" class="com.ywjava.action.LoginFormAction"> <result name="success">/login.jsp</result> </action> <action name="login" class="com.ywjava.action.LoginAction"> <result name="success">/welcome.jsp</result> <result name="error">/login.jsp</result> <result name="input">/login.jsp</result> </action> <action name="show" class="com.ywjava.action.ShowAction"> <result name="success">/show.jsp</result> <!-- 使用此拦截器 --> <interceptor-ref name="mydefault" /> </action> </package> </struts>

转载于:https://www.cnblogs.com/mfrbuaa/p/3961288.html

Struts2自己定义拦截器实例—登陆权限验证相关推荐

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

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

  2. struts2如何使用拦截器进行用户权限控制

    大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用struts2中的拦截器来实现. 下面通过一个简单的Demo ...

  3. 拦截器,利用拦截器进行登陆权限控制

    拦截器,登录权限控制demo 1. 拦截器demo 2. 登录权限控制 地址: https://github.com/sevenyoungairye/spring-mvc-interceptor 1. ...

  4. struts2综合例子--------拦截器(登陆检查,日志记录),校验validate,

    列表Action package he.action;import he.dao.UserDAO;import java.sql.SQLException; import java.util.Link ...

  5. struts2开发4--自定义拦截器把不文明用语改变成***

    struts2拦截器是在访问某个Action或者Action的某个方法.字段之前或者之后实施拦截,并且struts2拦截器是可插拔的,拦截器是AOP的一种实现.这里重点介绍下自定义文字过滤拦截器,把我 ...

  6. Struct2_定义拦截器并使用注解方式作用在Action的方法中

    一.目的:通过在方法上加注解控制哪些方法需要登陆后才能访问 二.方式:利用拦截器判断用户是否登陆   三.实现步骤 定义配置文件 struts.xml添加节点 1 2 3 4 5 6 7 8 9 10 ...

  7. Struts2--自定义拦截器三种方式(实现Interceptor接口、继承抽象类AbstractInterceptor、继承MethodFilterInterceptor)

    实现自定义拦截器 在实际的项目开发中,虽然 Struts2 的内建拦截器可以完成大部分的拦截任务,但是,一些与系统逻辑相关的通用功能(如权限的控制和用户登录控制等),则需要通过自定义拦截器实现.本节将 ...

  8. Struts2内置拦截器和自定义拦截器

    内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常 ...

  9. Struts2框架之拦截器

    1:拦截器类似web过滤器,在action执行之前或者执行之后去取一些操作 2:拦截器栈就是递归调用 strust2的工作流程: 客户端通过HttpServletRequest向Tomcat容器发送请 ...

最新文章

  1. 2017/11/3模拟赛
  2. php txt,PHP规范TXT文件
  3. 大杂烩, 硬盘安装Linux
  4. SAP云平台上的Low Code Development(低代码开发)解决方案
  5. 远控免杀专题7 ---shellter免杀
  6. [国嵌笔记][036][关闭MMU和CACHE]
  7. Android开发 更改返回button的图标
  8. 韩顺平php视频笔记48 函数进阶
  9. Python学习手册之内部方法、操作符重载和对象生命周期
  10. 分享17个网页设计中字体排版的优秀示例
  11. 黄聪:Loopup集合类笔记
  12. 正则表达式 —— 括号与特殊字符
  13. 带有书签的Android WebView
  14. test luasql's postgresql driver performance (not better than pgbench)
  15. 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。
  16. 浅谈csdn写博客几年来的感受———已结题
  17. java绘图-常用条形码类型组成及使用说明
  18. ios第3天的气泡作业
  19. 台式计算机默认关机变注销,win10系统关机变注销的解决方案
  20. excel如何把多张表合并成一个表_如何将多个excel文件合并成一个文件-多个excel文件合并成一个excel表的方法 - 河东软件园...

热门文章

  1. 《蘑菇街编程题》回文串
  2. 实际编程题----CT扫描
  3. java 字符串缓冲池 String缓冲池
  4. js中的generator
  5. RxJava 2.x 教程
  6. 《深入理解Elasticsearch》读书笔记
  7. docker镜像、容器以及命令操作
  8. 洛谷P3296 刺客信条
  9. OSGI嵌入jetty应用服务器
  10. Linux内核很吊之 module_init解析 (下)【转】