登录的实现以及sessionout

完成的功能:

1,登录验证,用户和密码不匹配的时候返回。

2,session值有效时间为3个小时。

3,不登陆想直接进入页面的时候,提示登录,并跳转到首登录页面。


具体实现:

1,登录验证。

登录jsp页面一般的form表单,并有js执行空的检查。

提交action,java代码。成功跳转到新的页面,非成功,返回,并传入错误的提示。

2,session值的设定。

登录的时候将值保存到session中

		Map session=ActionContext.getContext().getSession();
		session.put("users", users);
users是一个bean对象,users包含想要存入的用户名,密码,类型等信息。

退出的时候,释放掉session值

		Map session = (Map)ActionContext.getContext().getSession();
		session.clear();
设置session的有效时间。在web.xml里配置如下:

	<session-config>
 		<session-timeout>180</session-timeout>
 	</session-config>
3,session为空的时候,直接跳转到登录首页。

设置拦截器,拦截各个action。注意,拦截器是不能够拦截jsp页面的。

在struts.xml里面配置如下:(每个package里面都需要加入拦截,拦截器的名字mydefault)

	<interceptors>  
            	<interceptor name="sessionout"  class="com.SessionInterceptor"></interceptor>  
           	 <!-- 拦截器栈 -->  
            	<interceptor-stack name="mydefault">  
            	    <interceptor-ref name="defaultStack" />  
                	<interceptor-ref name="sessionout"/>  
            	</interceptor-stack>  
  	</interceptors>  
  	<global-results>
   		<result name="login" type="redirect">/login/skip.jsp</result>
  	</global-results>
每个方法名下面都有:

 	    <action name="exit" class="login.action.exitAction" method="exit">  
	            <result name="success">/JSP/login.jsp</result> 
	            <interceptor-ref name="mydefault" />   	//这里是关键
	    </action>
以上信息也就是,每次调用action的时候,都会去调用拦截器mydefault,调用class=com.SessionInterceptor

package com;
import java.util.Map;

import bean.Users;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import login.action.loginAction;
//import com.ywjava.utils.Constants;
@SuppressWarnings("serial")
public class SessionInterceptor extends AbstractInterceptor {
 @SuppressWarnings("unchecked")
@Override
 public String intercept(ActionInvocation actionInvocation) throws Exception {
  ActionContext ctx = ActionContext.getContext();
  Map session = ctx.getSession();
  Action action = (Action) actionInvocation.getAction();
  
  if (action instanceof loginAction) {   //如果此时是loginAction,也就是我们的登录action,则直接执行action
   return actionInvocation.invoke();
  }

  Users user = (Users)session.get("users");
  if (user == null) {                      //如果user是空的,则跳转到login.action。login.action是全局action,在拦截器下面有配置。完成跳转到一个页面,提示							//请登录的信息,同时跳到登录首页
   return Action.LOGIN;
  } else {
   return actionInvocation.invoke();        //其他的情况,正常跳转
  }
 }
}










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值