功能:
发一个Struts2应用程序,允许用户在在线调查表中注册。仅当用户已访问条款页面并接受其中的条款时才会显示注册页面。如果用户拒绝接受条款,则转向用户显示首页。如果用户单击注册页面上的“提交”按钮,则应向他显示欢迎页面。用户应该能够从欢迎页面转至首页,然后从首页访问注册页面。
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class Interceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// 获取action中的session方法
Object object= ActionContext.getContext().getSession().get("ss");
// 判断object是否为空
if(object==null){
// 如果object为空 返回error 返回错误页面
return "error";
}else{
// 如果object不为空 返回arg0 执行目标方法 (注册页面)
return arg0.invoke();
}
}
}
创建ReadAction
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ReadAction extends ActionSupport{
@Override
public String execute() throws Exception {
// 把ss存进session中
ActionContext.getContext().getSession().put("ss", true);
return SUCCESS;
}
}
创建进入注册页面的RegisterAction
package action;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport {
@Override
public String execute()throws Exception{
return SUCCESS;
}
}
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="hello" namespace="/hello" extends="struts-default">
<!-- 拦截器 判断是否点击阅读 条款 -->
<interceptors >
<interceptor name="xxx" class="action.Interceptor">
</interceptor>
</interceptors>
<action name="register" class="action.RegisterAction">
<!-- 拦截器 -->
<interceptor-ref name="xxx"></interceptor-ref>
<result name="success">
/enroll.jsp
</result>
<result name="error">/terms.jsp</result>
</action>
<action name="read" class="action.ReadAction">
<result name="success">
/enroll.jsp
</result>
<result name="error">/terms.jsp</result>
</action>
</package>
</struts>
运行效果: