评论界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
评论页面<br>
<s:form action="validate">
<s:textarea name="comment" cols="20" rows="5" label="评论"></s:textarea>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
过滤后的界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
评论成功界面<br>
在struct.xml里配置的 action (validate)使用<b>默认的拦截器</b> ,会将comment.jsp里的表单里的属性映射到
CommentAction里 在传递到 这个页面,只要使用s:property 属性 就能获取comment属性的值了<br>
<s:property value="comment"/>
</body>
</html>
struct.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="com.rain.comment" extends="struts-default"
namespace="/">
<interceptors>
<interceptor name="commentInterceptor"
class="com.rain.interceptor.CommentInterceptor">
</interceptor>
</interceptors>
<action name="comment">
<result name="success">comment.jsp</result>
</action>
<action name="validate" class="com.rain.actions.CommentAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="commentInterceptor">
<param name="filter">钓鱼岛,日本</param>
</interceptor-ref>
<result name="success">success.jsp</result>
</action>
</package>
</struts>
action
package com.rain.actions;
import com.opensymphony.xwork2.ActionSupport;
public class CommentAction extends ActionSupport{
private String comment;
@Override
public String execute() throws Exception {
return this.SUCCESS;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getComment() {
return comment;
}
}
拦截器
package com.rain.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.rain.actions.CommentAction;
public class CommentInterceptor extends AbstractInterceptor {
private String filter;
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// 获取拦截器拦截到的action
Object object = arg0.getAction();
if (object != null && object instanceof CommentAction) {
String[] params = this.filter.split(",");
CommentAction c = (CommentAction) object;
String comment = c.getComment();//从action中获取评论
System.out.println("评论原先是:" + comment);
for (String s : params) {
System.out.println("过滤关键字" + s);
if (comment.contains(s))
comment = comment.replace(s, "和谐");//过滤关键字
}
System.out.println("过滤后" + comment);
c.setComment(comment);//将过滤后的评论从新载入action中
}
return arg0.invoke();
}
public void setFilter(String filter) {
this.filter = filter;
}
public String getFilter() {
return filter;
}
}