p2p项目总结

来源:互联网 发布:win7系统数据恢复 编辑:程序博客网 时间:2024/06/05 15:15
p2p项目:
1.p2p项目分几个部分?3天实现了哪些功能?



(后台页面的登录与退出:)

a.后台管理的登录
1.创建包结构,导入jar包,导入从c3p0文件,修改c3p0的配置,
2.将html文件转换成jsp文件,修改jsp页面中的配置路径
3.编写创建servlet文件,service文件和dao文件
4.创建user类和user表相对应
5.在servlet中获取请求方式,创建一个login方法
6.在login方法中接受用户名和密码
7.进行非空校验,如果为空,页面重定向
8.调用service层,编写login方法,传入用户名和密码的参数
9.创建jdbcutils工具
10.调用dao层,连接数据库根据用户名和密码查询user,将得到user结果返回
11.判断user是否为空,将数据存到request,页面跳转或者重定向
12.在login.jsp显示存入的错误信息


b.登录的过滤
1.把home.jsp文件放到views路径下
2.创建index.jsp文件
3.创建一个filter过滤器
4.在过滤器中获取session中的user
5.判断user是否为空,为空表示未登录,页面重定向
6.不为空表示已登录,放行
7.在xml中配置filter

c.用户退出
1.在退出按钮前面添加显示user的名称
2.在home.jsp中给按钮标签添href属性传入参数method=logout,添加onclick事件
3.在userservlet中接受method参数,编写logout方法
4.在logout方法中销毁session,然后页面重定向

(产品的增加与修改:)

d.产品的查询
1.创建product类,与表相对应
2.创建home.js,在home.jsp导入js
3.在home.js中编写查询所有产品的函数,页面加载完成后执行函数
4.在函数中,向服务器发送请求,传入method参数
5.编写productservlet页面
6.接受method参数,执行查询所有的方法
7.在方法中,调用service层,执行查询的方法,返回一个list集合
8.在service中调用dao层
9.在DAO层中,查询数据库,将结果以list集合形式返回
10.在js页面接受返回的list集合
11.编写展示产品信息的js代码


e.产品的添加,之查询产品信息
1.给新增产品按钮添加click事件,绑定添加产品的函数
2.copy代码,在函数中弹出添加产品的层
3.在函数中,给弹出层的表格添加click事件
4.在click事件中调用serialize方法封装表格中的数据
5.向服务器发送请求
6.在servlet中接受请求方式,编写add的方法
7.在add方法中,创建product对象
8.使用beanutils封装数据到product对象
9.调用service层执行添加产品的方法
10.调用dao层,连接数据库向product表中插入数据

f.产品的修改,先查询产品信息,展示到弹出层
1.给编辑的a标签添加click事件,绑定修改产品的函数
2.在函数中,先修改弹出的层标题和按钮
3.在函数中,根据点击编辑的id,向服务器发送请求,传入id和根据id查产品采的方法参数
4.接受method参数,执行根据id查询的方法
5.调用service层,调用dao层查询产品信息,将数据返回
6.给弹出层的每个input添加id,将返回的数据显示在input中
7.在添加产品的函数中将input中的内容清空
8.给修改按钮绑定click事件,点击按钮,触发函数
9.在函数中将input中的内容封装打包,携带id的参数
10.向服务器发送请求,传入参数,method=editproduct
11.在servlet中接受参数,创建product对象,使用beautils工具封装数据到product对象中
12.调用service和dao层,编写editproduct方法
13.在修改按钮绑定的函数中,先将弹出层关闭
14.重新执行查询所有产品的函数,产品信息改变说明产品信息修改成功

g.一些BUG的修改
1.在新增产品的按钮绑定点击事件之间先解绑
2.在编辑按钮绑定点击事件之间先解绑


(前台页面的注册:)


a,点击注册按钮,服务器发送请求
1.手机号码改为邮箱
2.为注册按钮注册事件
3.创建js页面
4.导入js
5.写regist函数
6.函数里面发送请求
7.创建custemerServlet,service,dao层
8.在cservlet里面接受请求方式,执行regist方法
9.在domain里面创建custemer对象
10.在方法里面把数据封装到custemer对象里面
11.在service里面进行事件绑定


b,将创建客户和生成账户放在同一个connection里面
1.在jubcutils里面改写
2.获取与线程绑定的connection对象
3.开启事物
4.回滚事物
5.提交事物
6.关闭事物


c,在CustomerService里面完成添加客户和生成账号的操作
1.开启事物,在try里面
1.1添加客户,调用dao层
1.2
1.2生成账号,调用dao层
2.在catch里面回滚事物
3.在finally里面提交事物
4.在finally里面关闭事物


d,生成account对象,创建account的service层和dao层
1.在customerService里面写生成账号的方法
2.创建account对象
3.调用dao层创建addAccount方法,调用的是accountDAO层
4.在添加客户后面增减一个findByName方法,返回一个cc的customer对象
5.在addAccount方法前面调用account的setC(cc)方法,传入cc


e.判断名字和邮箱是否唯一
1.在customerServlet里面,在创建客户前,先写两个方法,根据名字查询用户,根据邮箱查询用户
2.判断两个用户是不是空的,不是空的说明用户名或邮箱被占用了


f.创建一个jsonResult对象,成员变量是jsonType jsonError
1.在调用service层的后面创建jsonResult对象
2.在两个判断里面getjsonType和jsonError赋值
3.将赋的值响应会浏览器
4.在创建客服前设置jsonType为1,表示成功
5.在js页面上展示信息
5.1 var jsonObj = eval(data);
5.2 如果type为0表示失败,弹出失败
5.3 如果type为1表水成功,弹出成功


g.非空的校验
1.在导入的js里面拷贝notnull方法在js里面
2.给input分别取个id
3.调用notnull方法,赋值给flag
4.判断flag
5.在里面调用trip方法

h.符合规范校验
1.调用regex方法,参数里面传递正则表达式
2.其他的同g里面的方法


(前台页面的登录:)


a.验证码的显示与点击切换
1.复制文件到utils里面,配置servlet
2.在login.html验证码的后面添加img标签和href属性,取一个id
3.在img标签里面添加click函数,
4.在customer.js里面编写函数,导入js
5.取到id然后attr设置src属性


b.点击立即登录按钮,进行登录
1.在input框里添加name属性,给按钮注册onclick事件
2.在js页面,编写login函数
3.把输入框的数据封装在json里面
4.向服务器发送请求


c.servlet里面的登录操作
1.接受三个参数
2.判断验证码
2.1从session中取到checkcode
2.2判断两个checkcode
3.调用service层,执行login方法
4.创建customer对象
5.把customer对象存入到session中
6.判读是不是空
7.创建jsonResout对象
8.设置type和error,并写会到浏览器


d.用户输入邮箱也可以登录
1.在掉serivce层之前判断录入的是不是邮箱的正则
2.如果是的,调用findbyemail方法,查到用户对象
3.把c_name设置成c.getc_name;
4.导入StringUtils文件
5.在添加表数据和登录的时候,调用stringUtils的MD5方法加密文件
6.在数据库中也对密码进行加密
7.设置password的字段为50;


e.在space页面展示account信息
1.创建一个space.js文件,导包到html中
2.创建函数,页面加载完成执行
3.向服务器发送请求
4.在服务器端,从session中取到customer信息
5.判断信息是否为空,如果为空,还未登录,封装信息,return
6.如果不为空,调用sevice层,执行findAccount方法
7.在jsonResult中添加obj content字段
8.在html中给account信息添加id
9.在js中展示信息


(前台邮箱的认证)


a.邮箱的认证
1.给验证添加点击事件
2.在html页面添加弹出层的代码
3.在space.js中写onclick函数
4.在函数中.show方法
5.在函数中发送请求,无参数
6.服务器算写方法
7.从session中取到customer数据
8.调用service层根据customer的ID取到customer对象
9.判断这个对象的status,为0说明未认证
10.为1说明已经认证,存入信息到jsonResult,return
11.在浏览器端对数据进行判断,如果认证了,弹出error
12.未认证才弹出层


b.网页加载完成就把邮箱的认证状态展示出来
1.在加载完成的servlet里面,调用一次findbyemail方法,取到customer对象,存到content中
2.在js页面中,判断c.email_status是否等于1,等于一就修改状态
3.修改图标,修改未认证


c.点击发送按钮,向控制台打印字符串
1.给发送添加id,在js页面的弹出层后面添加click事件
2.发送请求,参数,email
3.在服务器端接受参数
4.利用random工具随机生成4个字符串
5.拼接字符串,存入到session中
6.调用mailutils的send方法发送邮件,将结果响应回去


d.邮箱认证
1.给认证添加点击事件,给验证码录入框添加id
2.在js页面写函数
3.获取邮箱和验证码
4.向服务器发送请求,携带邮箱和验证码
5.服务器端接受参数
6.判断验证码是否正确,将消息存入jesonResult
7.调用sevice层修改邮箱状态
8.在js页面判断修改是否成功
9.如果成功,弹出信息,改变页面认证信息,关闭层


(前台产品的购买)

e.产品购买
1.给product_account表添加两个字段,money本金,interest利息
2.向p2p_management发送跨域请求,参数携带callback=?
3.在productServlet中判断findall方法中callback函数
4.如果不为空,调用findall方法,将结果和callback返回
5.展示产品信息,和页面滚动
6.在函数中拼接html代码,导入js和css文件


f.点击我要购买,完成购买操作
1.改变moto.html和moto.js代码
2.点击我要购买触发函数
3.在函数中发送跨域请求,根据id获取产品信息,
4.展示年化收益
5.给投资金额添加失焦事件,执行time方法
6.在失去焦点的同时判断录入的信息是不是100的整数倍
7.在失去焦点的同时显示配置结果
8.先设置投资金额的输入框为空
9.传入参数,把参数覆盖到配置结果中
10.计算预期收益,显示结果


g.确认购买的操作
1.点击我要购买后,把确认购买的按钮设置disable,在确认录入投资金额为100的整数倍后去掉disable
2.在点击确认购买后,执行函数,函数中设置变量,参数是:变量的id,变量投资的金额
3.向服务器发送请求,路径是productAccountServlet
4.在servlet中接受请求方式,执行方法
5.在方法中,先判断用户是否登录,将结果写回到浏览器
6.接受参数(要投资的金额)
7.执行fiindbyid的的方法,得到account参数
8.判断参数和account的余额的大小,将结果写回浏览器


h.修改account表中的balance值
1.创建ProductAccount的service层和dao层
2.在servlet中调用service层,执行updateAccount方法,传入account,customer,money,pid四个参数
3.在service中对余额和money进行精确控制
4.在updateAccount进行事物管理
5.在dao层修改表数据


i.添加productAccount表中的数据
1.创建product表,productAccount表
2.根据pid查询到product中的收益利率
3.计算预期的收益interest
4.封装数据到productAccount对象中
4.添加数据到productAccount表中


2.项目主要用到了哪些技术(包括原来学过的和新的点)?它们解决了什么问题? 有什么注意事项(如果有的话).
2.1.编写项目的三层架构:service,dao,web.

2.2.BeanUtils,是阿帕奇公司提供的一个组件,用来对数据进行包装,常用的方法 setProperty()  getProperty() populate();

2.3.jS常见事件:onclick,点击onblur,失去焦点

2.4.对表的记录的crud
添加表记录:  insert into  表名字 values(记录一,记录二,记录三)
删除表记录: delete from 表名 [where条件]  删除是删除一条记录,如果不带条件就是删除整个表记录
修改表记录:  update 表面 set 列名1=值1,列名2=值2 ...[where条件] 注意: 如果不加条件就是修改这个表的所有记录

2.5.事物:
什么是事物: 指的是逻辑上的一组操作,要么全部成功,要么全部失败
怎么使用事物:开启事物,start transaction
提交事物,commit
 
2.6.JDBC的事物管理
步骤: 同过connection建立连接
 关闭自动提交, setautocommit(),传入false
 提交事物, commit()
 回滚事物, rollback()
 
2.7.web开发中的资源
静态资源:
css
html
js

动态资源:
servlet
jsp

2.8.MVC模式
model,模型层,用来封装和处理数据
view,视图层,用来展示页面
control,控制层,用来写servlet代码,调用model层方法显示数据,发送到view层显示数据

2.9.什么是会话和会话技术的分类
用户点击打开一个浏览器,点击多个链接,然后关闭浏览器.这个过程就是一个会话.
用户和服务器进行交互的过程中,会产生多组数据,程序想要把这些数据包装起来,就需要使用会话技术.

cookie:由服务器端创建,保存在浏览器端.
session:由服务器端创建,保存在服务器端

2.10.什么是jsp
java serve page;java服务器页面,java + html + jsp自身的东西

2.11.过滤器的相关配置
<url-pattern>配置
<servlet-name>配置
<dispacher>配置 
REQUEST 默认情况,拦截请求
FORWORD 拦截转发
INCLUDE 拦截网页包含
ERROR网页出现全局错误全局跳转的时候拦截

2.12.什么是Jquery
jquery是一款基于js的框架,对js做了一系列的封装,给我们提供了更加方便,快捷的操作,通过jquery,我们可以更好的操作html文档,
jquery提供了更加方便丰富的事件处理,提供了简单的动画特效,提供了ajax的交互


4.通过p2p项目,你掌握了哪些技能?获得了什么成长?
掌握的内容:
在前台页面如何使用ajax向服务器发送请求:
$post(url,要传入的参数,function(data{},"json").

在后台如何将查询到的数据返回给浏览器:
response.getWrite().write("json字符串");

在servlet中如何接受前台页面发送的参数:
调用request的getparameter方法可以获取参数.

如何将信息存储到request域中:
setAttribute方法

页面的重定向和请求转发:
请求转发:request.getRequestDispatcher("").forward(request, response);
重定向:response.sendRedirect("");

使用el表达式在jsp页面显示信息:
${"msg"};

使用过滤过滤请求:
从session中取到用户的信息,判断这个信息是否为空,如果为空重定向到登录页面,不为空调用chain.doFilter方法.
注意过滤器的配置,<dispacher>标签的配置既要有request也要有response

如何将一个表单的数据封装到一个对象中:
var json = $("#表单的id").serialize();

如何将请求参数封装到一个对象中:
BeanUtils.populate(要封装的对象,request.getParameterMap());

使用jdbc对事物进行管理:
QueryRunner()
update(Connection,SQL)
update(Connection,SQL)
conn.commit();
catch()
conn.rollback();
query(Connection,SQL)

获得的成长:
a:通过这个项目,首先是增强了自己的自信心,以前面对一个web的项目时,会不知道从哪里入手.现在拿到一个项目,会先分析项目的需求,具体要实现什么样的步骤.然后在根据需求,知道自己要通过什么样的技术实现这个需求.例如,如果是用户的登录,就知道,前台要把用户名和密码封装,再向服务器发送一个请求.后台servlet中,获取请求的方式.调用service层,调用dao层,向数据库中查询用户,能查到就说明用户名密码正确.然后就可以跳转页面,查不到就重定向,让用户重新登录!

b:巩固了的前面学习的知识,提高了自己调试bug的能力.举例:如果是前台向后台发送了一个请求,在浏览器中先要看看有没发送的那个请求.如果没有,一定是发送请求那里的代码出了问题.
再看看请求的状态,如果是404,那就是请求路径的错误,如果是500.那就是服务器端代码的错误
如果状态是200.再看看响应有没有出来,如果没有响应,就需要在java代码中使用断点调试.
如果有响应.但是浏览器没有弹出信息,或者没有反应.就需要看看js代码中,显示信息那里代码的错误.
这样就可以逐一地排查出错误.
原创粉丝点击