一.JSP基础
1.<select name="love" size="3">当中的size属性指定了列表框显示选项的条数。假设全部选项多于这个数。将会出现滚动栏。
2.addCookie(Cookie cookie)方法将其放入client,获取Cookie对象可调用request对象的Cookie[] getcookies()方法。
Cookie myCookie = new Cookie("name", "Tom");
respense.addCookie(myCookie); //将myCookie保存到client
3.当用户登录站点时。系统将为登录用户生成一个独一无二的session对象,而且不同的session对象不会相互干扰。这样就能够使用session对象存储特定的用户会话过程中的数据,当用户在页面之间跳转时,存储在session对象中的数据不会被清除,而是跟踪着用户在同一站点漫游过程中始终存在,仅仅有当会话过期或被放弃后,server才终止维持这个对象。
4.<button onclick="location.href='shop.jsp'">继续购买商品</button>
5.application对象是JSP的一个内置对象,它是ServletContext类的实例。server启动后,就产生了appliaction对象。客户在站点的各个页面之间跳转浏览时,appliaction对象一直保持存在且是唯一的,直到server关闭。可是,与session对象不同的是。全部客户的application对象都是同一个。即全部客户共享appliaction对象。这样appliaction对象就能够起到一个全局变量的作用。
6.编写读取文件的核心代码。这里使用了java.io包里的几个类。类File是文件和文件夹路径名的抽象表示形式。其构造方法“public File( String parent, String child ) "依据父路径名字符串和子路径名字符串创建一个新的File对象。类FileReader是用字符流方式来读取字符文件的便捷类,其构造方法“public FileReader( File file )”创建一个新的从给定的File对象中读取文本。对一个字符输入流对象进行包装,可以缓冲各个字符。从而提供字符,数组和行的高效读取,其构造方法“public BufferedReader ( Reader in )”创建一个以默认大小为缓冲区的缓冲字符输入流。能够对文本文件按行读取。
7.在这里创建的File对象必须用绝对路径:“C:\Tomcat\webapps\JSP_Ajax”。此外,文件夹分隔符不能为“”,必须为“\”。
8.strB.append("<xmp>").append(str).append("</xmp>");因为浏览器遇见HTML代码总要进行解释,从HTML文件中读取的HTML标记全被浏览器“截获”而不被显示;而xmp标签能够让浏览器不解释其内部的全部内容(包含HTML标记)。从而使读取到的HTML标记才会显示出来。
二.JSP与数据库
1.ResultSet类型的rs变量。用来保存从数据库里提取出来的记录,最后通过一个循环把全部的记录显示出来。
2.java.sql.PreparedStatement类是Statement的子类,并继承了Statement的全部功能。另外,它还加入了一整套方法,用于设置发送数据库以代替IN參数占位符的值。
它的对象能够包括预编译的SQL语句。这就是使语句“准备好”。包括在PreparedStatement对象中的SQL语句可具有一个或多个IN參数。
IN參数的值在SQL语句创建时未被指定,而是为每一个IN參数保留一个问号“?”作为占位符。每一个问号的值必须在该语句运行之前。通过适当的setXXX方法来提供。
因为PreparedStatement对象已预编译过,所以其运行速度要快于Statement对象。因此。多次运行的SQL语句常常被创建为PreparedStatement对象,以提高效率。
3.为PreparedStatement对象中的“?”占位符设置值的时候。要注意它们的编号是从1開始的。
4.在数据库操作中,一项事务是指由一条或多条对数据库操作的SQL 语句所组成的一个不可切割的工作单元。
仅仅有当事务中的全部操作都正常完毕了,整个事务才干被提交到数据库,假设有一项操作没有完毕,就必须撤销整个事务。在默认情况下,连接是自己主动提交模式。
5.con.setAutoCommit( false );//禁止自己主动提交事务
con.commit(); //统一提交
con.rollback();//假设当中一项SQL操作失败,就不会运行commit()方法,而是产生对应的sqlexception。此时就能够捕获异常代码块中调用rollback()方法撤销事务。
6.假设一个页面须要连接数据库,那么对它的每一次Web请求都会建立一次数据库连接。对于一次或几次操作来讲。也许觉察不到系统的开销。可是在实际中,即使在某一较短的时间段内,其操作请求数也远远不是一两次。而是数十次或上百次,在这样的情况下。系统的开销是相当大的。
数据库连接池的最基本思想是。预先建立一些连接放置在一个抽象“池”中以备用。当程序中须要建立数据库连接时。仅仅须要从池中取一个来用而不用新建。相同。使用完成后,仅仅需放回“池”中就可以。
连接的建立,断开都由连接池自身来管理,程序猿则不用插手这个过程。因为它是预先建立了一些连接,而且这些连接能够共享,因此就节省了每次连接的时间开销。
三.JSP与JavaBean
1.JavaBean能够分为可视化Bean和不可视化Bean。可视化Bean能够表示为简单的GUI组件;不可视化JavaBean在后台完毕业务逻辑处理功能。
2.在进行数据库操作时,必须用try{} catch{}语句进行异常处理。
3.文件上传页面。enctype属性必须设置为multipart/form-data。
四.JSP与Servlet
1.answer = Math.abs( new Random().nextInt() % 100 ) + 1;首先。生成一个随机类,并调用这个类的nextInt()方法生成一个随机整数;然后,取余。最后,通过abs()方法获得绝对值后加1就获得了1~100之间的随机数。
五.实现基本Ajax技术
1.xmlHttp.onreadystatechange = callback;主要设置处理server端响应的函数,即JavaScript回调函数,表示client一旦获取server端响应,就马上运行该函数。
xmlHttp.open( "post", "HelloAjaxDo.jsp", true );表示向server程序创建一个异步请求,其目的页面为HelloAjaxDo.jsp。open函数中所指定的"true"參数说明想要异步运行该请求,在没有指定的情况下默觉得“true”。
2.函数callback()是回调函数。它首先检查XMLHttpRequest对象的总体状态以保证它已经完毕(readyStatus==4),然后依据server的设定询问请求状态。假设一切正常(status==200),就使用“var data = xmlHttp.responseText;”这取得返回的数据,用innerHTML属性重写DOM的“pNode”节点的内容。
3.XMLHttpRequest对象,能够使用send()方法发送參数,也能够通过open()方法的參数URL本身发送有參请求。其实。用URL发送数据更easy。假设须要发送安全信息或XML,应考虑使用send()方法发送,否则使用open()方法的參数URL本身发送,此时仅仅要传递“null”作为send()方法的參数就可以。
六.实现高级Ajax技术
七.Ajax数据库操作
1.在server。虽然XML数据解析有广泛的工具支持。如JDOM,DOM4J等;但在client,仍需使用DOM来解析XML数据,依旧是非常复杂。非常烦琐,并且DOM在各种浏览器中的实现细节不尽同样,其跨浏览器兼容性出现故障的可能性也极大,这将使编程更为复杂和烦琐。
如今。JSON作为一种更轻松,更友好的数据格式已经备受推崇。JSON和XML一样也是一种简单的数据格式,它比XML数据格式更易于阅读和编写。
JSON数据格式全然匹配JavaScript引擎,是JavaScript的原生格式。它为在client进行数据解析带来了方便和快捷。
八.Ajax时尚技术
九.Ajax框架的使用
1.在诸多的Ajax框架中,Prototype框架是应用最广泛的框架之中的一个。Prototype.js是由Sam Stephenson写的一个JavaScript类库,这个构思奇异,并且兼容标准的类库,能帮助用户轻松建立具有高度互动的client页面。
2.request.getRemoteAddr()用来获得client的IP地址。
3.在使用Statement,PreparedStatement。ResultSet这些对象后。必须关闭它们。