zoukankan      html  css  js  c++  java
  • 【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:

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/xieyupeng/p/6933488.html
Copyright © 2011-2022 走看看