zoukankan      html  css  js  c++  java
  • 07-SSH综合案例:前台用户模块:结构创建及注册页面跳转

    现在就不要直接访问一个JSP,要通过一个Action映射过去。我现在点击要去一个注册的页面

    这还不是一个真正的注册,只是一个页面的跳转。

    1.5.2 用户模块

    注册功能:

    在index.jsp页面中点击注册:

            * 跳转到regist.jsp页面上(通过action跳转)

     1.创建表:是可以自动生成表,但是正常情况是先有表然后才能去做这些事情的。你把表和类的映射创建好之后它可以帮你自动创建,怎么创建呢?一启动服务器                就创建了。

             * 建表语句

            *  create table user (

                uid int primary key auto_increment,

                username varchar(20),

                password  varchar(20),

                repassword varchar(20),

                name   varchar(20),

                email    varchar(30),

                phone  varchar(20),

                addr    varchar(50),

                sex      varchar(10),

                state    int,           

                code   varchar(64)

                );

           

     2.创建包:

            * cn.itcast.shop.user

     3.在包下创建类和文件:

            *  UserAction;        ---Action类

            *  UserService;       ---业务层类

            *  UserDao             ---持久层类

            *  User                   ---实体类

                public class User {private Integer uid;

    private String username;
    private String password;

    private String repassword;
    private String name;
    private String email;
    private String phone;
    private String addr;
    private String sex;
    private Integer state;
    private String code;
    public Integer getUid() {
    return uid;
    }
    public void setUid(Integer uid) {
    this.uid = uid;
    }
    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 getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getEmail() {
    return email;
    }
    public void setEmail(String email) {
    this.email = email;
    }
    public String getPhone() {
    return phone;
    }
    public void setPhone(String phone) {
    this.phone = phone;
    }
    public String getAddr() {
    return addr;
    }
    public void setAddr(String addr) {
    this.addr = addr;
    }
    public String getSex() {
    return sex;
    }
    public void setSex(String sex) {
    this.sex = sex;
    }
    public Integer getState() {
    return state;
    }
    public void setState(Integer state) {
    this.state = state;
    }
    public String getCode() {
    return code;
    }
    public void setCode(String code) {
    this.code = code;
    }

    }

            *  User.hbm.xml      ---创建一个映射            

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>

    <class name="cn.itcast.shop.user.User" table="user">
    <!-- 配置唯一标识 -->
    <id name="uid" column="uid">
    <generator class="native"></generator><!-- 主键的生成策略 -->
    </id>
    <!--配置普通属性-->
    <property name=""></property>
    <property name="username"></property>
    <property name="password"></property>

    <property name="repassword"></property>
          <property name="name"></property>
    <property name="email"></property>
    <property name="phone"></property>
    <property name="addr"></property>
    <property name="sex"></property>
    <property name="state"></property>
    <property name="code"></property>
    </class>

    </hibernate-mapping>

    * 修改 struts.xml         

                   <!-- 配置用户的Action -->
                   <action name="user_*" class="userAction" method="{1}">
                          <result name="registPageSuccess">/WEB-INF/jsp/regist1.jsp</result>
                    </action> 

    * 修改applicationContext.xml

    <bean id="userAction" class="cn.itcast.shop.user.UserAction" scope="prototype">

     

     

    </bean>

     * 在注册页面上添加前台JS校验:       

    function checkForm(){
    // 校验用户名:
    var username = document.getElementById("username").value;
    if(username == ''){//javascript没有trim(),得自己编写去除两边空格的方法
    alert("用户名不能为空!");
    return false;
    }

    // 校验密码:
    var password = document.getElementById("password").value;
    if(password == ''){
    alert("密码不能为空!");
    return false;
    }

    // 校验确认密码
    var repassword = document.getElementById("repassword").value;
    if(password != repassword){
    alert("两次密码不一致!");
    return false;
    }
    //如果你想校验邮箱,那你得自己去写个正则表达式了 你要用正则就加上一个text方法去比对
    }

     

    注册:  

    Regist.jsp------------------>UserAction(regist方法)------------>UserService----------->UserDao

     * 校验:(后台)

           * 在Action类所在包下创建一个XML.(针对某个方法校验)

                 * Action类名-方法对应路径名称-validation.xml

                        * UserAction-user_regist-validation.xml

                        * 引入DTD.

                  * 编写校验:

                  * 校验后的INPUT视图配置.

        * 发送邮件:

               * 搭建邮箱服务器:

               1.安装邮箱服务器:

               2.设置邮箱服务器:

                        * 设置服务器域名.

                               * 工具--->服务器设置--->设置域名

                                     * shop.com

                3.创建几个账号:

                      * 账号--->新建账号

                4.配置邮箱客户端:

                       * foxmail:

                       * 安装foxmail:

                              * 配置一个账号:

                                     * bbb@shop.com

                                      * aaa@shop.com

    你有接口也行,没接口它也可以帮你注入。注释不放在类外面是无法生成注解的

    User.hbm.xml的头在hibernate的核心包下可以找到

    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    action的这个class="userAction"它只是一个id的名称,是一个伪类名,

    真正的类名在Spring中的applicationContext.xml中写

    user_regist-validation.xml的dtd在/xwork-validator-1.0.3.dtd里面

    校验器在/com/opensymphony/xwork2/validator/validators/default.xml里面可以找到

    查找stringlength的源码com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator

    用OpenType打开源码之后

    不用导入源码看右边也知道有两个属性maxLength和minLength

    regist1.jsp导入标签库

    回显错误信息

    你的表单要是用struts2标签的话,就算出错了没错的数据还在.但是你不用的话,出错的话没错的数据就不在了,全部数据都丢失了。

    它这个是说没写注册成功跳转的页面

    成功创建user表了

    重新写msg.jsp(注册成功时候的跳转页面)重新提交之后成功跳转

    就算你struts.xml没配置msg.jsp页面也插入数据了。

  • 相关阅读:
    vue的特点 关键字
    小程序技术实现
    SpringCloud简历模板
    SpringBoot简历模板
    SpringCloud+Eureka快速搭建微服架构
    Docker 面试题
    说说mysql的存储引擎,有什么区别?索引的介绍
    mysql语句
    fail-fast 与 fail-save 机制的区别
    动态规划总结
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6375934.html
Copyright © 2011-2022 走看看