自定义struts2.xml中需要定义interceptors和全局结果集:
<interceptors> <interceptor name="login"
class="com.itbbs.filter.LoginFilter"></interceptor>
<interceptor-stack name="loginStack"> <interceptor-ref
name="login"></interceptor-ref> <interceptor-ref
name="defaultStack"></interceptor-ref> </interceptor-stack>
</interceptors> <default-interceptor-ref
name="loginStack"></default-interceptor-ref> <global-results> <result
name="error">/error.jsp</result> <result
name="login">/login/login.jsp</result> </global-results>
<global-exception-mappings> <exception-mapping
exception="java.lang.Exception" result="error" />
</global-exception-mappings>
LoginFilter类:
package com.itbbs.filter;
import java.util.Map;
import com.itbbs.action.LoginAction;
import com.itbbs.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginFilter extends AbstractInterceptor {
private static final long serialVersionUID = -7991337791474434519L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
if (action instanceof LoginAction) {
return invocation.invoke();
}
Map<String, Object> session = invocation.getInvocationContext()
.getSession();
User user = (User) session.get("user");
if (null == user) {
session.put("msg", "please login.");
return Action.LOGIN;
}
return invocation.invoke();
}
}