黑马程序员技术交流社区
标题:
【石家庄校区】就业班_JavaEE_day25_29_商城项目
[打印本页]
作者:
风中的消逝
时间:
2018-6-16 11:37
标题:
【石家庄校区】就业班_JavaEE_day25_29_商城项目
本帖最后由 小石姐姐 于 2018-6-21 16:05 编辑
就业班_JavaEE_day25_29_商城项目
一 软件生命周期
1 需求
产品经理 需求规格说明书 界面原型
2 分析
架构师
概要设计
分层
技术选型
编码规范 命名规范
约定
3 编码
开发人员
4 测试
测试人员 边界测试 压力测试
5 上线
6 维护
运维人员
二 主要技术点
1 mvc设计模式
Jsp servlet javabean(service+dao)
2 Java三层(view service dao)
3 面向接口编程(IService IServiceImpl IDao IDaoImpl)
4 BaseServlet 模拟strurts2
5 BeanFactory 模拟springIOC
6 JdbcUtils4.0+EHCache 模拟hibernate
7 Commons工具类
Beantutils 注册java.util.Date的转换器
DBUtils 注册java.util.Date的转换器
Fileupload
IO
8 Ajax json
9 分页 pagebean封装
三 项目中事务注意点
1 connection必须关闭。
2 多个逻辑操作使用同一个connection
3 dbutils处理事务有另外一套API。 update(conn,sql,params), 带conn的方法dbutils不会去关闭connection。
4 事务在service层进行处理。模板代码如下:
try{
beginTransaction();
dao.xxx();
dao.yyy();
commitAndCloseConn();
}catch(Exception e){
rollbackAndCloseConn();
}
5 通过ThreadLocal来实现每个线程中共享同一个connnection。因为servlet是以多线程的方式对外提供服务。即每次访问都是一个新线程。
通过ThreadLocal将Connection与当前线程进行绑定。 在其它地方需要用时,通过 get() 方式获取即可。
ThreadLocal 是一个key-value结构,key是当前线程对象。set(x) set方法默认以当前线程对象为key取出value。
Hibernate即通过这种方式来实现事务的操作。
四 商品分页
1 pagebean封装: currentPage totalPage totalCount pageSize list<T>
2 客户端发送给后台 currentPage
3 带条件分页 :
简单条件分页可以将currentPage和条件传给service。
复杂条件分页可以将条件也进行封装。
五 重复提交
产生的原因
1:添加或者修改后 转发回查询页面,刷新会重复提交
2:在网速慢的情况下,用户多次点击提交按钮。
重复提交的解决方式:
1 一次性令牌机制 (token)在生成添加页面是生成UUID 并将UUID保存在session中,当添加后,将session中的remove。
2 添加或者修改后,不做转发而是做重定向。
六 缓存
EHCache
数据结构形式:
map [ cachename,cache]
cache[elementname,element]
element.getObjectvalue()
Redis 后续学习
七 文件上传
采用commons-fileupload技术
1 不能使用request来获取参数了
2 FileItem封装请求头
3 判断是否是文件域 获取输入流
4 文件在服务器端保存要解决重名和分散存储二个问题
5 后续会用到图片服务器,能比较好解决重名和分散存储问题
八 javamail
smtp 邮件发送协议
pop3 邮件接收协议
邮件工具类
九 其它
一个表单通过多个按钮或者超链接,提交到不同的地址 ;
通过js修改form的action属性和method的隐藏属性;
表单提交的方法 submit();
按钮上添加js 通常采用 <input type="button" value="">;
超链接上添加js 通常采用
<a href="javascript:change()" >xxxxxx</a>或者<a href="javascript:void(0)" >xxxxxx</a>
十 项目中遇到的问题
1 request.getParameterMap() 获取的map不能做修改。
根据Java规范:request.getParameterMap()返回的是一个Map类型的值,该返回值记录着前端(如jsp页面)所提交请求中的请求参数和请求参数值的映射关系。
这个返回值有个特别之处——只能读。不像普通的Map类型数据一样可以修改。
这是因为服务器为了实现一定的安全规范,所作的限制。比如WebLogic,Tomcat,Resin,JBoss等服务器均实现了此规范。
2 购物车中的购物项使用map进行封装,方便根据product查询和删除。ehcache中也是用的map集合
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2