1. Fliter的配置在web.xml里面可以使用正则控制哪些页面被过滤
2. 控制iframe的页面跳转到login.jsp问题 window.parent != window window.parnet.location = window.location;
3. 很迷惑的写法 用于验证码 src = images/xx.jpg --->> servlet的路径
4. 循环html可以 先包头 后包尾 中间用c 标签
5. request.getParameterValues -->>> id=1&id=2&id=3&id=4
6. debug 中可以使用 watch 查看整条代码的运行情况。
7. 提交的页面可以使用 ${param.xxx} 来获取提交的参数
8. <jsp:include page="xxx/pager.jsp"> 相当于pager.jsp?url=xxx
<jsp:param name="url" value="xxxServlet"/>
</jsp:include>
9. filter 在web.xml里面配置是有先后次序的
10 .工厂模式:
addservlet -- > addDao
updateservlet ---> update Dao
deleteservlet ---> delete Dao
在servlet 和 dao 之间增加一个工厂 由工厂来创建dao对象
public xx getxx(){ return new xxDAo; } 只需修改返回值 ---- 简单工厂
这样违反开闭原则 ocp 将其写成接口 即可解决这个问题
11. 多个工厂类 可以使用properties 配置 然后一次性读取反射出来放入map中 然后从map中取出某个工厂类 在web.xml中配置启动初始化
12. 重写 init 方法 无法在里面 得到 servletcontext 需要使用:config.getServletContext()
13. 依赖注入 需要一个dao 开一个门 set方法 dao像送水工送水一样被送过来。 在servlet中 service的方法中写入相关的代码
Method[] methods = this.getClass().getMethods()
if(methods.startwith("start")){
xx.invoke(this, 工厂拿到类的路径);
}
--------- 形成之后的spring思想。
14. a 继承 b b中的 this 是多态的 指的是 a
15. mysql的数据库脚本
drop xx if exists xx;
create database xx;
use xx;
source xx.sql;
批处理文件:
@echo off
mysql -uroot -p123 <all.sql
c:\init (init.bat)
//unique key xx (xxid,xxid) 联合起来不能重复
执行批处理需要 把mysql的bin 目录放到环境变量里面
16. mysql sql导入数据的时候 标题设置 /*!40101 SET NAMES utf8*/; 可以防止乱码
17. select 的 multiple 属性可以多选
18. 如果插入有关联的数据 如何得到自增长的id
pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ResultSet newId = pstmt.getGeneratedKeys(); - 可以返回刚才插入的刚才id
if(newId.next()){
a.setId(newId.getInt(1))
}
mybatis 里面使用 <insert keyProperty="id" useGenerateKeys = "true">
会将值放入 id 属性中
存入中间表 使用类型 map map中存放2个表的id
19. 使用时间戳才可以 将精确时间存入 数据库
20. null 前面也可以强制转换 如:(A)null
21. threadlocal 为每一个线程提供一个地方存放线程的全局变量
public static ThreadLocal xx = new ThreadLocal();
xx.set();
22. mybatis 返回结果的映射规则 resultMap 可以自定义返回的数据映射
把一个返回的结果名称 对应设置好的resultMap
23. beanutils.copyProperty() 可以自动把参数 字符类型转换为相应的int,boolean类型
time 类型 需要实现 convter 接口自己写
对于拷贝的名称不一致的情况 默认不进行处理
24. 对于crud 的操作可以封装一个basedao来通过反射机制来简化代码
25. 服务器端的包含: request.getRequestDispatcher().inculde(request,response);
26. window.parent.mainFrame.document.getElementById().xxx;
27. stream.copy(intputsream, new FileoutputStream("d:/xx/"+filename),true(是否自动关闭));
ie 下filename 的名字是 带路径的全路径 使用:filename = FilenameUtil.getName
判断 stream 是否是空的 stream.avaliable () != 0