【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:
【JAVAWEB学习笔记】网上商城实战1:环境搭建和完成用户模块的更多相关文章
- 【JAVAWEB学习笔记】网上商城实战:环境搭建和完成用户模块
网上商城实战 今日任务 完成用户模块的功能 1.1 网上商城的实战: 1.1.1 演示网上商城的功能: 1.1.2 制作目的: 灵活运用所学知识完成商城实战. 1.1.3 ...
- Java web与web gis学习笔记(一)——Tomcat环境搭建
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Scala学习笔记(一):环境搭建
计算机领域的编程语言种类繁多,如C.C++.Java.C#等,我们知道的一般都是较为流行的编程语言,然有更多的是没听说过的,于是也就说不上关注或者使用了 一次在网上查资料时,无意间看到了“函数式编程” ...
- Android学习笔记(一)开发环境搭建
Android开发环境搭建 安装JDK 1.如果你还没有JDK的话,可以去这里http://www.oracle.com/technetwork/java/index.html ,接下来的工作就是安装 ...
- Hadoop学习笔记1:伪分布式环境搭建
在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下: 1.CentOS 6.7下安装JDK , 地址: http://blog.csdn.net/yule ...
- Android自动化学习笔记之MonkeyRunner:MonkeyRunner环境搭建
---------------------------------------------------------------------------------------------------- ...
- angularjs2 学习笔记(一) 开发环境搭建
开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装node.js(https://nodejs.org/en/) ...
- 【深度学习笔记】Anaconda及开发环境搭建
在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学 ...
- java学习笔记 (1) —— Strut2.3.24环境搭建
1.打开MyEclipse,添加WebProject,名称为testStruts2 2.配置Tomcat环境. 1) 在窗口——首选项——MyEclipse——Servers下找到Tomcat6.x ...
随机推荐
- 分享一个数据库sql_mode 引起的坑
sql_mode坑 MySQL 5.7.x 默认值: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR ...
- PHP做文件限速下载
<?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QUERY_STRING&qu ...
- git服务器的简单搭建
安装git 安装git,参考:https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git 创建git仓库 使用ro ...
- redis+cookie+json+filter实现单点登录
目录: 1.项目集成redis客户端jedis 引入Jedis pom 2.redis连接池构建及调试 1)JedisPoolConfig源码解析 2)JedisPool源码解析 3)JedisPoo ...
- linux动态库编译和使用详细剖析 - 后续
引言 - 也许是修行 很久以前写过关于动态库科普文章, 废话反正是说了好多. 核心就是在 linux 上面玩了一下 dlopen : ) linux动态库编译和使用详细剖析 - https://www ...
- web deploy 安装失败解决
单独运行安装包,提示脚本运行失败. VS安装提示解包失败. 解决:检查Windows Management Instrumentation服务状态.需要非禁用.
- 一个设置为display:none;的div,在用.height()方法获取不到它的高,获取到的高度为0.
<div style="width:100px;height:100px;background:red;visibility:hidden"></div>/ ...
- nexus 安装配置
一.下载Nexus http://nexus.sonatype.org/downloads 我是用的版本是 nexus-2.11.4-01-bundle.tar.gz 每个版本的配置有些许差别. 二. ...
- sql函数应用例子
select p.province, data.existUserCount, data.addUserCount, data.cancelUserCount, data.threedayCancel ...
- 关于JavaScript中实现继承,及prototype属性
感谢Mozilla 让我弄懂继承. JavaScript有八种基本类型,函数属于object.所以所有函数都继承自object.//扩展:对象,基本上 JavaScript 里的任何东西都是对象,而且 ...