项目实战笔记
前台:呈现给用户的视觉和基本操作
后台:用户浏览网页时候,用户看不到的后台数据
前面两者都包含前端和后端
技术选型要统一
后端
接入层(control):
- 接受请求,获取传递过来的参数
- 调用服务层
- 存储数据
- 进行页面或者资源跳转
服务层(service):
1,处理业务逻辑
2,调用持久层
持久层(dao):
与数据库进行交互,对数据库进行增删改查
分层的目的是为了降低开发中的耦合性
如何在idea中导入本地jar包
在根项目路径下创建一个libs目录,将本地jar包复制到该位置下面,并选择marked as library
C3po连接池在idea中的使用
在导入c3p0的jar包之后,编写这个c3p0的配置文件,名字必为c3p0-config.xml,并且必须放在src下面
使用数据库连接池可以加快数据库的连接速度
1.在加入本地jar包时候切记是放在lib包下的,不是libs下的
2.页面放在WEB-INF下面更加安全,后端通过重定向等同于再次从外面向里面发送一个请求,也是进不去的,所以还是只有通过后端servlet的转发才可以到达
3.这个c3p0一定要放在resource下面才能进行一个自动的配置,需要根据自己放进去的mysql驱动版本来选择这个驱动的名字
4.preparestatement,resultset,connection的顺序要分清,可以将最后的关闭封装到一个工具类方法中
5,使用接口让程序更灵活,体现多态,规范开发
面向接口时候可以达到多人同时开发
6灵活运用这个工厂设计模式的这种思想,可以抽取一部分需要反复重复运用,但是代码没有任何改变的代码
对于这个option,需要注意的是,在点击查看之后,需要在后来跳转的页面中也选中刚才的option
问题1,使用js或者jquery获取元素节点时,不起作用
解决:Item.val改为item.value
通过js中的当数据发生改变,立马发起请求,免去了一个点击查看餐桌的步骤
通过一个重定向(请求链断开的方式)的方式来获取页面的话,会失去reqesut中的保存的值
如何解决这个添加到购物车之后的刷新产生的自增
使用重定向
通过重定向发送请求中,url中拼接的参数,同样在后来的程序中使用reqeust.getParameter也可以获得参数值
获取请求中拼接过来的参数通过getparameter,获取setAttribute中的参数值,通过getAttribute获取
一个批处理的操作
为保证事务的一致性,我们使用停止自定提交事务(connection.setAutoCommit(false)),设置手动提交,只有一连串的事务完成之后才进行提交(connection.commit())
WEB-INF下面的页面只可以通过这个request.转发来跳转,不可通过重定向
当一个map对象new之后就不是为null了,这时候需要使用isEmpty()来判断是否为空
Return false
作用一般使用用于取消默认动作
阻止提交表单
组织继续执行下面的代码
保存在session中的数据是在整个浏览器中有效,默认30分钟,前提是保存数据后浏览器没有关闭
数据库连接时候的urlip地址使用127.0.0.1部署在服务器时候比localhost方便