Struts2系列登录注册的小项目之验证规则
来源:互联网 发布:统计学,概率论软件 编辑:程序博客网 时间:2024/05/02 23:07
首先先创建一个大的包com.wangyijie.struts
在这个包下面再创建四个包
在我的工程里面有个c3p0-config.xml这个是用来连接数据库使用的 自己配置好自己的参数值
//c3p0-config.xml 这是c3p0的配置 首先要创建一个数据库<?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config> <property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">111111</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">5</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">8</property></default-config></c3p0-config>
首先要先写javaBean Student类
public class Student implements Serializable { private int id; private String username; private String password; private String gender; private String hobby;//吃饭,睡觉,学java private Date birthday; private String email; private int grade; @Override public String toString() { return "Student{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", gender='" + gender + '\'' + ", hobby='" + hobby + '\'' + ", birthday=" + birthday + ", email='" + email + '\'' + ", grade=" + grade + '}'; } public Student() { } public Student(int id, String username, String password, String gender, String hobby, Date birthday, String email, int grade) { this.id = id; this.username = username; this.password = password; this.gender = gender; this.hobby = hobby; this.birthday = birthday; this.email = email; this.grade = grade; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; }}
这个是注册的jsp页面
<%@ taglib prefix="s" uri="/struts-tags" %><%-- Created by IntelliJ IDEA. User: dllo Date: 2017/7/5 Time: 上午11:43 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title> <s:head/></head><body><s:fielderror/><form action="${pageContext.request.contextPath}/stu/regist.action" method="post"> <table border="1" width="438"> <tr> <td>用户名:</td> <td> <input type="text" name="username"/> </td> </tr> <tr> <td>密码:</td> <td> <input type="password" name="password"/> </td> </tr> <tr> <td>性别:</td> <td> <input type="radio" name="gender" value="male" checked="checked"/>男性 <input type="radio" name="gender" value="female"/>女性 </td> </tr> <tr> <td>爱好:</td> <td> <input type="checkbox" name="hobbies" value="吃饭"/>吃饭 <input type="checkbox" name="hobbies" value="睡觉"/>睡觉 <input type="checkbox" name="hobbies" value="学java"/>学java </td> </tr> <tr> <td>出生日期:(yyyy-MM-dd)</td> <td> <input type="text" name="birthday"/> </td> </tr> <tr> <td>邮箱:</td> <td> <input type="text" name="email"/> </td> </tr> <tr> <td>成绩:</td> <td> <input type="text" name="grade"/> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="注册"/> </td> </tr> </table></form><hr><a href="/login.jsp">登录</a></body></html>
login登录的jsp
<%@ taglib prefix="s" uri="/struts-tags" %><%-- Created by IntelliJ IDEA. User: dllo Date: 17/5/10 Time: 下午4:45 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title> <s:head/></head><body><s:fielderror/><%--<p style="color: red">${msg}</p>--%><form action="${pageContext.request.contextPath}/stu/login" method="post"> 用户名: <input type="text" name="username"/><br> 密码: <input type="password" name="password"/><input type="submit" value="登录"/></form></body></html>
StudentAction 动作类
public class StudentAction extends ActionSupport implements ModelDriven<Student>, ServletRequestAware { private StudentService studentService = new StudentServiceImpl(); private HttpServletRequest request; private Student stu = new Student(); // 特殊处理: hobbies private String[] hobbies; public String[] getHobbies() { return hobbies; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } public String regist(){ try { // 单独处理爱好 if (hobbies != null && hobbies.length>0){ StringBuffer sb = new StringBuffer(); for (int i = 0;i<hobbies.length;i++){ if(i>0){ sb.append(","); } sb.append(hobbies[i]); } stu.setHobby(sb.toString()); } studentService.register(stu); System.out.println("注册成功~"); return SUCCESS; }catch (Exception e){ request.setAttribute("error", "系统发生错误! 请稍后重试!"); return ERROR; } } public String login(){ try { boolean flag = studentService.login(stu); if (flag == false){ request.setAttribute("msg", "用户名或密码错误!"); return LOGIN; } }catch (Exception e){ request.setAttribute("error", "系统发生错误! 请稍后重试!"); return ERROR; } request.getSession().setAttribute("user", stu); return SUCCESS; } //在这里来说验证规则 // 输入验证:// 1.编程式验证// [1] 针对动作类中所有的动作方法// [2] 针对动作类中部分的动作方法////// [1]针对动作类中所有的动作方法// 可以判断一些验证是否重复或者是否为空 直接调用该方法就可以使用判断 @Override public void validate() { if ("".equals(stu.getUsername().trim())){ addFieldError("stu.username", "用户名不能为空!");//向map添加错误 //出现错误,会转向result=input 视图 } }// [2] 针对动作类中部分的动作方法// a. 使用注解对方法进行忽略// b. 只针对该方法进行验证: 例如 regist.validateRegist 就是针对regist这个方法进行验证 @SkipValidation //忽略的意思 可以在regist的方法中试一下方法 会输出findAll 就是忽略了这个方法 public String findAll(){ System.out.println("findAll"); return null; } // 就是针对regist这个方法进行验证 public void validateRegist() { if ("".equals(stu.getUsername().trim())){ addFieldError("stu.username", "用户名不能为空!");//向map添加错误 //出现错误,会转向result=input 视图 } } public Student getStu() { return stu; } public void setStu(Student stu) { this.stu = stu; } @Override public Student getModel() { return stu; } @Override public void setServletRequest(HttpServletRequest httpServletRequest) { this.request = httpServletRequest; }
创建一个StudentService接口 和 StudentServiceImplement实现类
//StudentService接口public interface StudentService { void register(Student stu); boolean login(Student stu);}
//StudentServiceImplement实现类public class StudentServiceImpl implements StudentService { private StudentDao studentDao = new StudentDaoImpl(); @Override public void register(Student stu) { studentDao.addStu(stu); } @Override public boolean login(Student stu) { Student student = studentDao.queryStu(stu); if (student != null){ return true; } return false; }
创建一个StudentDao的接口和StudentDaoImplement实现类
//StudentDao的接口public interface StudentDao { void addStu(Student stu); Student queryStu(Student stu);}
//StudentDaoImplement实现类 用来连接数据库 向数据库中进行增删改查public class StudentDaoImpl implements StudentDao{ private GxQueryRunner qr = new GxQueryRunner(); @Override public void addStu(Student stu) { String sql = "INSERT INTO students VALUES(?,?,?,?,?,?,?,?)"; Object[] params = {null, stu.getUsername(), stu.getPassword(), stu.getGender(), stu.getHobby(), stu.getBirthday(), stu.getEmail(), stu.getGrade()}; try { qr.update(sql, params); } catch (SQLException e) { throw new RuntimeException(e); } } @Override public Student queryStu(Student stu) { String sql = "SELECT * FROM students WHERE username=? AND password = ?"; Object[] params = {stu.getUsername(), stu.getPassword()}; try { Student u = qr.query(sql, new BeanHandler<Student>(Student.class), params); return u; } catch (SQLException e) { throw new RuntimeException(e); } }
struts2.xml
<struts> <package name="regist" extends="struts-default" namespace="/stu"> <action name="regist" class="com.wangyijie.struts.web.controller.StudentAction" method="regist"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <result name="input">/regist.jsp</result> </action> <action name="login" class="com.wangyijie.struts.web.controller.StudentAction" method="login"> <result name="success" type="redirect">/home.jsp</result> <result name="input">/login.jsp</result> <result name="login">/login.jsp</result> <result name="error">/error.jsp</result> </action> </package></struts>
验证规则
第一个.xml是只针对regist注册的这个方法进行验证
<validators> <validator type="regex"> <param name="fieldName">stu.username</param> <param name="regexExpression"> <![CDATA[ [a-zA-Z]{3,8} ]]> </param> <message>您的名字必须由3~8个字母组成</message> </validator> <field name="stu.password"> <field-validator type="regex"> <param name="regexExpression"> <![CDATA[ \d{3,8} ]]> </param> <message>您的密码必须由3-8个数字组成</message> </field-validator> </field> <field name="stu.username"> <field-validator type="requiredstring"> <message>哈哈哈 你的用户名又空啦</message> </field-validator> </field> <field name="stu.gender"> <field-validator type="required"> <message>请选择性别的类型</message> </field-validator> </field> <field name="stu.email"> <field-validator type="email"> <message>请输入正确的邮箱</message> </field-validator> </field> <field name="stu.grade"> <field-validator type="int"> <param name="min">0</param> <param name="max">150</param> <message>年龄范围在0-150之间</message> </field-validator> </field> <field name="stu.birthday"> <field-validator type="date"> <param name="min">2010-01-01</param> <param name="max">2010-12-31</param> <message>生日在2010-01-01-01到2010-12-31之间</message> </field-validator> </field></validators>
第二个是针对当前的动作类的所有的验证规则 例如:包括这个小项目中login登录的方法也使用这个验证规则
<validators> <!--要验证的字段名--> <field name="stu.username"> <!--验证规则--> <!--requiredstring: 空字符串--> <!--required: 是不是null--> <field-validator type="requiredstring"> <!--报错信息--> <message>您的用户名不能为空</message> </field-validator> </field></validators>
阅读全文
0 0
- Struts2系列登录注册的小项目之验证规则
- struts2登录验证小程序
- 三大框架之SpringMVC :一个小的登录注册项目的网页实现
- web学习之博客小项目(登录注册模块)
- struts2学习笔记之四(注册登陆小项目)
- 从零开始做一个有后端,有短信验证,mvp架构,真正的登录注册小项目(一)
- 注册登录的验证代码
- 登录、注册的验证码
- struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现(源码)
- struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现(源码)
- struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现(源码)
- struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现(源码)
- c#小系统开发之登录 注册
- 【cas】常用的cas登录验证规则
- 新版本struts2的注册和登录校验
- Yii开发系列2:实现用户注册验证登录
- Thinkphp 登录以及注册的自动验证
- 淘淘商城系列——单点登录之注册页面与登录页面的展示
- Python的Beautiful Soup学习笔记
- 持续集成之jenkins实践教程:基础篇(4): 集成redmine
- LeetCode-121. Best Time to Buy and Sell Stock (Java)
- dbms_space.create_table_cost的unwrap解密和原理解析
- SVN报错Cleanup failed to process the following paths
- Struts2系列登录注册的小项目之验证规则
- HTML <option> 标签的 value 属性
- React-Native 发送和接收事件DeviceEventEmitter
- MediaPlayer实现音乐文件的边下边播
- 20170708 算法学习日志
- 函数极限的概念及性质
- springmvc常用注解之@Controller和@RequestMapping
- ShopNC接入支付宝和微信支付
- Go 语言切片(Slice)