struts2拦截器配置后报错(我是新手)

aflamingo 2015-10-01 08:32:28
严重: Exception starting filter struts2
java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider(Lcom/opensymphony/xwork2/config/ConfigurationProvider;)V
at org.apache.struts2.dispatcher.Dispatcher.init_DefaultProperties(Dispatcher.java:307)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:408)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4841)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5535)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


1、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>
<constant name="struts.i18n.encoding" value="gb2312"/>
<package name="default" extends="struts-default" namespace="/">
<interceptors>
<!-- 自定义拦截器类的定义 -->
<interceptor name="contentItp" class="com.mxl.interceptor.ContentInterceptor"/>
</interceptors>
<!-- 配置Actions -->
<action name="content" class="com.mxl.actions.ContentAction">
<result>/content_success.jsp</result>
<result name="login">/content_send.jsp</result>
<!-- 引用自定义拦截器 -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="contentItp"/>
</action>
</package>
</struts>

2、ContentInterceptor.java:

package com.mxl.interceptor;

import com.mxl.actions.ContentAction;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ContentInterceptor extends AbstractInterceptor {

@Override
public String intercept(ActionInvocation arg) throws Exception {
Object obj=arg.getAction();
if (obj!=null) {
if(obj instanceof ContentAction) {
ContentAction ca=(ContentAction)obj;
String content=ca.getContent();
int startIndex=content.indexOf('人');
String str=content.substring(startIndex, startIndex+3);
if(str.equals("人品差")) {
content=content.replaceAll("人品差", "*");
ca.setContent(content);
}
return arg.invoke();
} else {
return Action.LOGIN;
}
}
return Action.LOGIN;
}
}

3、ContentAction.java:

package com.mxl.actions;

import com.opensymphony.xwork2.ActionSupport;

public class ContentAction extends ActionSupport {
private String name;
private String content;
@Override
public String execute() throws Exception {
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

4、content_success.jsp主要部分:

<table cellpadding="0" cellspacing="0" border="0" align="left">
<tr style="line-height: 30px;">
<td style="font-size: 14px;font-weight: bold;" align="left">
对本书的评论
</td>
</tr>
<tr>
<td style="font-size: 12px">
评论人:<s:property value="name"/>
</td>
</tr>
<tr>
<td style="font-size: 12px">
评论正文:<s:property value="content"/>
</td>
</tr>
</table>

5、content_send主要部分:

<s:form action="content.action" method="post">
<s:textfield name="name" label="评论人" size="81"/>
<s:textfield name="content" label="评论正文" cols="80" rows="10"/>
<s:checkbox name="arr" label="我已经阅读并同意当当网社区条款"/>
<s:submit value="提交" align="center"/>
</s:form>
jar包都全


捣腾了一天,求帮忙....
...全文
146 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2015-10-02
  • 打赏
  • 举报
回复
代码需要注意2点: 要先判断 int startIndex = content.indexOf("人"); if(startIndex > -1){ String str = content.substring(startIndex, startIndex + 3); if (str.equals("人品差")) { content = content.replaceAll("人品差", "*"); ca.setContent(content); } } 2,一般都使用utf-8,无需设置 <constant name="struts.i18n.encoding" value="gb2312"/> 你的代码经测试 没有其他问题。 如果你报错 可能是你的配置问题吧

24,920

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧