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页面也插入数据了。

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6375934.html