public class MyInterceptor implements Interceptor{
public void destroy() {
}
public void init() {
System.out.println("拦截器已经成功初始化。。。。。");
}
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("对象"+actionInvocation);
//Action是谁
Object action = actionInvocation.getAction();
System.out.println("action======"+action);
String value;
//判定session里面key值对应的value是否存在
Map<String,Object> session= ActionContext.getContext().getSession();
Object name = session.get("uname");
String actionName = actionInvocation.getProxy().getActionName();
actionInvocation.getProxy().getNamespace();//user
System.out.println("actionName====="+actionName);
if(actionName.equals("login")){
System.out.println("=============Action是Login");
//user/login.acton
value=actionInvocation.invoke();
}else if(name!=null){
//已经登录了 放行
value=actionInvocation.invoke();
String method = actionInvocation.getProxy().getMethod();
System.out.println("方法"+method);
}else{
//走到这个else,证明你访问的Action,既不是登录,也不是被授权访问的操作
value="login";
}
System.out.println("逻辑视图名"+value);
return value;
}
}
public class LoginAction implements Action{
private UserInfo user;
public String execute() throws Exception {
Map<String,Object> session= ActionContext.getContext().getSession();
if(user!=null){
if(user.getUsername().equals("1")&&user.getPassword().equals("1")){
//记录session
session.put("uname",user.getUsername());
return SUCCESS;
}else{
return LOGIN;
}
}else{
//不是从页面过来的
if(session!=null&&session.get("uname")!=null){
return "success";
}else{
System.out.println("Action中的自定义代码");
return "login";
}
}
}
public UserInfo getUser() {
return user;
}
public void setUser(UserInfo user) {
this.user = user;
}
}
public class BookAction implements Action{
public String execute() throws Exception {
System.out.println("bookaction");
return SUCCESS;
}
}
主配置文件中
<!--拦截器-->
<interceptors>
<interceptor name="myInter" class="cn.happy.day07Interceptor.Interceptor.MyInterceptor"></interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myInter"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<default-action-ref name="first">/WEB-INF/myinter/login.jsp</default-action-ref>
<!--<global-results>
<result name="login"></result>
</global-results>
--><!-- 或者value="login";-->
<action name="first"></action>
附配置文件中
<?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>
<constant name="struts.devMode" value="true"></constant>
<package name="day07" namespace="/" extends="default">
<action name="login" class="cn.happy.day07Interceptor.action.LoginAction">
<result name="success">/WEB-INF/myinter/success.jsp</result>
<result name="login">/WEB-INF/myinter/login.jsp</result><!-- value="login";-->
</action>
<action name="book" class="cn.happy.day07Interceptor.action.BookAction">
<result name="success">/WEB-INF/myinter/booksuccess.jsp</result>
</action>
</package>
</struts>