这应该是第六篇笔记
Servlet的生命周期 生命周期:就是一个对象从创建到销毁的过程 Servlet生命周期:Servlet从创建到销毁的过程 何时创建:用户第一次访问时创建Servlet的实例 何时销毁:当项目从服务器移除的时候,或者关闭服务器的时候 用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.单例 Servlet的相关配置: 【启动时创建Servlet】 Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行对Servlet的配置: 在web.xml中在<servlet></servlet>标签中设置 //思想 有一些资源需要初始化很耗时 第一次访问的时候初始化资源(耗时)以后访问都无需再初始化 把这个耗时的操作放到服务器启动的时候 【url-pattern的配置】 完全路径匹配:以/开始 eg: /servetDemo4, /aaa/servetdemo5, /aa/bbb/serverdemo6 目录匹配: 以/开始,以 * 结束 eg: /aaa/*, 扩展名匹配: 不能以/开头,以*开始 eg: *.do 完全路径匹配 > 目录 > 扩展名 开发中的路径的编写 相对路径:都是需要找位置相对关系不能以/开始 ./当前路径 ../ 上一级目录 绝对路径:不需要找位置相对关系以/开始 绝对路径分为客户端路径和服务器端路径 行 头 Setheader(stringkey,string value) addheader(string key, string value) 体 解决乱码问题: ServletContext:重要 ServletContext的作用: * 1.用来获得全局初始化参数. * 2.用来获得文件的MIME的类型. 3.作为域对象存取数据. 存:setAttribute(string name, objectvalue); 取:object getAttribute(string name); 删:removeAttribute(string name); ServletContext是一个域对象. 作用范围:整个web工程. 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象. 销毁:服务器关闭的时候,或者项目从服务器中移除的时候. 4.用来读取web项目下的文件. 反射:获得Method对象,然后让方法执行invoke 内省内省:用来获得JavaBean的属性及属性的get或set方法 JavaBean的编写规则 事务事务指的是逻辑上的一组操作,组成这组操作的各个单元要么一起成功,要么一起失败 MYSQL的事务管理有两种方式(MYSQL数据库事务默认是自动提交的,Oracle数据库默认是不自动提交) 1 手动开始事务 start transaction -- 开启事务 多条sql commit/ rollback; 2 设置一个自动提交参数 show variables like ' %commit% '; -- 查看与commit相关参数 JDBC中的事务管理JDBC的事务管理的API setAutoCommit(boolean autoCommit) 重复提交的问题: 添加完商品之后,转发到一个页面,刷新该页面 网速很慢,点击提交的按钮,其实已经在提交了,但是网速慢,不停的点击提交 解决重复提交的根本解决办法:令牌机制(一次性) 生成随机的令牌保存在session中 在表单的提交的时候,讲随机的令牌放入到表单的隐藏字段中 在servlet中获得session中和表单中的令牌是否一致 如果一致执行插入操作,不一致转跳到其他页面,讲令牌销毁 分页功能的实现:物理分页:一次只查10条记录,点击下一页,再去查询后十条,主要使用SQL语句进行控制的分页 缺点:经常需要和数据库交互 优点:数据量特别大不会导致内存溢出, 逻辑分页:一次性讲所有数据全部查询出来,再根据需要进行截取,List集合进行控制。subList() 缺点:数据量如果特别大,容易导致内存溢出 优点:与数据库交互的次数少 不同的数据库对分页的语句也是不一样的: MYSQL进行分页: 使用limit关键字 select * from 表名 where ...Group by ...Having...Order by ...Limit a.b;
a代表从哪开始,b代表查询的记录数
根据页数去计算limit后面的两个参数:
currPage 当前页数
begin 从哪开始
pageSize 每页显示多少条
begin = (currPage - 1) * pageSize;
Oracle进行分页:使用SQL语句嵌套 SQL Server数据库进行分页: 使用top关键字 AJAX的响应式数据 文本,一段HTML的数据,XML,JSON 使用用具生成XML文件: 通常使用xStream工具,将集合,数组,对象转成XML JOSN的生成工具对象表示为键值对 JOSNLIB转换数据: 监听器:Listerner什么是监听器: 监听器:就是一个JAVA类,用来监听其他的JAVA的状态的变化 用途: 用来监听其他的对象的变化 主要应用在图形化界面中比较多:GUI,Android. 相关术语事件源:被监听的对象(汽车) 监听器:监听的对象(报警器) 事件源与监听器的绑定:就是在汽车上去安装报警器 事件:指的是事件源的改变(踹汽车一脚) WEB中的Listener监听器和Filter过滤器都是属于Servlet规范中的高级的技术 WEB中的监听器共有三类八种(监听三个域对象) 事件源:Servlet中的三个域对象ServletContext, HttpSession, ServletRequest 监听器:自定义类实现8个接口 事件源和监听器的绑定:配置 WEB中的监听器的分类三类八种一类:监听三个域对象的创建和销毁的监听器 ServletContextListener HttpSessionListener ServletRequestListener 二类:监听三个域对象的属性变更的监听器(属性添加,移除,替换) ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener 三类:监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化) HttpSessionBindingListener HttpSessionActivationListener
|