Fork me on GitHub

Java自学之路之注册实现

1
2
3
4
5
如果哪家手机公司老板或者产品经理宣称不试用体验苹
果、三星和其他竞品,要么是虚伪,要么是不称职或者
不关心产品、远离一线了,科技创新与进步不是大家关
在屋子和寺庙里各自顿悟。
--------潘九堂

​ 最近临近毕业,闲的没事,把以前做过的java项目拿出来练练手,因为一直是自学过来的,毕业后可能就职于杭州的一家互联网公司,所以就记录一下自学之路。

1.注册流程:

​ 首先页面上面用户点击注册页面 》》》用户输入注册信息(包括用户名,密码,姓名,性别等),提交表单》》》Java后台接收用户注册的信息(一般是通过“标签的name”获取属性值)》》》使用MVC模型,Web层负责接收参数值,Service负责处理业务逻辑,Dao层负责处理与数据库相关的事》》》处理完成后,返回给前台,让用户跳转到登录成功(或者失败的页面)

2.注册实战:

第一,提交表单逻辑

Hello World

​ $\textcolor{Red}{注意:这儿的路径中的“register”必须和web.xml中的url-pattern配置的一样} $

第二,使用action指定相关的servlet处理此表单,通过web.xml中的配置找到

Hello World

第三,通过UserServlet来接收前端传来的数据,调用UserService处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Map<String, String[]> map = req.getParameterMap();
User user = new User();
try {
//自己指定一个类型转换器(将String转成Date)
ConvertUtils.register(new Converter() {
@Override
public Object convert(Class clazz, Object value) {
//将string转成date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date parse = null;
try {
parse = format.parse(value.toString());
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
}, Date.class);
//映射封装
BeanUtils.populate(user, map);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}

//设置id为uuid,随机产生字符串
user.setUid(CommonsUtils.getUUID());
//设置生日
user.setBirthday(new Date());
//设置激活状态
user.setState(0);
user.setTelephone("8888888888");
//设置激活码
String activeCode = CommonsUtils.getUUID();
user.setCode(activeCode);
boolean registerSuccess = userService.register(user);
第四,通过UserSservice来处理前端传来的数据
public boolean register(User user) {
    UserDao userDao = new UserDao();
    int row =0;
    try {
        row = userDao.register(user);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return row>0?true:false;
}
第五,通过UserSservice调用UserDao处理前端传来的数据
1
2
3
4
5
6
7
8
9
public int register(User user) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
//注册其实就是在数据中添加一条记录
String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)";
int update = runner.update(sql, user.getUid(),user.getUsername(),user.getPassword(),
user.getName(),user.getEmail(),user.getTelephone(),user.getBirthday(),
user.getSex(),user.getState(),user.getCode());
return update;
}
第六,通过UserServlet跳转注册成功(或者失败页面)

Hello World

$\textcolor{GreenYellow}{到此为止,一个注册流程就结束了,中间有几点注意的地方:} $

  • form表单提交的路径最好是${pageContext.request.contextPath},动态获取,不要写死;

  • 从前台传到后台的数据接收中,使用Map map = req.getParameterMap(),可以自动匹配对象;可以避免req.getparamater()一个一个去获取;

  • 自己指定一个类型转换器(将String转成Date),第一次遇见,感觉不错,以后直接拿来用。

  • 注册的本质是向数据库中增加一条数据。

$\textcolor{OrangeRed}{结尾彩蛋,附上私藏壁纸:}$

Hello World

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!