struts学习:传统方法完成struts注册表单校验与回显数据
2013-12-08 19:40
603 查看
1、创建Web项目,并导入struts框架所需要的jar包.
2、从struts 框架包中 复制struts-config.xml 修改 代码如下:
3、配置web.xml .
4、创建action RegisterAction 复写 excute 方法
5、golobals 全局包创建枚举值存放性别和爱好
6、创建formbean 其中进行传统的表单验证
7、注册界面
注意,这个还需要一个MessageResource.properties 这样的空资源文件
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 这样的空资源文件
相关文章推荐
- JavaScript学习——使用JS完成注册页面表单校验
- 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。
- 网站学习备忘001——运用POST方法获取表单中的数据,并显示在同一网页中
- 使用Js完成注册页面表单校验
- 使用JS完成注册页面表单简单校验
- SSH框架登录注册页面用struts的xml配置方式校验遇到的问题及解决方法
- JavaScript 完成注册页面表单校验的实例
- 编程心得+使用JS完成注册页面表单校验
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- 教你一天玩转JavaScript(五)——使用JavaScript完成注册页面表单提示及校验
- Struts 2+Spring表单数据不能清空的解决方法
- js中常用表单数据校验方法
- JavaWeb_Day10_学习笔记1_response(3、4、5、6、7、8、9)发送状态码、响应、重定向、定时刷新、禁用浏览器缓存、响应字节数据、快捷重定向方法、完成防盗链
- 一步步学习微软InfoPath2010和SP2010--第六章节--发布并提交表单数据(1)--发布方法
- 一步步学习微软InfoPath2010和SP2010--第六章节--发布并提交表单数据(1)--发布方法
- Struts2.0学习笔记---对所有方法进行校验和对某个方法进行校验
- 在Struts 2_0中实现表单数据校验
- struts-11-表单数据校验
- Dedecms自定义表单“数据校验不对,程序返回错误”的解决方法
- Struts如何从客户提交表单中提取数据,和传统的HTML form相比有什么优势?