今日任务

  • 完成用户模块的功能

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:

【JAVAWEB学习笔记】网上商城实战1:环境搭建和完成用户模块的更多相关文章

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

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

  2. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  3. Scala学习笔记(一):环境搭建

    计算机领域的编程语言种类繁多,如C.C++.Java.C#等,我们知道的一般都是较为流行的编程语言,然有更多的是没听说过的,于是也就说不上关注或者使用了 一次在网上查资料时,无意间看到了“函数式编程” ...

  4. Android学习笔记(一)开发环境搭建

    Android开发环境搭建 安装JDK 1.如果你还没有JDK的话,可以去这里http://www.oracle.com/technetwork/java/index.html ,接下来的工作就是安装 ...

  5. Hadoop学习笔记1:伪分布式环境搭建

    在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下: 1.CentOS 6.7下安装JDK , 地址: http://blog.csdn.net/yule ...

  6. Android自动化学习笔记之MonkeyRunner:MonkeyRunner环境搭建

    ---------------------------------------------------------------------------------------------------- ...

  7. angularjs2 学习笔记(一) 开发环境搭建

    开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装node.js(https://nodejs.org/en/) ...

  8. 【深度学习笔记】Anaconda及开发环境搭建

    在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学 ...

  9. java学习笔记 (1) —— Strut2.3.24环境搭建

    1.打开MyEclipse,添加WebProject,名称为testStruts2 2.配置Tomcat环境. 1) 在窗口——首选项——MyEclipse——Servers下找到Tomcat6.x ...

随机推荐

  1. zoj 2314 Reactor Cooling (无源汇上下界可行流)

    Reactor Coolinghttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 Time Limit: 5 Seconds ...

  2. CF839 B 贪心

    很玄的一道贪心题,大意是给出k排 XX - XXXX - XX这样的座位,有n个团体,要求不同团体不能相邻而坐,中间可以空一个座位或是由走廊隔开. 很明显最先想到可以以2为单位划分座位,但是中间4连座 ...

  3. IDEA 启动时,报“淇℃伅”的字符

    IDEA 启动时,报“淇℃伅”的字符,如下: 解决办法: 修改tomcat安装目录下的config/logging.properties文件,找到java.util.logging.ConsoleHa ...

  4. 【BZOJ】3572: [Hnoi2014]世界树 虚树+倍增

    [题意]给定n个点的树,m次询问,每次给定ki个特殊点,一个点会被最近的特殊点控制,询问每个特殊点控制多少点.n,m,Σki<=300000. [算法]虚树+倍增 [题解]★参考:thy_asd ...

  5. 【POJ】2142 The Balance 数论(扩展欧几里得算法)

    [题意]给定a,b,c,在天平左边放置若干重量a的砝码,在天平右边放置若干重量b的砝码,使得天平两端砝码差为c.设放置x个A砝码和y个B砝码,求x+y的最小值. [算法]数论(扩展欧几里德算法) [题 ...

  6. 3、CSS基本介绍

    1.1 CSS基本介绍一.web 标准所谓的web标准指的就是一系列规范网页书写的要求,它是由W3C组织制定,在它里面要求网页的结构.样式.行为三者相分离.二.名词解释1.结构:就是通过HTML标签搭 ...

  7. Tensorflow中使用TFRecords高效读取数据--结合Attention-over-Attention Neural Network for Reading Comprehension

    原文链接:https://arxiv.org/pdf/1607.04423.pdf 本片论文主要讲了Attention Model在完形填空类的阅读理解上的应用. 转载:https://blog.cs ...

  8. Double类型的数向上取整和向下取整

  9. wifi钓鱼 强势拿你的wifi密码

    钓鱼wifi 首先设一个场景!!! 如何得到一个免费的wifi  有人可能做过抓包跑包的方法或者跑pin码的方法然而这些方法可能会耗去你大量的时间(我曾经跑包花了一天的时间  跑pin码花了一晚上)感 ...

  10. C/C++——C语言跳出多重循环方法

    c语言的break语句只能跳出离它最近的一层循环,但是我们有时候需要跳出多层循环,以下有几种跳出多重循环的方法: 1. 使用goto ; i < MAX1; i++) { ; j < MA ...