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页面也插入数据了。
07-SSH综合案例:前台用户模块:结构创建及注册页面跳转的更多相关文章
- 11-SSH综合案例:前台用户模块:激活邮件的发送
刚才已经把服务器的环境和客户端的软件已经搭建好了,现在就要发送邮件了.现在发送邮件的代码你不用重点去掌握啊,了解一下就行了. javax.activation javax.mail是Java EE 5 ...
- 10-SSH综合案例:前台用户模块:邮箱服务器配置
之前发邮件是自己发到服务器还是?是自己搭建一个还是注册一个163啊?自己可以搭建一个邮箱的服务器然后去发送邮件.就是你必须得在这上面有了账户才能发,你也可以往网络上发.你的主机就是一台邮箱服务器了.你 ...
- 08-SSH综合案例:前台用户模块:注册页面的前台JS校验
这个是MyEclipse设置的问题 把设置去掉就没问题了. 你也可以在每一个input后面加个span来显示提示的信息.这些东西也要提交到后台,后台也是要对这些东西进行校验的.
- [Java.web]MVC 案例-开发用户模块(注册)
代码下载 生成后的 user.xml 路径在 X:\day09_user\WebRoot\WEB-INF\classes\users.xml 使用测试 在 day09 项目上右键 -> Run ...
- 【JAVAWEB学习笔记】网上商城实战:环境搭建和完成用户模块
网上商城实战 今日任务 完成用户模块的功能 1.1 网上商城的实战: 1.1.1 演示网上商城的功能: 1.1.2 制作目的: 灵活运用所学知识完成商城实战. 1.1.3 ...
- 【JAVAWEB学习笔记】网上商城实战1:环境搭建和完成用户模块
今日任务 完成用户模块的功能 1.1 网上商城的实战: 1.1.1 演示网上商城的功能: 1.1.2 制作目的: 灵活运用所学知识完成商城实战. 1.1.3 数据库分析和设 ...
- Python学习之==>模块结构调整
一.为什么要进行模块结构调整 当一个脚本中有大量的配置.方法及接口时,脚本显得十分臃肿,可读性很差.为了提高代码的易读性,可以将一个繁杂的脚本根据不同的功能放在不同的目录下分类管理,这整个过程叫做模块 ...
- 黑马eesy_15 Vue:04.综合案例(前端Vue实现)
黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...
- JavaWeb网上图书商城完整项目--21.用户模块各层相关类的创建
1.现在要为user用户模块创建类 用户模块功能包括:注册.激活.登录.退出.修改密码. User类对照着t_user表来写即可.我们要保证User类的属性名称与t_user表的列名称完全相同. 我们 ...
随机推荐
- Internet Explorer 11.0.9600.16428 For Windows 7
官方消息http://blogs.msdn.com/b/ie/archive/2013/11/07/ie11-for-windows-7-globally-available-for-consumer ...
- Hive教程之metastore的三种模式
Hive中metastore(元数据存储)的三种方式: 内嵌Derby方式 Local方式 Remote方式 [一].内嵌Derby方式 这个是Hive默认的启动模式,一般用于单元测试,这种存储方式有 ...
- L3-014 周游世界 (30 分)
周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线.铁路线.大巴线,令人眼花缭乱.所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅 ...
- python urllib2 error handling
python 2 里面的下载实现. https://stackoverflow.com/questions/666022/what-errors-exceptions-do-i-need-to-han ...
- 设计模式(Python)-策略模式
本系列文章是希望将软件项目中最常见的设计模式用通俗易懂的语言来讲解清楚,并通过Python来实现,每个设计模式都是围绕如下三个问题: 为什么?即为什么要使用这个设计模式,在使用这个模式之前存在什么样的 ...
- Scriptcase v8推出内部測试版及价格调整
PHP代码生成器Scriptcase如今已经内部推出了v8.0版本号,8.0相比于曾经的版本号做了大幅度调整.我们将在完好測试的基础上发表8.0的相关文章. 另,即日起,Scriptcase的20%优 ...
- 解决crontab不加载环境变量问题
公司需要做异构库数据同步,由于之前实际使用过,且字段类型也兼容,满足业务场景,使用了阿里开源数据同步工具:datax,服务器上crontab定时脚本执行. 由于crontab只加载/ect/envir ...
- Apache 多网站配置
直接看实例就清楚了 Listen 80<VirtualHost *:80> DocumentRoot D:/Server/www ServerAdmin webmaster@lifashi ...
- Spring线程池ThreadPoolTaskExecutor配置及详情
Spring线程池ThreadPoolTaskExecutor配置及详情 1. ThreadPoolTaskExecutor配置 <!-- spring thread pool executor ...
- bzoj2750最短路计数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2750 枚举每一个起点,通过该边的子树中有多少节点就知道本次它被经过几次了: 因为同一起点到该 ...