用户模块之注册功能完成|学习笔记-阿里云开发者社区

开发者社区> -技术小能手-> 正文

用户模块之注册功能完成|学习笔记

简介: 快速学习用户模块之注册功能完成
+关注继续查看

开发者学堂课程【Java Web项目实战2:图书商城:用户模块之注册功能完成】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:/learning/course/35

用户模块之注册功能完成


UserDao.java:

1.?package cn.itcast.bookstore.user.dao;

2.??import java.sql.SQLException;

3.?/**

4.?*User持久层

5.?* @author cxf

6.?*

7.?*/

8.?public class UserDao {

9.????private QueryRunner qr = new TxQueryRunner();

10.????/**

11.?按用户名查询

12.?*@param username

13.?*@return

14.?*/

15.????public User findByUsername(String username){

16.???????????try {

17.?String sql = "select * from tb_user where username=?";

18.?return qr.query(sql,new BeanHandler<User>(User.class),username);

19.?} catch (SQLException e) (

20.?throw new RuntimeException(e);

21.?}

22.?}

23.??/**

24.?按用户名查询

25.?*@param username

26.?*@return

27.?*/

28.????public User findByUsername(String email){

29.???????????try {

30.?String sql = "select * from tb_user where email=?";

31.?return qr.query(sql,new BeanHandler<User>(User.class),email);

32.?} catch (SQLException e) (

33.?throw new RuntimeException(e);

34.?}

35.?}

36.?/**

37.?*插入user

38.?**param user

39.?*/

40.?public void add(User user) {

41.?try {

42.?String sql = "insert into tb_user values(?,?,?,?,?,?)";

43.?Object[]params=(user.getUid(),user.getusername(),

44.?user.getPassword(),user.getEmail(),user.getCode(),

45.?user.isState()};

46.?qr.update(sql,parms);

47.?} catch(SQLException e) {

48.?throw new RuntimeException(e);

49.?}

50.?}

51.?}

Userservice,java:

1.package cn.1tcast.pookstore.user.service;

2.import cn.itcast.bookstore.user.dao.UserDao;

3.import cn.itcast.bookstore.user.domain.User;

4./**

5.*User业务层

6.*@author cxf

7.*

8.*/

9.public class UserService (

10.private UserDao userDao = new UserDao();

11./**

12.*注册功能

13.* @param form

14.*/

15.public void regist(User form) throws UserException(

16.//校验用户名

17.User user = userDao.findByUsername(form.getUsername());if(usex!= null)throw new UserException("用户名已被注册!");

18.//校验email

19.user = userDao.findByEmail(form.getEmail());

20.if(user != null)throw new UserException("Email已被注册!");

21.//插入用户到数据库

22.userDao.add(form);

23.}

24.

UserServlet.java:

?

1.?package cn.itcast.bookstore.user.web.servlet;

2.?import java.io.IOException;

3.?/**

4.?*User表述层

5.?*/

6.?public class UserServlet extends BaseServlet {

7.?private UserService userService = new UserService();

8.?/**

9.?*注册功能

10.?* @param request

11.?* @param response

12.?* @return

13.?* @throws ServletException

14.?* @throws IOException

15.?*/

16.?public String regist(HttpServletRequest request, HttpservletResponse response)

17.?throws ServletException, IOException {

18.?/*

19.?*1.封装表单数据到form对象中

20.?*2.补全:uid、code

21.?*3.输入校验

22.?*>保存错误信息、form到request域,转发到regist.jsp

23.?*4.调用service方法完成注册

24.?*>保存错误信息、form到request域,转发到regist.jsp

25.?*5.发邮件

26.?*6.保存成功信息转发到msg.jsp

27.?*/

28.?//封装表单数据

29.?User form= CommonUtils.toBean(request.getParameterMap(),User.class);

30.?//补全

31.?form.setUid(CommonUtils.uuid());

32.?form.setcode(CommonUtils.uuid()+ CommonUtils.uuid());

33.?/*

34.?*输入校验

35.?*1.创建一个Map,用来封装错误信息,其中key为表单字段名称,值为错误信息

36.?*/

37.?Map<String,String> errors = new HashMap<String,String>();

38.?/*

39.?*2.获取form中的username、password、email进行校验

40.?*/

41.?String username = form.getUsername();

42.?if(username == null Il username.trim().isEmpty()){

43.?errors-put(”username”,"用户名不能为空!");

44.?} else if(username.length()< 3 Il username.length()> 10)(errors.put("username","用户名长度必须在3~10之间!");

45.?}

46.?String password = form.getPassword();

47.?if(password== null ‖password.trim().isEmpty()){

48.?errors-put("password”,"密码不能为空!");

49.?} else if(password.length()< 3 ‖password.length()> 10) {

50.?errors、put("passwoxd","密码长度必须在3~10间!"):

51.?}

52.?String email = form.getEmail();

53.?if(email == null ‖ email.trim().isEmpty()){

54.?errors.put(”email","Email不能为空!");

55.?} else if(email.matches("\\w+@\\w\\.\\w")){

56.?errors.put("emai1”,"Email格式错误!");

57.?}

58.?/*

59.?*3.判断是否存在错误信息

60.?*/

61.?if(errors.size()> 0){

62.?//1.保存错误信息

63.?//2.保存表单数据

64.?//3.转发到regist.jsp

65.?request.setAttribute("errors",errors);

66.?request.setAttribute("form",form);

67.?return "f:/jsps/user/regist.jsp";

68.?}

69.?/*

70.?*调用service的regist()方法

71.?*/

72.?try {

73.?userservice.regist(form);

74.?} catch (UserException e) {

75.?/*

76.?*1.保存异常信息

77.?*2.保存foxm

78.?*3.转发到regist.jsp

79.?*/

80.?request.setAttribute("msg",e.getMessage());

81.?request.setAttribute("form",form);

82.?return "f:/jsps/user/regist.jsp";

83.?

84.?/*

85.?*发邮件

86.?*准备配置文件!

87.?*/

88.?//获取配置文件内容

89.?Properties props = new Properties();

90.?props.load(this.getClass().getClassLoader()

91.?·getResourceAsStream("email_template.properties"));

92.?string host=props.getproperty("host");//获取服务器主机

93.?string uname= props·getProperty("uname");//获取用户名

94.?string pwd= props.getProperty("pwd");//获取密码

95.?Stringfrom =props.getProperty("from");//获取发件人

96.?string to =form.getEmail();//获取收件人

97.?String subject三props.getProperty("subject");//获取主题

98.?string content=props.getProperty("content");//获取邮件内容

99.?content = MessageFormat.format(content,form.getcode());//替换{0}

100.?Session session=MailUtils.createSession(host,uname,pwd);//得到session

101.?Mail mail= new Mail(from,to,subject,content);//创建邮件对象

102.?try {

103.?MailUtils.send(session,mail);//发邮件!

104.?} catch (MessagingException e) {

105.?}

106.?/*

107.?*1.保存成功信息

108.?*2.转发到msg.jsp

109.?*/

110.?request.setAttribute("msg”,"恭喜,注册成功!请马上到邮箱激活");

111.?}

112.?}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux学习--&gt;如何通过Shell脚本实现发送邮件通知功能?
1、安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件。不过mail命令是依赖sendmail的,所以我们需要先检查安装和配置sendmail。
5168 0
当我们谈深度学习时,我们用它落地了什么?阿里云内容安全功能全新升级
近日,阿里云在深度学习方面动作频频,先后发布了OCR证件识别,声纹检测,人脸搜索,视频鉴黄服务以及相似图片搜索功能,下面小编就一一为大家介绍五大功能应用。
3230 0
日志服务(原SLS)发布:仪表盘(Dashboard)功能
日志服务在9月推出仪表盘(Dashboard)功能,支持将查询分析语句进行可视化展示。
5524 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的,?mysql的 3306,?mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建. ? have?fun! ?将编程看作是一门艺术,而不单单是个技术。
4480 0
1280
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载
http://www.vxiaotou.com