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

今日任务

  • 完成用户模块的功能

1.1      网上商城的实战:

1.1.1    演示网上商城的功能:

 

1.1.2    制作目的:

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

1.1.3    数据库分析和设计:

 

1.1.4    代码实现:

1.1.4.1  通用的Servlet的编写:

传统的方式:

传统的方式:
* 一个请求对应一个Servlet.
* 能不能一个模块对应一个Servlet.

一个模块对应一个Servlet:
<a href=”/UserServlet?method=add”>添加</a>
<a href=”/UserServlet?method=update”>修改</a>
<a href=”/UserServlet?method=delete”>删除</a>

public class UserServlet extends HttpServlet{

   public void service(HttpServletRequest req,HttpServletResponse resp){
           String method = req.getParameter(“method”);
           if(“add”.equals(method)){
               add(req,resp);
           }else if(“update”.equals(method)){
               update(req,resp);
           }
   }

   public void add(HttpServletRequest req,HttpServletResponse resp){
   
   }

   public void update(HttpServletRequest req,HttpServletResponse resp){
   
   }

}

改进以后:
public class BaseServlet extends HttpServlet{
   public void service(HttpServletRequest req,HttpServletResponse resp){
           String methodName = req.getParameter(“method”);
           // 反射:
           Class clazz = this.getClass(); // 指代的是子类的对象.
           Method method = clazz.getMethod(methodName ,HttpServletRequest.class,HttpServletResponse,class);
           method.invoke(this,req,resp);
   }

}


public class UserServlet extends BaseServlet{

   public void add(HttpServletRequest req,HttpServletResponse resp){
   
   }

   public void update(HttpServletRequest req,HttpServletResponse resp){
   
   }

}

public class A{
   public A(){
      System.out.println(this.getClass());
   }
}

public class B extends A{
    Public B(){

    }
}

public class Test{
   Public static void main(String[] args){
       B b = new B();
   }
}

1.1.4.2  BaseServlet的代码实现:

【创建包结构】

 

【代码实现】

public class BaseServlet extends HttpServlet{

 

    @Override

    // http://loacalhost:8080/store/UserServlet?method=add

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // 处理Post请求的乱码

        req.setCharacterEncoding("UTF-8");

        // 接收参数:

        String methodName = req.getParameter("method");

        // 反射获得类的字节码.

        Class clazz = this.getClass();

        // 获得正在执行的类的指定名称的方法

        try {

            Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);

            // 让这个方法执行:

            String path = (String) method.invoke(this, req,resp);

            if(path != null){

                req.getRequestDispatcher(path).forward(req, resp);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

}

1.1.4.3  环境的搭建:

【创建一个WEB工程】

【创建包结构】

【引入相应的jar包】

    * mysql驱动          1

    * dbutils            1

    * c3p0连接池         1

    * beanutils          2

    * JSTL               2

    * 文件上传            2

    * 发送邮件            1

【创建数据库和表】

CREATE TABLE `user` (

  `uid` varchar(32) NOT NULL,

  `username` varchar(20) DEFAULT NULL,

  `password` varchar(20) DEFAULT NULL,

  `name` varchar(20) DEFAULT NULL,

  `email` varchar(30) DEFAULT NULL,

  `telephone` varchar(20) DEFAULT NULL,

  `birthday` varchar(20) DEFAULT NULL,

  `sex` varchar(10) DEFAULT NULL,

  `state` int(11) DEFAULT NULL,

  `code` varchar(64) DEFAULT NULL,

  PRIMARY KEY (`uid`)

) 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:

原文地址:https://www.cnblogs.com/xieyupeng/p/6933488.html