1. web开发概述
① cmd查看程序占用端口: netstat –ano
② window操作系统的默认dns配置 system32/drivers/etc/hosts
2. Servlet快速入门
① 一般情况下serverlet中的doget请求和dopost请求的处理方式是一样的,所以可以如下处理:
Public void doGet(…){
}
Public void doPost(…){
doGet(…) }
② 在多线程中,一个对象的成员变量是存在线程安全的,但是成员方法中的内部变量是没有线程安全问题的!
③ 线程锁尽量只锁住核心代码,使得解锁的等待时间尽量短
④ ServerContext代表当前的web应用
⑤ 一个web应用可以有多个serverlet
⑥ 类加载器只是从类加载的地方加载相应的资源
⑦ 二进制码和字节码都是使用的一套编码方式(如:utf-8、gbk、),字节码在网络传输的时候最终还是被编码成二进制码
⑧ 所有的请求头和相应头中都不能包含中文
⑨ 浏览器默认支持url编码的解释,
3. jsp入门
① jsp类似于aps的前置技术,jsp允许在html中镶嵌java代码
4. JSP_include指令_九大隐式对象
① servletContert (application)
session(session)
request(request)
pageContext(当前jsp页面)
page(this)当前的serlet类
5. 自定义标签开发
① 自定义标签的作用就是对 自定义标签体中的html内容进行 灵活的控制!
② 自定义标签的使用就行要避免在jsp中直接出现java代码块
6. javaweb开发模式_mvc设计思想
① runtimeException的异常是不需要处理和向上抛出的。除此之外,其他异常都需要处理和抛出!
② 请求转发(request)发送到jspà转发到相应的serverletàserverlet中接受的request与jsp接收的request一致,然后再serverlet中进行处理
③ Request后服务器端的 反馈可以有两种方式:
a.直接使用response、header等在原有页面上(刷新为回填内容),如:
Response.getWrite.write(“…”)
b.使用dispatch 返回一个jsp页面(使用该jsp对现有web窗口进行刷新),如:
Request.getRequestDispatch(“regeister.jsp”).
7. JDBC快速入门
① class.forName(“driver”)//是导入类的字节码(就是将类加载到内存中)
② 反射的原理就是将类的代码载入内存(相当于第一次加载类)
③ Function ( )throw exception //方法可以直接向上抛出异常
Try…catch//不抛出异常,而是将其捕获
④ config.proertiesà配置文件
⑤ 类的单例模式:
Public classDaoFactory{
Private static DaoFactory factory=newDaoFactory();
Private DaoFactory(){ }
}
⑥ runtimeException抛出后,上层不会接收,而是直接抛给虚拟机,结束当前线程!
⑦ Session是对于一台机子的多个浏览器而言
⑧
a.转发:一次请求,一次相应,不可以改变地址栏,如果资源跳转时,如果要使用request域带一些参数过去,使用请求转发
b.重定向:2次请求,2次响应,可以改变地址栏,如果要改变地址栏,使用重定向
如果都可以使用转发,减少服务器的访问压力
8. 元数据
①@Test-->可以测试类中的类方法和类的静态方法, 然后使用JUnit Test
③ class<T> clazzà可以特指泛型的类型对象,如:cusDao.class ,
上述可以理解为如果将类的类型对象作为参数的话,,类的类型对象的形参类型只能指定为class<T> clazz这种方式
④ 一个web应用在运行期间只能有一个数据源,如:new CombopooleaDataSource //只能有一个
⑤ 敏捷开发是从 需求向底层进行的:serverlet中调用service的接口à实现service接口类-à实现dao接口à实现到接口
⑥ Request.getRequestDispatcher-à进行转发的原理是:request让a.jsp响应,但是a.jsp把响应原封不动的转给b.jsp(当然在转发的过程中可以在request域中添加新数据)
⑦ C标签和自定义标签都是对html标签内容(inner )进行控制的
⑧ Dao中只能写与数据库操作有关系的东西
⑨ 数据库批量处理的sql要使用事务,eg:
Try {
Conn.setAutoCommit(false) //A点
For(String id : ids){
Dao.delCustByWithTrans(conn,id);
}
DbUtils.commitAndCloseQuetly(conn); } //如果批处理成功,则commit提交
Catch(Exception e){
DbUtils.rollbackAndCloseQueitly(conn); //否则回滚A点
Throw new RunntimeException(e);}
9. .监听器
① map的key是根据key的hashcode来决定否是是同一个对象,从而决定是否覆盖还是添加,所以可以重写key对象的hascode和equal方法
10. 过滤器_基础
① 增强for循环只能迭代值,不能修改值
② Redirect相当于重新request,但是请求转发不是(相当于还在同一个request的请求链中)
③ 一个用户如果登录某个jsp时,session为空,或者session无标记,那么就是第一次登录
④ 不同的数据由md5进行加密时,会得到不同的128位的二进制文件,相同的数据会得到相同的md5
⑤ Md5只能加密,不能解密
11. 泛型
① public static <T> void (T a) //<T>泛型在使用之前一定要声明
② <T> 中的T可以在任何出现实际类型的地方,都可以出现!如: int[ ] –> T[ ]
③ 注解可以在一定程度上替代配置文件
④ 动态代理改变已经存在类中的方法,(类可以是jar中的已经编译的文件)
⑤ 装饰器方法—>对接口A中的实现类B进行继承,以便控制A中什么方法被保留,什么方法被复写