struts.xml:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default" >
<interceptors>
<interceptor name="myinterceptor" class="hfut.geron.MyInterceptor"></interceptor>
<interceptor-stack name="my">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myinterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="my"></default-interceptor-ref>
<action name="public" class="hfut.geron.PublicAction">
<result name="success">/success.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
</struts>
MyInterceptor.java: //自定义拦截器
public class MyInterceptor extends AbstractInterceptor {
@Override
public void init() {
// TODO Auto-generated method stub
super.init();
System.out.println("init...");
}
@Override
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub
Object object=ai.getAction();
System.out.println(object.toString());
if(object!=null){
if(object instanceof PublicAction){
PublicAction action= (PublicAction) object;
String content= action.getContent();
System.out.print(content);
System.out.print(action.getTitle());
if(content.contains("艹")){
content=content.replace("艹", "*");
action.setContent(content);
}
return ai.invoke();
}
else{
return Action.LOGIN;
}
}
else{
return Action.LOGIN;
}
}
}
PublicAction.java
public class PublicAction extends ActionSupport {
private String title;
private String content;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
success.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
标题:<s:property value="title"/> <br>
内容: <s:property value="content"/>
</body>
</html>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<b>发表评论</b>
<br>
<s:form action="public" method="post">
<s:textfield label="标题" name="title" maxlength="20"></s:textfield>
<s:textarea label="内容" cols="40" rows="5" name="content"> </s:textarea>
<s:submit value="提交"></s:submit>
</s:form>
</center>
</body>
</html>
结果:
说明:在struts.xml中myinterceptor拦截器是放在defaultStack拦截器的下面,不然就会运行产生空指针异常,也就是没有获得提交内容。因为defaultStack是默认拦截器,将自定义拦截器覆盖掉了。。