• 【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:

  • 相关阅读:
    一部感天动地的自学编码之旅
    c++初学
    imooc-c++学习感悟
    第二次实践作业
    大一下学期的自我目标(要求包含对大一上学期的总结、对面向对象课程完成后学习到的能力的预期,对面向对象课程的期望、对编程和专业能力的愿景规划)
    面向对象程序设计 ——第二次作业(2)
    面向对象程序设计 ——第二次作业(1)
    面向对象程序设计 ——第一次作业
    面对对象程序设计第二次作业2
    面对对象程序设计第二次作业
  • 原文地址:https://www.cnblogs.com/xieyupeng/p/6933488.html
Copyright © 2020-2023  润新知