struts2实现登录session验证问题_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > struts2实现登录session验证问题

struts2实现登录session验证问题

 2012/3/22 12:52:24  nbas123126com  程序员俱乐部  我要评论(0)
  • 摘要:首先在index.jsp页面登录:<formaction="itcsss"method="post"><inputtype="text"name="username"/><br><inputtype="password"name="password"/><br><inputtype="submit"value="login"/></form>然后是action中方法(HelloWorldAction)
  • 标签:实现 问题 struts
首先在index.jsp页面登录:
<form action="itcsss" method="post">
   <input type="text" name="username" />
   <br>
   <input type="password" name="password"/>
   <br>
   <input type="submit" value="login"/>
   </form>
然后是action中方法(HelloWorldAction):
public String execute()
      {
System.out.println("****************");
message = "这是我的第一个jsp页面!";

if(username.length()>0)
{
//此处可以通过查询数据库来判断用户是否可以登录
System.out.println("username isd:"+username);
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("loginuser", username);
      return "success";
}
else
{
    return "error";
}
      }
保存登录信息。
配置文件:struts.xml
<struts>
<!-- 用户登录的action -->
<package name="strut-login" extends="struts-default">
<global-results>
<result name="error">/index.jsp</result>
</global-results>

<action name="itcsss" class="cn.itcast.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
<!-- 使用拦截器拦截非法登录的用户 -->
<package name="struts2"  extends="struts-default" >
<interceptors>
<interceptor class="cn.itcast.indeptor.AuthorityInterceptor" name="authority"/>
<interceptor-stack name="mydefault">
<!--配置默认的拦截器 -->
<interceptor-ref name="defaultStack"/>
<!--配置自定义的拦截器-->
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" /><!-- 全局拦截 -->

<global-results>
<result name="error">/index.jsp</result>
</global-results>

<action name="go" class="cn.itcast.action.HelloWorldAction" method="go">
<!-- interceptor-ref name="mydefault">
<param name="excludeMethods">go</param>
</interceptor-ref-->
<result name="success">/WEB-INF/page/MyJsp.jsp</result>
</action>
</package>
</struts>
拦截该方法:
public String go()
{
return "success";
}
判断session里时候有用户的登录信息,如果没有就跳转到登录页面。拦截器的实现:
package cn.itcast.indeptor;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthorityInterceptor extends AbstractInterceptor {

@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
ActionContext ctx = invocation.getInvocationContext();
Map<String,Object> session = ctx.getSession();
String username = (String)session.get("loginuser");//获取用户登录的信息,从session中获取
if(username==""||username==null)
return "error";//跳转到登录页面
//如果session中有登录的信息,就继续执行action中的方法
return invocation.invoke(); //如果有权限就执行Action
}

}
发表评论
用户名: 匿名