今日任务

  • 完成用户模块的功能

1.1      网上商城的实战:

1.1.1    演示网上商城的功能:

1.1.2    制作目的:

灵活运用所学知识完成商城实战。

1.1.3    数据库分析和设计:

1.1.4    代码实现:

1.1.4.1  通用的Servlet的编写:

传统的方式:

  1. 传统的方式:
  2. * 一个请求对应一个Servlet.
  3. * 能不能一个模块对应一个Servlet.
  4.  
  5. 一个模块对应一个Servlet:
  6. <a href=”/UserServlet?method=add”>添加</a>
  7. <a href=”/UserServlet?method=update”>修改</a>
  8. <a href=”/UserServlet?method=delete”>删除</a>
  9.  
  10. public class UserServlet extends HttpServlet{
  11.  
  12. public void service(HttpServletRequest req,HttpServletResponse resp){
  13. String method = req.getParameter(“method”);
  14. if(“add”.equals(method)){
  15. add(req,resp);
  16. }else if(“update”.equals(method)){
  17. update(req,resp);
  18. }
  19. }
  20.  
  21. public void add(HttpServletRequest req,HttpServletResponse resp){
  22.  
  23. }
  24.  
  25. public void update(HttpServletRequest req,HttpServletResponse resp){
  26.  
  27. }
  28.  
  29. }
  30.  
  31. 改进以后:
  32. public class BaseServlet extends HttpServlet{
  33. public void service(HttpServletRequest req,HttpServletResponse resp){
  34. String methodName = req.getParameter(“method”);
  35. // 反射:
  36. Class clazz = this.getClass(); // 指代的是子类的对象.
  37. Method method = clazz.getMethod(methodName ,HttpServletRequest.class,HttpServletResponse,class);
  38. method.invoke(this,req,resp);
  39. }
  40.  
  41. }
  42.  
  43. public class UserServlet extends BaseServlet{
  44.  
  45. public void add(HttpServletRequest req,HttpServletResponse resp){
  46.  
  47. }
  48.  
  49. public void update(HttpServletRequest req,HttpServletResponse resp){
  50.  
  51. }
  52.  
  53. }
  54.  
  55. public class A{
  56. public A(){
  57. System.out.println(this.getClass());
  58. }
  59. }
  60.  
  61. public class B extends A{
  62. Public B(){
  63.  
  64. }
  65. }
  66.  
  67. public class Test{
  68. Public static void main(String[] args){
  69. B b = new B();
  70. }
  71. }

1.1.4.2  BaseServlet的代码实现:

【创建包结构】

  1. 【代码实现】
  2.  
  3. public class BaseServlet extends HttpServlet{
  4.  
  5. @Override
  6.  
  7. // http://loacalhost:8080/store/UserServlet?method=add
  8.  
  9. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  10.  
  11. // 处理Post请求的乱码
  12.  
  13. req.setCharacterEncoding("UTF-8");
  14.  
  15. // 接收参数:
  16.  
  17. String methodName = req.getParameter("method");
  18.  
  19. // 反射获得类的字节码.
  20.  
  21. Class clazz = this.getClass();
  22.  
  23. // 获得正在执行的类的指定名称的方法
  24.  
  25. try {
  26.  
  27. Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
  28.  
  29. // 让这个方法执行:
  30.  
  31. String path = (String) method.invoke(this, req,resp);
  32.  
  33. if(path != null){
  34.  
  35. req.getRequestDispatcher(path).forward(req, resp);
  36.  
  37. }
  38.  
  39. } catch (Exception e) {
  40.  
  41. e.printStackTrace();
  42.  
  43. }
  44.  
  45. }
  46.  
  47. }

1.1.4.3  环境的搭建:

  1. 【创建一个WEB工程】
  2.  
  3. 【创建包结构】
  4.  
  5. 【引入相应的jar包】
  6.  
  7. * mysql驱动 1
  8.  
  9. * dbutils 1
  10.  
  11. * c3p0连接池 1
  12.  
  13. * beanutils 2
  14.  
  15. * JSTL 2
  16.  
  17. * 文件上传 2
  18.  
  19. * 发送邮件 1
  20.  
  21. 【创建数据库和表】
  22.  
  23. CREATE TABLE `user` (
  24.  
  25. `uid` varchar(32) NOT NULL,
  26.  
  27. `username` varchar(20) DEFAULT NULL,
  28.  
  29. `password` varchar(20) DEFAULT NULL,
  30.  
  31. `name` varchar(20) DEFAULT NULL,
  32.  
  33. `email` varchar(30) DEFAULT NULL,
  34.  
  35. `telephone` varchar(20) DEFAULT NULL,
  36.  
  37. `birthday` varchar(20) DEFAULT NULL,
  38.  
  39. `sex` varchar(10) DEFAULT NULL,
  40.  
  41. `state` int(11) DEFAULT NULL,
  42.  
  43. `code` varchar(64) DEFAULT NULL,
  44.  
  45. PRIMARY KEY (`uid`)
  46.  
  47. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.2      前台用户模块:

1.2.1    注册

1.2.1.1  异步校验用户名是否存在

1.JS的事件触发一个函数.

2.使用AJAX异步向服务器发送请求.

3.得到返回的数据进行判断.

4.将信息写入到文本框后面span元素中.

1.2.1.2  完成用户注册

1.在注册页面中输入信息.

2.点击注册,提交到Servlet.

3.接收数据,封装数据.

4.在Servlet调用业务层.

5.页面跳转.

1.2.1.3  发送激活邮件

1.使用JavaMail的技术-了解.

* 了解邮件相关内容:

* 术语:

* 电子邮箱:一个邮箱服务器上的一个账号,通过账号获得到服务器上一块空间.

* 邮箱服务器:一台电脑安装一个邮箱的服务器.

* 邮件收发的协议:协议规范双方的数据的格式.

* 协议:

* 接收:POP/POP3  IMAP

* 发送:SMTP

* 邮件收发过程:

* 会配置邮箱的客户端:

【配置邮箱服务器:】

安装成功!

第一步:

点击工具→服务器设置

第二步:

第三步:

点击账号→新建账号

【配置邮箱的客户端】

* Foxmail:免费的

* 输入用户名

* 输入密码:

* 修改服务器的地址localhost.

* outlook:微软的收费的.

1.2.2    激活

在邮箱的界面点击激活链接:

提交到Servlet传递一个激活码:

根据激活码进行查询用户:

* 如果查询到该用户:修改用户的状态.

* 如果没有查询到该用户:激活失败.

1.2.3    登录

在登录页面上输入用户名和密码

点击提交:提交到Servlet.

在Servlet中接收参数

调用业务层

页面跳转

1.2.3.1  记住用户名

使用Cookie记住用户名:

* 自己完成

1.2.3.2  自动登录

使用Cookie记住用户名和密码:

使用过滤器:

* 自己完成

1.2.4    退出

* 在首页上点击退出的链接:

* 提交到Servlet:

* 销毁session:

【JAVAWEB学习笔记】网上商城实战1:环境搭建和完成用户模块的更多相关文章

  1. 【JAVAWEB学习笔记】网上商城实战:环境搭建和完成用户模块

    网上商城实战 今日任务 完成用户模块的功能 1.1      网上商城的实战: 1.1.1    演示网上商城的功能: 1.1.2    制作目的: 灵活运用所学知识完成商城实战. 1.1.3    ...

  2. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  3. Scala学习笔记(一):环境搭建

    计算机领域的编程语言种类繁多,如C.C++.Java.C#等,我们知道的一般都是较为流行的编程语言,然有更多的是没听说过的,于是也就说不上关注或者使用了 一次在网上查资料时,无意间看到了“函数式编程” ...

  4. Android学习笔记(一)开发环境搭建

    Android开发环境搭建 安装JDK 1.如果你还没有JDK的话,可以去这里http://www.oracle.com/technetwork/java/index.html ,接下来的工作就是安装 ...

  5. Hadoop学习笔记1:伪分布式环境搭建

    在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下: 1.CentOS 6.7下安装JDK , 地址: http://blog.csdn.net/yule ...

  6. Android自动化学习笔记之MonkeyRunner:MonkeyRunner环境搭建

    ---------------------------------------------------------------------------------------------------- ...

  7. angularjs2 学习笔记(一) 开发环境搭建

    开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装node.js(https://nodejs.org/en/) ...

  8. 【深度学习笔记】Anaconda及开发环境搭建

    在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学 ...

  9. java学习笔记 (1) —— Strut2.3.24环境搭建

    1.打开MyEclipse,添加WebProject,名称为testStruts2 2.配置Tomcat环境. 1) 在窗口——首选项——MyEclipse——Servers下找到Tomcat6.x ...

随机推荐

  1. DLL初试

    环境: VC++6.0 步骤: 1.建立一个WIN32 DYNAMIC-LINK LIBRARY工程,编写CPP文件,文件内容例如: #include "stdafx.h" #in ...

  2. TCP和UDP相关概念

    位于传输层的协议,都是基于IP协议的. TCP是面向连接的.可靠的传输,UDP是无连接的.不可靠的传输.要进行TCp传输时候,需要进行三次握手,建立连接,然后才能发送数据,而且在发送过程中,有数据的确 ...

  3. PHPMailer发送邮件(一)

    Github 地址:(已更新,适用于旧版) PHPMailer : https://github.com/PHPMailer/PHPMailer 一.基本要求 Web访问正常(apache可以正常访问 ...

  4. 2017ACM暑期多校联合训练 - Team 2 1008 HDU 6052 To my boyfriend (数学 模拟)

    题目链接 Problem Description Dear Liao I never forget the moment I met with you. You carefully asked me: ...

  5. bzoj 1072 状压DP

    我们用w[i][j]来表示,i是一个二进制表示我们选取了s中的某些位,j表示这些位%d为j,w[i][j]则表示这样情况下的方案数,那么我们可以得到转移.w[i|(1<<k)][(j*10 ...

  6. ORA-01552 非系统表空间不能使用系统回滚段处理

    今天新搭建了一个10g的测试数据库,运行都很正常,但是在打开autotrace功能后执行语句,报错 SQL> set autotrace on SQL> select username,s ...

  7. 初学Memcached安装及使用【转】

    1.yum install memcached安装memecached 2.chkconfig memcached on设置memcached开机启动 3.service memcached star ...

  8. 谁说运维用ELK没用?我就说很有用,只是你之前不会用【转】

    1.安装JDK 1)登陆ORACLE官网 (http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ...

  9. 【技术分享】ReBreakCaptcha:利用谷歌来破解谷歌的验证码

    概述 从2016年开始,我就在琢磨寻找一种新的绕过谷歌验证码v2的方法会有多难,如果这种方法能够适用于任何环境而不仅仅是针对特定的案例,那这种方法将是非常理想的.接下来我将向你介绍ReBreakCap ...

  10. 当while read line 遇到 ssh

    问题:while read line 中使用ssh只能读取一行? #!/bin/sh while read line do echo $line ssh root@$line "echo 1 ...