包含内容:
使用正则表达式进行表单验证
消息文件绑定
错误消息显示
web.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/web-inf/struts-bean.tld</taglib-uri>
<taglib-location>/web-inf/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/web-inf/struts-html.tld</taglib-uri>
<taglib-location>/web-inf/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/web-inf/struts-logic.tld</taglib-uri>
<taglib-location>/web-inf/struts-logic.tld</taglib-location>
</taglib>
</web-app>
struts-config.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC '-//Apache Software Foundation//DTD Struts Configuration 1.1//EN' 'http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd'>
<struts-config>
<form-beans>
<form-bean name="helloBean" type="test.HelloBean" />
</form-beans>
<action-mappings>
<action path="/HelloAction" type="test.HelloAction" name="helloBean" scope="request" validate="true" input="/error.jsp">
<forward name="sayHello" path="/hello.jsp" />
</action>
</action-mappings>
<message-resources parameter="test.application"/> //消息文件绑定
</struts-config>
HelloBean.java
package test;
import org.apache.struts.action.*;
import org.apache.struts.util.*;
import javax.servlet.http.*;
import java.util.regex.*;
public class HelloBean extends ActionForm {
private String word;
public void setWord(String word) {
this.word = word;
}
public String getWord() {
return this.word;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
this.word = null;
}
private boolean match(String str) {
Pattern p = Pattern.compile("[^0-9]+");//使用正则表达式进行表单验证
Matcher m = p.matcher(str);
return m.matches();
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (word == null || !match(word)) {
errors.add("word", new ActionMessage("error.key"));
}
return errors;
}
}
HelloAction.java
package test;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import javax.servlet.*;
import org.apache.struts.util.*;
public class HelloAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
MessageResources mess = getResources(request);
String wordKey = mess.getMessage("word.key");
String helloKey = mess.getMessage("hello.key");
System.out.println(wordKey + "," + helloKey);
String word = request.getParameter(wordKey);
System.out.println(word);
HelloBean myForm = (HelloBean) form;
myForm.setWord(word);
myForm.setWord(helloKey + ", " + myForm.getWord());
return mapping.findForward("sayHello");
}
}
hello.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html locale="true">
<head>
<html:base/>
</head>
<body>
<logic:present name="helloBean" scope="request">
<bean:message key="aaaa.key" />
</logic:present>
<logic:notPresent name="helloBean" scope="request">
<bean:message key="bbbb.key" />
</logic:notPresent>
<br>
<bean:write name="helloBean" property="word" />
</body>
</html:html>
error.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:errors/> //错误消息显示
/WEB-INF/classes/test/application.properties
word.key=word
hello.key=hello
aaaa.key=this bean is present.
bbbb.key=this bean isn't present.
error.key=raise a error, please check!
结果:
http://localhost:2000/test3/HelloAction.do?word=bitan
this bean is present.
hello, bitan
http://localhost:2000/test3/HelloAction.do?word=b123n
raise a error, please check!