JAVA中队用户日志的调用是怎么实现的?

发布网友 发布时间:1天前

我来回答

1个回答

热心网友 时间:19小时前

使用拦截用户的每一步操作。
首先是 actions 包里的类 (2个 action ,一个)

1.CheckLoginInterceptor

Java代码

/*************************************************
@Copyright (C), 2008, lzpeng
@File name: CheckLoginInterceptor.java
@Author: lzpeng
@CreateDate: 2008-6-17
@Description: CheckLoginInterceptor
@Extends: AbstractInterceptor

@Function List:
1. public String intercept()
*************************************************/

package cn.com.lzpeng.actions;

import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class CheckLoginInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = 1L;
public static final String USER_SESSION_KEY="user";

@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("begin check login interceptor");

// 对LoginAction不做该项拦截
Object action = actionInvocation.getAction();
if (action instanceof LoginAction) {
System.out
.println("exit check login, because this is login action.");
return actionInvocation.invoke();
}
// 验证 session
Map session = actionInvocation.getInvocationContext().getSession();
String username = (String) session.get(USER_SESSION_KEY);

if (username != null) {
// 存在的情况下进行后续操作。
System.out.println(username+" already login!");
return actionInvocation.invoke();
} else {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");

return Action.LOGIN;

}

}

}
/*************************************************
@Copyright (C), 2008, lzpeng
@File name: CheckLoginInterceptor.java
@Author: lzpeng
@CreateDate: 2008-6-17
@Description: CheckLoginInterceptor
@Extends: AbstractInterceptor

@Function List:
1. public String intercept()
*************************************************/

package cn.com.lzpeng.actions;

import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class CheckLoginInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = 1L;
public static final String USER_SESSION_KEY="user";

@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("begin check login interceptor");

// 对LoginAction不做该项拦截
Object action = actionInvocation.getAction();
if (action instanceof LoginAction) {
System.out
.println("exit check login, because this is login action.");
return actionInvocation.invoke();
}
// 验证 session
Map session = actionInvocation.getInvocationContext().getSession();
String username = (String) session.get(USER_SESSION_KEY);

if (username != null) {
// 存在的情况下进行后续操作。
System.out.println(username+" already login!");
return actionInvocation.invoke();
} else {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");

return Action.LOGIN;

}

}

}
struts.xml
Java代码
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<!-- 加载默认的 struts2 配置文件 -->
<include file="struts-default.xml" />
<!-- 继承默认的 struts2 配置文件 -->
<package name="default" extends="struts-default">
<!-- 定义一个名为 checkLogin 的 -->
<interceptors>
<!-- 定义权限检查 -->
<interceptor name="checkLogin"
class="cn.com.lzpeng.actions.CheckLoginInterceptor" />
<!-- 定义一个包含权限检查的栈 -->
<interceptor-stack name="myDefaultStack">
<!-- 定义栈包含checkLogin -->
<interceptor-ref name="checkLogin"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 设置全局 全局默认的栈-->
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>

<!-- 定义全局Result -->
<global-results>
<!-- 当返回login视图名时,转入/login.jsp页面 -->
<result name="login">/login.jsp</result>
</global-results>

<!--
action 标签里 name属性代表我们要处理的.action的前面部分
action 标签里 class属性代表我们需要哪个类来处理
result 标签的 name属性代表action类的执行方法的返回值,
action类的默认执行方法是public String execute()
-->
<action name="login"
class="cn.com.lzpeng.actions.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
<result name="login">login.jsp</result>
<!--一般配置在 result 元素之后 -->
<interceptor-ref name="myDefaultStack" />
</action>

<action name="testInterceptor"
class="cn.com.lzpeng.actions.TestInterceptorAction">
<result name="success">content.jsp</result>
<result name="login">login.jsp</result>
</action>

</package>
</struts>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com