今日任务

  • 完成用户模块的功能

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. ESP32学习笔记(一) 环境搭建与下载

    ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...

  2. Solr学习笔记之1、环境搭建

    Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...

  3. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

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

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

  5. 【JAVAWEB学习笔记】网上商城实战5:后台的功能模块

    今日任务 完成后台的功能模块 1.1      网上商城的后台功能的实现: 1.1.1    后台的功能的需求: 1.1.1.1  分类管理: [查询所有分类] * 在左侧菜单页面中点击分类管理: * ...

  6. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  7. 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】

    Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热 ...

  8. Cocos2d-x 3.2 学习笔记(一)环境搭建

    目前项目无事,时间比较充裕,因此来学习下cocos2dx,当然本人也是新手一个, 写此笔记做备忘和脚步. 最近3.2版本更新出來了!官方说这是自2.x分支以来修复了超过450个bug,3.2版本是目前 ...

  9. Lua 学习笔记(一)环境搭建

    Lua是一个小巧的脚本语言.Lua由标准C编写而成,代码简洁,几乎在所有的操作系统和平台上都可以编译,运行. 主要讲一下mac和win下的环境搭建. 工具:      1.Sublime Text 2 ...

随机推荐

  1. 跟着刚哥梳理java知识点——枚举和注解(十四)

    enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...

  2. yii2 创建ActiveForm(表单)

    表单的生成表单中的方法    ActiveForm::begin()方法    ActiveForm::end()方法    getClientOptions()方法    其它方法:errorSum ...

  3. Linux下Memcached的安装步骤

    一.安装gcc# yum -y install gcc 二.安装libevent# wget http://www.monkey.org/~provos/libevent-2.0.12-stable. ...

  4. Vue 表单验证插件

    verify github:https://github.com/liuyinglong/verifynpm:https://www.npmjs.com/package/vue-verify-plug ...

  5. cookie和session的区别异同

    1.用于保存页面信息:如自动登录,记住用户名 2.对于同一个网站只有一套cookie,它是以域名为单位的,一个域名就是一套,数量大小有限4k-10k,同时会具有过期时间 3.JS中通过document ...

  6. Select()和SelectMany()的区别

    Select与SelectMany的区别 Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值. Select() 为每个源值生成一个结果值.因此,总体结果是一个与源 ...

  7. TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。

    #三次握手 客户端向服务器端发送SYN包,客户端进入SYN_SEND状态 服务器端收到客户端发送的包返回ACK+SYN包,服务器端进入SYN_RECV状态 客户端收到服务器端返回的包再发回ACK包,客 ...

  8. CF #edu 11 C. Hard Process

    题目链接:http://codeforces.com/problemset/problem/660/C 大意是给一个01数组,至多可以将k个0变为1,问最后数组中最长能有多少个连续的1,并输出. 问题 ...

  9. 玩转Eclipse--如何使用eclipse可以更好的提高我们的工作效率

    工欲善其事必先利其器,更加了解我们的开发工具有利于提高开发效率,而合理使用快捷键可以使我们事半功倍,这里收集了eclipse中的几种常见设置,eclipse的优化以及非常全面的快捷键介绍,大家有用到的 ...

  10. 存储容量和IOPS的关系

    在云计算时代,数据量成几何形式增加,必然会考虑增加存储容量,但是增加存储容量不简单存储性能得到提升,他们之间没有必然的联系: 存储容量,就是指存储设备上能够存储数据的大小,比如,一个磁盘阵列有50T的 ...