jsp&servlet学习笔记

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里面是忽略大小写

onblur="" 表单验证用户名之类的,<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("原编码方式"),"目录编码方式")

生成验证码第九章的详解。





猜你喜欢

转载自blog.csdn.net/sinat_26397681/article/details/52811085
今日推荐