struts2.3.15之表单提交与表单验证

    1.先搭建好环境,参看前一篇 http://blog.csdn.net/undergrowth/article/details/9853815

    2.在WebContent中建立register.jsp文件,内容如下

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <%@ taglib uri="/struts-tags" prefix="s" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">

.con{
	position:absolute;
	left:50%;
	top:50%;
	width:300px;
	height:300px;
	margin-top:-150px;
	margin-left:-150px;
	text-align:center;
	border: 1px solid red;
}
</style>
</head>
<body>
<div class="con">
	<s:form action="register" namespace="/form_test" method="post"> 
  		<s:textfield label="姓名" name="person.name" ></s:textfield>
	    <s:textfield label="密码" name="person.password"></s:textfield>
	    <s:textfield label="确认密码" name="person.confirmPassword"></s:textfield>
	    <s:textfield label="年龄" name="person.age" tooltip="年龄必须大于18岁"></s:textfield>
	    <s:textfield label="电话号码" name="person.phone" tooltip="电话号码长度为数字,11/6位都可"></s:textfield>
	    <s:textfield label="邮箱" name="person.email" tooltip="邮箱地址必须完整"></s:textfield>
	    <s:checkboxlist name="person.hobby" list="{'篮球','编程','小说'}"></s:checkboxlist>
	    <s:submit label="提交"></s:submit>
   </s:form> 
</div>
</body>
</html>


 

 

3.在struts.xml文件中加入表单提交需要的action与result
<?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>
  <package name="form_test" namespace="/form_test" extends="struts-default">
  	<action name="register" class="com.undergrowth.Register">
  		<result>/success.jsp</result>
  	</action>
  </package>
  
  <!-- <package name="first" namespace="/first" extends="struts-default">
  	<action name="first" class="com.undergrowth.First" method="execute">
  	 <result name="success">/first.jsp</result>
  	</action>
  </package> -->
</struts>

      在WebContent下建立success.jsp文件

         

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	${person} 
</body>
</html>


 

 


4.在src目录下建立Register的类文件,包名为com.undergrowth

Register.java

package com.undergrowth;

public class Register {
	private String msg;
	private Person person;
	
	
	public Person getPerson() {
		return person;
	}


	public void setPerson(Person person) {
		this.person = person;
	}


	public String getMsg() {
		return msg;
	}


	public String execute()
	{
		msg="注册成功";
		
		return "success";
	}
}

建立Person.java 对信息进行封装

package com.undergrowth;

import java.util.Arrays;

public class Person {
	private String name;
	private String password;
	private String confirmPassword;
	private int age;
	private String phone;
	private String email;
	private String[] hobby;
	
	public String[] getHobby() {
		return hobby;
	}
	public void setHobby(String[] hobby) {
		this.hobby = hobby;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getConfirmPassword() {
		return confirmPassword;
	}
	public void setConfirmPassword(String confirmPassword) {
		this.confirmPassword = confirmPassword;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", password=" + password
				+ ", confirmPassword=" + confirmPassword + ", age=" + age
				+ ", phone=" + phone + ", email=" + email + ", hobby="
				+ Arrays.toString(hobby) + "]";
	}
	
	
}



 

5.进行测试,发布项目到tomcat,在浏览器中输入http://localhost:8080/struts2_form/register.jsp

 并输入相应的信息,如下

struts2.3.15之表单提交与表单验证_第1张图片

 

6.表单成功提交,进入到success.jsp界面,显示提交的表单信息

 

  上面的即是表单的提交,但是很多时候,我们对表单输入的信息有一定的限制,比如年龄大于18岁 电话号码为11为数字 邮箱地址要符合要求 姓名不能为空

现在开始对上面表单提交的信息进行校验,采用xml配置的方式对表单提交的信息进行校验

1.Register类继承ActionSupport(因为需要对Register类的execute方法进行校验,需要使用ActionSupport来支持转发result)

2.编写验证的xml文件,该文件需要和action类放在同一个包下,文件的取名应遵守ActionClassName-validation.xml规则,其中ActionClassName为action的简单类名,-validation为固定写法。如这里就是Register-validation.xml文件放在com.undergrowth包下

   验证的xml文件模板可以去你下载的struts2.3.15的完整版的目录文件中的apps中有相应的例子,即struts-2.3.15.1\apps\struts2-blank\WEB-INF\src\java\example\Login-validation.xml中拷贝过来

Register-validation.xml的内容如下  对姓名而言不能为空  年龄必须大于等于18岁 电话号为必须为11位数字并且开头以1开头第二位只能为358  电子邮箱的地址要正确

  

<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

<validators>
    <field name="person.name">
        <field-validator type="requiredstring">
        <param name="trim"></param>
            	<message>用户名不能为空</message>
        </field-validator>
    </field>
    <field name="person.age">
        <field-validator type="int">
            <param name="min">18</param>
            <message>年龄必须大于18岁</message>
        </field-validator>
    </field>
    <field name="person.phone">
    	<field-validator type="regex">
    	  <param name="regex"><![CDATA[^1[358]\d{9}$]]></param>    	   
	<message>电话号码必须为11位数字</message>
    	</field-validator>
    </field>
    <field name="person.email">
      <field-validator type="email">
         <message>电子邮箱的格式不正确</message>
      </field-validator>
    </field>
</validators>


 

 

3.在register的action中加入出错后的返回视图 如下

<result name="input">/register.jsp</result>

 

 

4.进行测试,发布项目,打开 http://localhost:8080/struts2_form/register.jsp  输入相应的信息

struts2.3.15之表单提交与表单验证_第2张图片

提交后 会看到相应的提示信息

struts2.3.15之表单提交与表单验证_第3张图片

输入正确信息 如下

        struts2.3.15之表单提交与表单验证_第4张图片

 

正确的显示界面

 

以上即是表单的验证  当然还有一种 自己编写java代码进行验证 即先继承ActionSupport,然后重写其validate方法 一样可实现效果

你可能感兴趣的:(struts2)