浏览 202 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-04-18
判断用户登录过,就不用登录,但是拦截器根本就没执行
xml文件 <struts> <!-- Configuration for the default package. --> <package name="sysaction" extends="struts-default" namespace="/sysaction"> <interceptors> <interceptor name="authentication" class="sysaction.LogonInterceptor" /> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authentication"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="myStack" /> <global-results> <result name="login">/sysjsp/first.jsp</result> </global-results> <action name="login" class="sysaction.loginaction" method="login"> <interceptor-ref name="paramsPrepareParamsStack" /> <result>/sysjsp/welcome.jsp</result> <result name="error">/sysjsp/error.jsp</result> </action> </package> </struts> action private String loginName;
private String passworld;
private Map session;
public void setSession(Map session) {
this.session = session;
}
public String login() throws Exception {
String username = loginName;
String mima = passworld;
SysuserImp sysuserImp = new SysuserImp();
List user;
user = sysuserImp.QuerySysuser(username, mima);//查询数据库中数据
if (user.size() != 0) {
Sysuser sysuser = (Sysuser) user.get(0);
String name = sysuser.getAdminName();
session.put("usersession", sysuser);
return this.SUCCESS;
} else {
return this.ERROR;
}
}
拦截器 public class LogonInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation ai) throws Exception {
Map session = ai.getInvocationContext().getSession();
Sysuser usersession = (Sysuser) session.get("usersession");
if (null !=usersession) {
return ai.invoke();
} else {
return Action.LOGIN;
}
}
}
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-04-18
把
<action name="login" class="sysaction.loginaction" method="login"> <interceptor-ref name="paramsPrepareParamsStack" /> <result>/sysjsp/welcome.jsp</result> <result name="error">/sysjsp/error.jsp</result> </action> 改成 <action name="login" class="sysaction.loginaction" method="login"> <result>/sysjsp/welcome.jsp</result> <result name="error">/sysjsp/error.jsp</result> </action> 试试。 但是这样的话,也有一个问题,就是你当前包下的所有action都会被LogonInterceptor 拦截。但登录操作如果在别的包下,也许就不是问题了。 下面是我的作法: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <interceptors> <interceptor name="authentication" class="com.leo.interceptor.LogonInterceptor" /> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authentication"></interceptor-ref> </interceptor-stack> </interceptors> <global-results> <result name="login">/error.jsp</result> </global-results> <action name="hello" class="com.leo.action.HelloAction"> <interceptor-ref name="myStack"/> <result>/index.jsp</result> </action> <action name="login" class="com.leo.action.LoginAction"> <result type="redirect-action"> <param name="actionName">hello</param> <param name="namespace">/</param> </result> </action> </package> </struts> hello是受保护的action, login是用来登录的,这样就可以达到预期目标,但实际真实代码我可能不会这么写,这里仅仅是说明。 |
|
| 返回顶楼 | |




