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

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

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

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

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

课程地址:https://developer.aliyun.com/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)功能,支持将查询分析语句进行可视化展示。
5525 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4504 0
1395
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载