1.在拦截器中获得用户登录的session
在LoginCheckInterceptor中extends AbstractInterceptor
package com.jsu.struts2.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginCheckInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx=invocation.getInvocationContext();
String flag =(String)ctx.getContext().getSession().get("flag");
if("ok".equals(flag)){
System.out.println("已登录、、、");
return invocation.invoke();
}else{
//提示信息,可以通过key值在页面获取
ctx.put("err_msg", "对不起,你还木有登录,请先登录");
return "error";
}
}
}
2.在LoginAction中
package com.jsu.struts2.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
@Override
public String execute() throws Exception {
ActionContext.getContext().getSession().put("flag", "ok");
System.out.println("OK");
System.out.println(" Action Execute...");
return SUCCESS;
}
}
3.在OrderAction中extends ActionSupport
package com.jsu.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class OrderAction extends ActionSupport{
@Override
public String execute(){
System.out.println("开始下订单、、、");
return SUCCESS;
}
}
4.在error.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> </head>
<body>
Error ${err_msg} <br>
</body>
</html>
5.在struts.xml文件中配置
<struts>
<package name="loginDemo" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myint1" class="com.jsu.struts2.interceptor.LoginCheckInterceptor"> </interceptor>
<action name="login" class="com.jsu.struts2.action.LoginAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<result>/index.jsp</result>
</action>
<action name="order" class="com.jsu.struts2.action.OrderAction">
<interceptor-ref name="myint1"></interceptor-ref>
<result name="success">/index.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
6.在地址栏发请求
1.http://localhost:8080/struts2_04/order error.jsp页面输出:你还没有登录,请先登录
2.先输入http://localhost:8080/struts2_04/login 控制台输出登录成功
在输入http://localhost:8080/struts2_04/order 控制台输出开始下订单、、、