首页 > 代码库 > 【JAVAWEB学习笔记】网上商城实战:环境搭建和完成用户模块

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

网上商城实战

今日任务

  • 完成用户模块的功能

1.1      网上商城的实战:

1.1.1    演示网上商城的功能:

 技术分享

 

1.1.2    制作目的:

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

1.1.3    数据库分析和设计:

 技术分享

 

1.1.4    代码实现:

1.1.4.1  通用的Servlet的编写:

传统的方式:

传统的方式:* 一个请求对应一个Servlet.* 能不能一个模块对应一个Servlet.一个模块对应一个Servlet:<a href=http://www.mamicode.com/”/UserServlet?method=add”>添加"color: #0000ff;">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:

 

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