博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2自己定义拦截器实例—登陆权限验证
阅读量:5151 次
发布时间:2019-06-13

本文共 4787 字,大约阅读时间需要 15 分钟。

版本号: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/4077828.html

你可能感兴趣的文章
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
list control控件的一些操作
查看>>
判断字符串在字符串中
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
实验四2
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
在js在添版本号
查看>>
sublime3
查看>>