您的位置:首页 > 编程语言 > Java开发

struts学习:传统方法完成struts注册表单校验与回显数据

2013-12-08 19:40 603 查看
1、创建Web项目,并导入struts框架所需要的jar包.

2、从struts 框架包中 复制struts-config.xml 修改 代码如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

<form-beans>
<form-bean name="UserFormBean" type="cn.itcast.web.formbean.UserFormBean"></form-bean>
</form-beans>

<action-mappings>
<action path="/RegisterUI" forward="/WEB-INF/jsp/register.jsp"/>

<action path="/Register"
type="cn.itcast.web.action.RegisterAction"
name="UserFormBean"
scope="request"
validate="true"
input="/WEB-INF/jsp/register.jsp"
>

<forward name="success" path="/success.jsp"></forward>
<forward name="message" path="/message.jsp"></forward>

</action>

</action-mappings>

<message-resources parameter="MessageResource"/>

</struts-config>


3、配置web.xml .

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<servlet>
<servlet-name>ActionServlet</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>ActionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


4、创建action RegisterAction 复写 excute 方法

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

try{

System.out.println("处理用户注册请求.....");
return mapping.findForward("success");
}catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", e.getMessage());
return mapping.findForward("message");
}
}


5、golobals 全局包创建枚举值存放性别和爱好

public enum Gender {
MALE("male","男"),FEMALE("female","女");

private String name;
private String value;
private Gender(String name,String value){
this.name= name;
this.value = value;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
}


6、创建formbean 其中进行传统的表单验证

@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {

ActionErrors errors = new ActionErrors();

//用户名不能为空,并且要是3-8位的字母
if(isEmpty(this.username)){
addMessage(errors, "username", "用户名不能为空");
}else{
if(!this.username.matches("[A-Za-z]{3,9}")){
addMessage(errors,"username", "用户名必须是3-8位字母");
}
}

//密码不能为空,要是3-9的字母或数字
if(isEmpty(this.password)){
addMessage(errors, "password", "密码不能为空");
}else{
if(!this.password.matches("\\w{3,9}")){
addMessage(errors,"password", "密码必须是3-8位字母或数字");
}
}

//二次密码不能为空,并且要和一次密码一致
if(isEmpty(this.password2)){
addMessage(errors, "password2", "密码不能为空");
}else{
if(this.password2.equals(this.password)){
addMessage(errors,"password2", "两次密码必须要一致");
}
}

//性别不能为空,并且要是枚举的一个实例的值
if(isEmpty(this.gender)){
addMessage(errors, "gender", "性别不能为空");
}else{
try{
Gender.valueOf(this.gender.toUpperCase());
}catch (Exception e) {
addMessage(errors, "gender", "性别非法");
}
}

//生日可以为空,不为空时,要是一个日期
if(!isEmpty(this.birthday)){
try{
DateLocaleConverter conver = new DateLocaleConverter();
conver.convert(this.birthday);
}catch (Exception e) {
addMessage(errors, "birthday", "生日不能一个合法的日期");
}
}

//收入要是一个数字,可以为空
if(!isEmpty(this.income)){
try{
Double.parseDouble(this.income);
}catch (Exception e) {
addMessage(errors, "income", "收入要是一个数字");
}
}

//爱好可以为空,不为空时要是合法的枚举值:String[] preference;
if(this.preference!=null && this.preference.length>0){
for(String pre : this.preference){
try{
Preference.valueOf(pre.toUpperCase());
}catch (Exception e) {
addMessage(errors, "preference", "爱好输入有误");
}
}
}

//邮箱可以为空,不为空时,要是一个格式有效的邮箱
if(!isEmpty(this.email)){
if(!this.email.matches("\\w+@\\w+(\\.\\w+)+")){
addMessage(errors, "email", "邮箱格式非法");
}
}

return errors;
}

private boolean isEmpty(String value){
if(value==null || value.trim().equals("")){
return true;
}
return false;
}

private void addMessage(ActionErrors errors,String key,String message){
errors.add(key,new ActionMessage(message,false));
}


7、注册界面

<table width="50%" frame="border">
<tr>
<td>用户名</td>
<td>
<input type="text" name="username" value="${UserFormBean.username }">
</td>
<td>
<html:errors property="username"/>
</td>
</tr>

<tr>
<td>密码</td>
<td>
<input type="password" name="password" value="${UserFormBean.password }">
</td>

<td>
<html:errors property="password"/>
</td>
</tr>

<tr>
<td>确认密码</td>
<td>
<input type="password" name="password2" value="${UserFormBean.password2 }">
</td>
<td>
<html:errors property="password2"/>
</td>
</tr>

<tr>
<td>性别</td>
<td>
<c:forEach var="g" items="<%=Gender.values() %>">
<input type="radio" name="gender" value="${g.name }" ${UserFormBean.gender==g.name?'checked':'' }>${g.value }
</c:forEach>
</td>
<td>
<html:errors property="gender"/>
</td>
</tr>

<tr>
<td>生日</td>
<td>
<input type="text" name="birthday" value="${UserFormBean.birthday }">
</td>
<td>
<html:errors property="birthday"/>
</td>
</tr>

<tr>
<td>收入</td>
<td>
<input type="text" name="income" value="${UserFormBean.income }">
</td>
<td>
<html:errors property="income"/>
</td>
</tr>

<tr>
<td>城市</td>
<td>
<select name="city">
<option value="beijing" ${UserFormBean.city=='beijing'?'selected':'' }>北京</option>
<option value="guangzhou" ${UserFormBean.city=='guangzhou'?'selected':'' }>广州</option>
<option value="shanghai" ${UserFormBean.city=='shanghai'?'selected':'' }>上海</option>
</select>
</td>
<td>

</td>
</tr>

<tr>
<td>爱好</td>
<td>
<c:forEach var="pre" items="<%=Preference.values() %>">
<input type="checkbox" name="preference" value="${pre.name }" ${fn:contains(fn:join(UserFormBean.preference,","),pre.name)?'checked':'' }>${pre.value }
</c:forEach>
</td>
<td>
<html:errors property="preference"/>
</td>
</tr>

<tr>
<td>邮箱</td>
<td>
<input type="text" name="email" value="${UserFormBean.email }">
</td>
<td>
<html:errors property="email"/>
</td>
</tr>

<tr>
<td>
<input type="reset" value="清空">
</td>
<td>
<input type="submit" value="注册">
</td>
</tr>

</table>


注意,这个还需要一个MessageResource.properties 这样的空资源文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐