<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <constant name="struts.devMode" value="true" />
    <package name="struts-shop" extends="struts-default">
        <interceptors>
        <!-- 定义权限控制拦截器 -->
        <interceptor name="authority" class="com.ccniit.bookshop.action.CheckInterceptor"/>
        </interceptors>
        <!-- 定义全局处理结果 -->
        <global-results>
        <!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
        <result name="login">/manger/mangerLogin/mangerLogin.jsp</result>
        <result name="error">/manger/mangerData/predomError.jsp</result>
        </global-results>
    </package>
<package name="users" extends="struts-shop">
        <action name="user" class="com.ccniit.bookshop.action.UserAction">
            <result name="loginIn">/userLogin/loginin.jsp</result>
            <result name="loginLost">/index.jsp</result>
            <result name="addUser">/userLogin/loginin.jsp</result>
            <result name="addUserLost">/regist.jsp</result>
            <result name="modifyPasdView">/modifyUser/changpasd.jsp</result>
            <result name="modifyPasd">/modifyUser/changpasd.jsp</result>
            <result name="modifyData">/modifyUser/userdata.jsp</result>
            <result name="userData">/modifyUser/userdata.jsp</result>
            <result name="modifyUser">/modifyUser/changdata.jsp</result>
        </action>
        <action name="mangerUser" class="com.ccniit.bookshop.action.MangerAction">
         <result name="deleteUsers">/manger/mangerUser/mangerUser.jsp</result>
         <result name="userList">/manger/mangerUser/mangerUser.jsp</result>
         <result name="modifyPasd">/manger/mangerData/changeMpasd.jsp</result>
         <result name="modifyPasdView">/manger/mangerData/changeMpasd.jsp</result>
         <result name="modifyMData">/manger/mangerData/mangerData.jsp</result>
         <result name="modifyMDataView">/manger/mangerData/changeMdata.jsp</result>
         <result name="mangerData">/manger/mangerData/mangerData.jsp</result>
        <result name="mangerLogin">/manger/mangerLogin/mangerLoginin.jsp</result>
        <result name="mangerLoginLost">/manger/mangerLogin/mangerLogin.jsp</result>
        </action>
    </package>
<package name="books" extends="struts-shop">
        <action name="book" class="com.ccniit.bookshop.action.BookAction">
            <result name="list">/bookshop_btn.jsp</result>
            <result name="listin">/userLogin/bookshop_btn.jsp</result>
            <result name="bookData">/bookData/bookData.jsp</result>
            <result name="bookDatain">/bookData/bookDatain.jsp</result>
            <result name="searchBook">/searchBook/searchBook.jsp</result>
            <result name="searchBookin">/searchBook/searchBookin.jsp</result>
        </action>
        <action name="mangerBook" class="com.ccniit.bookshop.action.BookAction">
         <result name="addBook">/manger/mangerBook/mangerBook.jsp</result>
         <result name="modifyBook">/manger/mangerBook/mangerBook.jsp</result>
         <result name="deleteBooks">/manger/mangerBook/mangerBook.jsp</result>
            <result name="modifyView">/manger/mangerBook/modifyBook.jsp</result>
            <result name="list">/manger/mangerBook/mangerBook.jsp</result>
            <result name="listM">/manger/mangerLogin/bookshop_btn.jsp</result>
        </action>
    </package>
    <package name="comments" extends="struts-shop">
        <action name="comment" class="com.ccniit.bookshop.action.CommentAction">
         <result name="list">/bookData/comments.jsp</result>
            <result name="addComment">/bookData/bookDatain.jsp</result>
        </action>
    </package>
    <package name="buys" extends="struts-shop">
        <action name="buy" class="com.ccniit.bookshop.action.BuyAction">
            <result name="list">/buy/buy.jsp</result>
            <result name="addBuy">/buy/addCart.jsp</result>
            <result name="buyLost">/buy/addCart.jsp</result>
            <result name="addBuyView">/buy/addCart.jsp</result>
            <result name="openOrder">/order/openOrder.jsp</result>
        </action>
        <action name="mangerBuy" class="com.ccniit.bookshop.action.BuyAction">
            <result name="openOrder">/manger/mangerOrder/openOrder.jsp</result>
        </action>
    </package>
    <package name="orders" extends="struts-shop">
        <action name="order" class="com.ccniit.bookshop.action.OrderAction">
            <result name="list">/order/order.jsp</result>
            <result name="addOrder">/order/order.jsp</result>
        </action>
        <action name="mangerOrder" class="com.ccniit.bookshop.action.OrderAction">
            <result name="mangerOrders">/manger/mangerOrder/mangerOrder.jsp</result>
        </action>
    </package>
    <package name="predoms" extends="struts-shop">
        <action name="mangerPredom" class="com.ccniit.bookshop.action.PredomAction">
            <result name="appointPredom">/manger/mangerPredom/mangerPredom.jsp</result>
        </action>
    </package>
    <package name="userGroups" extends="struts-shop">
        <action name="mangerUserGroup" class="com.ccniit.bookshop.action.UserGroupAction">
            <result name="list">/manger/mangerPredom/mangerPredom.jsp</result>
            <result name="appointUser">/manger/mangerUsergroup/mangerUserGroup.jsp</result>
            <result name="modifyView">/manger/mangerUsergroup/openModifyUserGroup.jsp</result>
            <result name="modifyUserGroup">/manger/mangerPredom/mangerPredom.jsp</result>
            <result name="deleteUserGroup">/manger/mangerUsergroup/mangerUserGroup.jsp</result>
            <result name="addUserGroup">/manger/mangerUsergroup/mangerUserGroup.jsp</result>
            <result name="userGroups">/manger/mangerUsergroup/mangerUserGroup.jsp</result>
            <result name="userGroupDetail">/manger/mangerUsergroup/openUserGroupDetail.jsp</result>
            <result name="openAppointUserView">/manger/mangerUsergroup/openAppointUser.jsp</result>
            
            <!-- 使用拦截器 -->
            <interceptor-ref name="defaultStack"/>
            <interceptor-ref name="authority"/>
        </action>
    </package>
    <package name="functions" extends="struts-shop">
        <action name="mangerFunction" class="com.ccniit.bookshop.action.FunctionAction">
            <result name="list">/manger/mangerPredom/openappointPredom.jsp</result>
            <result name="deleteFunction">/manger/mangerFunction/mangerFunction.jsp</result>
            <result name="modifyFunction">/manger/mangerFunction/mangerFunction.jsp</result>
            <result name="modifyView">/manger/mangerFunction/openModifyFunction.jsp</result>
            <result name="addFunction">/manger/mangerFunction/mangerFunction.jsp</result>
            <result name="functions">/manger/mangerFunction/mangerFunction.jsp</result>
        </action>
    </package>
    <package name="bookTypes" extends="struts-shop">
        <action name="bookType" class="com.ccniit.bookshop.action.BookTypeAction">
            <result name="bookType1">/bookType/bookType1.jsp</result>
            <result name="bookType2">/bookType/bookType2.jsp</result>
            <result name="bookType3">/bookType/bookType3.jsp</result>
            <result name="bookType4">/bookType/bookType4.jsp</result>
            <result name="bookType5">/bookType/bookType5.jsp</result>
            <result name="bookType1in">/bookType/bookType1in.jsp</result>
            <result name="bookType2in">/bookType/bookType2in.jsp</result>
            <result name="bookType3in">/bookType/bookType3in.jsp</result>
            <result name="bookType4in">/bookType/bookType4in.jsp</result>
            <result name="bookType5in">/bookType/bookType5in.jsp</result>
        </action>
    </package>
</struts>
package com.ccniit.bookshop.action;import java.util.List;
import java.util.Map;import com.ccniit.bookshop.beans.function.Function;
import com.ccniit.bookshop.beans.user.User;
import com.ccniit.bookshop.service.predom.IPredomService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class CheckInterceptor extends AbstractInterceptor {
        // 对LoginAction不做该项拦截
       
        IPredomService predomService;
        List<Function> functions;
        public String intercept(ActionInvocation actionInvocation) throws Exception {
         String action = actionInvocation.getInvocationContext().getName();
            Map session = actionInvocation.getInvocationContext().getSession();
            User user = (User) session.get("user");
            functions = predomService.getAllFunction(user.getUserGroup().getUserGroupId());
            if(user != null){
            for (Function f:functions)
{
             if (f.getFunctionName().equals(action)) {
                    // 存在的情况下进行后续操作。
                 System.out.println("111111111111111111111111133333311111111111111111111111");
                    return actionInvocation.invoke();
                } else {
                    // 否则终止后续操作,返回错误界面
                 return Action.ERROR;
                }
}
            System.out.println("111111111111111111111111111111111111111111111111");
             return actionInvocation.invoke();
            }
            else {
     return Action.LOGIN;
}
            
        }    }

解决方案 »

  1.   

    你要的效果?问题在哪?
    哪要在登陆时不执行拦截器吗?只需要将action以及method判断一下不就OK了?
      

  2.   

    拦截器不是线程安全的,因此 List<Function> functions; 不能作为成员变量存在!至于其他的,我根本就不知道你在问什么!----------------------------------------
    struts2 定义拦截器里面把变量拦截了
    ----------------------------------------帖子中除了 XML 就是代码,根本就不知道你帖子标题的意思是什么。加油吧,相信你自己能够解决的。