A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这应该是第六篇笔记
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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马