黑马程序员JavaEE就业班同步笔记第一阶段Word文件下载.docx
《黑马程序员JavaEE就业班同步笔记第一阶段Word文件下载.docx》由会员分享,可在线阅读,更多相关《黑马程序员JavaEE就业班同步笔记第一阶段Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
method=findById
传统:
[AppleScript]纯文本查看复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
publicclassUserServletextendsHttpServlet{
publicvoidservice(HttpServletRequestreq,HttpServletResponseresp){
//接收参数:
StringmethodName=request.getParameter(“method”);
if(“regist”.equals(methodName)){
regist(req,resp);
}elseif(“login”.equals(methodName)){
login(req,resp);
}
publicvoidregist(HttpServletRequestreq,HttpServletResponseresp){
publicvoidlogin(HttpServletRequestreq,HttpServletResponseresp){
publicclassProductServletextendsHttpServlet{
if(“findAll”.equals(methodName)){
findAll(req,resp);
}elseif(“findById”.equals(methodName)){
findById(req,resp);
publicvoidfindAll(HttpServletRequestreq,HttpServletResponseresp){
publicvoidfindById(HttpServletRequestreq,HttpServletResponseresp){
反射:
publicclassBaseServletextendsHttpServlet{
//http:
//获得Class:
Classclazz=this.getClass();
Methodmethod=clazz.getMethod(methodName,HttpServletRequest.class,HttpSerlvetResponse.class);
Stringpath=(String)method.invoke(this,req,resp);
if(path!
=null){
req.getRequestDispatcher(path).forward(req,resp);
1
2
3
4
5
6
7
8
publicclassUserServletextendsBaseServlet{
publicStringregist(HttpServletRequestreq,HttpServletResponseresp){
return“/login.jsp”;
publicStringlogin(HttpServletRequestreq,HttpServletResponseresp){
return“/index.jsp”;
publicclassProductServletextendsBaseServlet{
publicStringfindAll(HttpServletRequestreq,HttpServletResponseresp){
publicStringfindById(HttpServletRequestreq,HttpServletResponseresp){
1.3.2搭建开发环境:
【步骤一】:
引入开发jar包
*mysql
*c3p0
1
*dbutils
*beanutils
2
*jstl
*mail
*fileupload
【步骤二】:
创建包结构:
【步骤三】:
引入工具类和配置文件:
【步骤四】:
编写通用的Servlet:
1.3.3用户模块的代码实现:
【创建数据库和表】:
CREATETABLE`user`(
`uid`varchar(32)NOTNULL,
`username`varchar(20)DEFAULTNULL,
`password`varchar(20)DEFAULTNULL,
`name`varchar(20)DEFAULTNULL,
`email`varchar(30)DEFAULTNULL,
`telephone`varchar(20)DEFAULTNULL,
`birthday`dateDEFAULTNULL,
`sex`varchar(10)DEFAULTNULL,
`state`int(11)DEFAULTNULL,
`code`varchar(64)DEFAULTNULL,
PRIMARYKEY(`uid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
【引入页面】
【创建相关类】
【用户的注册功能】
在首页上点击【注册】链接:
跳转到注册页面:
在注册页面中输入相关的信息:
*进行表单校验:
JQuery实现校验.
*异步用户名校验:
点击【注册】按钮:
提交到Servlet:
在Servlet中调用业务层调用Dao完成保存操作,同时发送一封激活邮件:
【发送激活邮件】
∙邮件发送的相关的概念:
*邮箱服务器
:
如果一台电脑安装了邮箱服务器的软件,这台电脑称为是邮箱服务器.
*电子邮箱
其实就是邮箱服务器上的一块空间,通过电子邮箱账号访问这块空间的数据.
*收发邮件的协议
:
*发邮件:
SMTP协议:
SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
25默认端口号
*收邮件:
POP3协议:
POP3,全名为“PostOfficeProtocol-Version3”,即“邮局协议版本3”。
是TCP/IP协议族中的一员。
默认端口是110
IMAP协议:
IMAP(InternetMailAccessProtocol,Internet邮件访问协议)以前称作交互邮件访问协议(InteractiveMailAccessProtocol)。
IMAP是斯坦福大学在1986年开发的一种邮件获取协议。
*收发邮件的过程:
【搭建邮箱服务器】
∙安装易邮邮箱服务器:
∙配置易邮邮箱服务器:
*修改域名:
*注册账号:
∙客户端收发邮件的软件:
*OutLook
微软,收费的.
*FoxMail
免费的.
∙安装收邮件客户端软件:
【邮件发送的代码】
【激活用户】
在邮箱中点击【激活连接】
*根据激活码查询用户:
*修改用户状态:
*将激活码置为null:
页面跳转:
【用户登录】
在首页上点击【登录】链接.
跳转到登录页面:
在登录页面中输入信息:
点击【登录】按钮:
【用户退出】
在首页上点击【退出】链接
销毁session.
2
前台分类模块的功能:
2.1
需求:
2.2
分析:
使用异步的方式完成分类的加载:
2.3代码实现:
在首页上添加事件:
$(function(){
异步加载分类的数据;
});
创建分类的表:
CREATETABLE`category`(
`cid`varchar(32)NOTNULL,
`cname`varchar(20)DEFAULTNULL,
PRIMARYKEY(`cid`)
创建分类的相关的类:
相关代码的实现:
异步加载分类,显示JSON数据:
每个页面上都由分类的信息,每次进行页面跳转的时候都需要去连接数据库进行查询:
这样效率很低.需要优化当前程序!
!
*将数据存入到缓存中,每次获取的时候从缓存中进行获取.
*EHCache
Hibernate框架二级缓存使用
*Memcached
*Redis
*使用缓存的技术优化程序!
!
*引入ehcache的包:
*代码实现:
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Override
publicList<
Category>
findAll()throwsSQLException{
/*CategoryDaocategoryDao=newCategoryDaoImpl();
returncategoryDao.findAll();
*/
/**
*使用缓存优化程序,先从缓存中获取数据
*
*获取到:
直接返回
*获取不到:
查询数据库,将记录存入到缓存中.
//读取配置文件
CacheManagercacheManager=CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("
ehcache.xml"
));
//从配置文件中获取名称为categoryCache缓存区
Cachecache=cacheManager.getCache("
categoryCache"
);
//判断缓存中是否有list集合:
Elementelement=cache.get("
list"
List<
list=null;
if(element==null){
//缓存中没有数据
System.out.println("
缓存中没有数据,查询数据库====="
CategoryDaocategoryDao=newCategoryDaoImpl();
list=categoryDao.findAll();
element=newElement("
list);
cache.put(element);
}else{
//缓存中已经存在数据
缓存中有数据,没有查询数据库====="
list=(List<
)element.getObjectValue();
returnlist;
3
前台商品信息的显示:
3.1
首页上最新商品和热门商品的显示:
创建商品表
CREATETABLE`product`(
`pid`varchar(32)NOTNULL,
`pname`varchar(50)DEFAULTNULL,
`market_price`doubleDEFAULTNULL,
`shop_price`doubleDEFAULTNULL,
`pimage`varchar(200)DEFAULTNULL,
`pdate`dateDEFAULTNULL,
`is_hot`int(11)DEFAULTNULL,
`pdesc`varchar(255)DEFAULTNULL,
`pflag`int(11)DEFAULTNULL,
`cid`varchar(32)DEFAULTNULL,
PRIMARYKEY(`pid`),
KEY`sfk_0001`(`cid`),
CONSTRAINT`sfk_0001`FOREIGNKEY(`cid`)REFERENCES`category`(`cid`)
创建相关的类:
在IndexServlet调用业务层完成查询即可:
3.2
显示某个分类的商品:
在首页上点击某个分类:
传递分类的ID,当前页数.
3.3
显示某个商品详情:
在商品列表页面上点击【某个商品】
传递一个pid.
3.4
登录的验证码及自动登录及记住用户:
验证码---session、jq动态绑定
自动登录—--cookie+filter
记住用户名---cookie