【SSH】--添加自定义拦截器报错:probably due to a missing jar, which might be fine if you never plan to use the XX

详细错误信息:

Unable to load config class.cn.itcast.shop.interceptor.PrivilegeInterceptor at interceptor
file:/myeclipse/.XXX/WEB-INF/classes/struts.xml:13:102
probably due to a missing jar, which might be fine if you never plan to use the privilegeInterceptor interceptor

关于jar包

(1)报错信息显示的是缺少jar包,以下是Structs2.3.2版本要配置的所有jar包。
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar 关于文件下载
commons-io-2.2.jar 文件下载所要用的
commons-lang3-3.2.jar
commons-loggin-1.1.3.jar 日志管理
freemarker-2.3.22.jar 表现层框架,定义了struts2的可视组件主题
javassist-3.11.0.GA.jar
ognl-3.0.6.jar OGNL表达式语言,struts2支持该EL
strut2-core-2.3.24.1.jar struts2的核心库
xwork-core-2.3.24.1.jar webwork的核心库,自然需要它的支持

jar包必须添加完整,否则tomcat启动会出现500错误代码

(2)其中下面6个是Structs2使用拦截器必要的jar包,检查一下有没有少。
这里写图片描述

关于配置

在Structs.xml中的注册信息:

<!-- 配置自定义拦截器 -->
<interceptors>
        <interceptor name="privilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/>
</interceptors>

<!-- 配置后台一级分类Action -->
<action name="adminCategory_*" class="adminCategoryAction" method="{1}">
    <result name="findAll">/admin/category/list.jsp</result>
  <!--引用拦截器-->
    <interceptor-ref name="privilegeInterceptor"/>
    <interceptor-ref name="defaultStack"/>      
</action>   

正确的写法:

<!-- Spring 中注册拦截器-->
<bean id="privilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor" scope="prototype">  
</bean>
<!-- Structs中配置自定义拦截器 -->
        <interceptors>
            <interceptor name="privilegeInterceptor" class="privilegeInterceptor"/>
        </interceptors>

小结:

该引的jar包一定要引对。自定义拦截器的实现不难理解,我们首先是写好了一个PrivilegeInterceptor类,然后因为这里用的是SSH框架,所以类的创建首先是要交给Spring管理的,所以不能直接在Structs.xml中注册,应该现在Spring里面注册。
要注意的是,Spring里面注册的id对应的是structs里面的name,class和name一致,不要写原路径。

猜你喜欢

转载自blog.csdn.net/yyzzhc999/article/details/79698761