01.02.03.04.05.06.07.08.09.10.11.12
JavaScript是弱类型语言 var定义,JavaScript的变量建议先定义后使用,JavaScript区分大小写
数组定义 var arr = new Array(3);可以有逻辑运算,字符串连接,字符串的子集,三目运算符,
document.write是JavaScript的内置对象
函数function有参与无参,参数不用定义类型
事件:onFocus 焦点 ,onClick="alert('ok')"; onLoad写在body标签里面,窗口加载 onSubmit提交
prompt询问框 confirm确定 this当前标签 for...in in后跟一个对象,对此对象中的所有元素循环一次
with 为一段代码建立一个缺省的对象 Window.open打开新的窗口 window.location()
setTimeout()产生动画的函数
日历控件的使用
表单的验证是onsubmit, focus()把光标定在那了, \r是回车键
/开头,/结尾的是正则表达式 ^ 代表一行的开头,$代表结束 i在js里面是忽略大小写
οnblur="" 表单验证用户名之类的,<div>是另起一行。<span>是行内块,在一行的后面显示。
servlet&jsp
cookie 以文件的形式存在计算机上,自动登录的时候,上次登录了,就不用输入用户名和密码。
response.setConetentType("text/html;charset=UTF-8");
HttpSeesion session = request.getSession(); seesion.setAttribute("","");并非线程安全
session.invalidate();失效
BufferedWrite write = new BufferedWrite(new OutputStreamWrite(new FileOutputStream(file),"UTF-8"));
2016年1月17日
在web.xml中设置个别Servlet的初始化参数
<init-param>
<param-name>param1</paran-name>
<param-value>value1</param-value>
</init-param>
getRequestDispatchar()使用路径时必须以"/"开头,代表根路径,环境相对路径, 无"/"请求相对路径。
2016年1月20日
HttpsSession的监听器
HttpSessionListener 是生命周期监听器,在创建和结束时做出相应的动作.
HttpSessionAttributeListener是属性改变监听器,加入属性,移除属性,替换属性会被调用,并传入 HttpSessionBindungEvent.
HttpSessionBindingListener 是对象绑定监听器,加入属性对象,成为属性或者移除属性,valueBound valueUnbound()
HttpSessionActivationListener 对象迁移监听器
过滤器必须实现接口Filter 三个方法init(),doFilter(), destroy(),
请求封装器:用common-lang的jar。字符替换和编码设置,HttpServletRequestWrapper继承
响应封装器:HttpServletResponseWrapper
2016年1月21日
在Servlet中的ServletContext是通过jsp中的application隐式对象取得。
指示元素(Directive) page,include,taglib
include是把几个jsp合成一个jsp <%@include file="" %>
在web.xml中可以编写统一的网页编码、内容类型、缓冲区大小
<jsp-config>
<jsp-property-group>
......
jsp的专用注释 <%-- --%>
异常转发
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/report.view</location>
</error-page>
<error-page>
<erroe-code>404</erroe-code>
<location>/404.jsp</location>
</error-page>
<jsp:include>,<jsp:forword>是动态调整想要包括的jsp页面,都是将请求转交另一个Servlet,而后又回到目前的Servlet
在转译为Servlet源代码之后,底层也是取得RequestDispatchaer对象,并执行对应的forward()和include()方法
javaBean使用满足的条件:
必须实现java.io.Serializable接口,
没有公开的类变量,
具有无参构造器,
公开的设置方法(Setter)和取值方法(Getter)
表达式语言EL
${}来包括所要进行处理的表达式,运算符(.)指定要存取的属性,param是EL隐式对象之一,表示用户的请求参数
param.a表示取得用户所发出的请求参数a的值。
自定义EL函数,必须是公开类,公开且静态的方法
a=97 A=65
JSTL
使用JSTL <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 在WEB-INF/lib下jstl-1.2.jar
或者javaResources/libraries/Web APP Libraries下放jstl-1.2.jar
2016年1月23日
<c:if>放置EL表达式 <c:choose> <c:when> <c:otherwise>
java的for循环 <c:forEach>可以是数组或者collection对象
切割为数个字符串 <c:forTakens>
<c:import>可视作<jsp:include>的加强版 <c:param>带入参数
<c:redirect>如同sendRedirect()
<c:set>设置map中的属性
<C:out>角括号、单引号用替代字符取代
<c:url>当作SessionID的URL重写
<fmt:bundle>指定的地区信息
<fmt:formatDate>格式化日期
<fmt:formatNumber>格式化数字
JSTL提供了许多EL公用函数。length()
jdbc
BLOB用于存储大量的二进制数据,图片,影音文件
CLOB存储大量的文字数据
事务的四个基本特征:原子性,一致性,隔离性,持续性
原子性:所有步骤全部执行成功,如果有一个失败,则整个事务失败,必须撤销曾经执行过的动作,回到事务前的状态。
一致性:事务作用的数据集合事务前后必须一致,事务成功,整个事务是操作后的状态,事务失败,整个数据集合和开始的事务前一样没有变更。
隔离性:事务与事务之间,必须互不干扰。
持续性:事务一旦成功,所有的变更都必须保存下来。
conn.setAutoCommit()
point = conn.setSavepoint();//设置存储点
sql语句的执行
conn.commit()
if(point == null){
conn.rollback();
}else {
conn.rollback(point); //撤回存储点
conn.releaseSavepoint(point); //释放存储点
}
finally{
....
conn.setAutoCommit(true);
}
在批次更新的时候也可以用事务,步骤差不多,
数据表格必须支持事务,才可以执行上面的功能,
eg. create table table_name(
...
) Type = InnoDB;
隔离性:
1.更新遗失,“可读取未确认” setTransactionIsolation()设置为:TRANSACTION_UNCOMMITTED
2.脏读,两个事务同时进行,一个事务更新数据未确认,另一个事务读取数据。设置为TRANSACTION_COMMITTED
3.无法重复的读取,同一事务内连续读取的数据必须相同,设置为:TRANSACTION_REPEATABLE_READ 课重复读取
4.幻读,读取的数据笔数不一致,事务必须按顺序逐一进行,设置TRANSACTION_SERIALIZABLE
检查jdbc是否支持某个隔离行为:
DatabaswMetadata meta = conn.getMetadata();
boolean isSupported = meta.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED)
metadata 保存数据库的地方,几个数据表格、表格名称、几个字段 getMetadata()
使用sql标签库:在jsp页面进行增删改查
<@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:setDataSource driver="com.mysql.jsbc.Driver"
user="root"
password="123456"
url="jdbc:mysql://localhost:3306/test" />
<sql:query sql = "select * from table_name" /> 查询结果是result类型,有getColumnNames(),getRowCount(),
getRow()等方法,可以配合JSTL的<c:forEach>来取出每一笔数据。
<sql:update>
insert into table_name(name,email,msg) values()
</sql:update>
基本验证web.xml
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
窗体验证:自定义页面,登录错误
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-login-page>
</form-login-config>
<login-config>
使用窗体验证必须注意:URL必须是j_security_check,名称J_username,请求参数j_password
eg. <body>
<form action="j_security_check" method="post">
名称:<input type="text" name="j_username"/>
密码:<input type="password" name="j_password"/>
<input type="submit" value="送出"/>
</form>
</body>
JSP基础与案例开发详解
采用单个转码的形式 new String(字符串值.getByte("原编码方式"),"目录编码方式")
生成验证码第九章的详解。