一.JSP基础
1.<select name="love" size="3">其中的size属性指定了列表框显示选项的条数,如果所有选项多于这个数,将会出现滚动条。
2.addCookie(Cookie cookie)方法将其放入客户端,获取Cookie对象可调用request对象的Cookie[] getcookies()方法。
Cookie myCookie = new Cookie("name", "Tom");
respense.addCookie(myCookie); //将myCookie保存到客户端
3.当用户登录网站时,系统将为登录用户生成一个独一无二的session对象,并且不同的session对象不会相互干扰。这样就可以使用session对象存储特定的用户会话过程中的数据,当用户在页面之间跳转时,存储在session对象中的数据不会被清除,而是跟踪着用户在同一站点漫游过程中始终存在,只有当会话过期或被放弃后,服务器才终止维持这个对象。
4.<button onclick="location.href=‘shop.jsp‘">继续购买商品</button>
5.application对象是JSP的一个内置对象,它是ServletContext类的实例。服务器启动后,就产生了appliaction对象,客户在网站的各个页面之间跳转浏览时,appliaction对象一直保持存在且是唯一的,直到服务器关闭。但是,与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;主要设置处理服务器端响应的函数,即JavaScript回调函数,表示客户端一旦获取服务器端响应,就立即执行该函数。xmlHttp.open( "post", "HelloAjaxDo.jsp", true );表示向服务器程序创建一个异步请求,其目的页面为HelloAjaxDo.jsp。open函数中所指定的"true"参数说明想要异步执行该请求,在没有指定的情况下默认为“true”。
2.函数callback()是回调函数,它首先检查XMLHttpRequest对象的整体状态以保证它已经完成(readyStatus==4),然后根据服务器的设定询问请求状态。如果一切正常(status==200),就使用“var data = xmlHttp.responseText;”这取得返回的数据,用innerHTML属性重写DOM的“pNode”节点的内容。
3.XMLHttpRequest对象,可以使用send()方法发送参数,也可以通过open()方法的参数URL本身发送有参请求。事实上,用URL发送数据更容易。如果需要发送安全信息或XML,应考虑使用send()方法发送,否则使用open()方法的参数URL本身发送,此时只要传递“null”作为send()方法的参数即可。
六.实现高级Ajax技术
七.Ajax数据库操作
1.在服务器,尽管XML数据解析有广泛的工具支持,如JDOM,DOM4J等;但在客户端,仍需使用DOM来解析XML数据,依然是很复杂,很烦琐,而且DOM在各种浏览器中的实现细节不尽相同,其跨浏览器兼容性出现问题的可能性也极大,这将使编程更为复杂和烦琐。现在,JSON作为一种更轻松,更友好的数据格式已经备受推崇,JSON和XML一样也是一种简单的数据格式,它比XML数据格式更易于阅读和编写。JSON数据格式完全匹配JavaScript引擎,是JavaScript的原生格式,它为在客户端进行数据解析带来了方便和快捷。
八.Ajax时尚技术
九.Ajax框架的使用
1.在诸多的Ajax框架中,Prototype框架是应用最广泛的框架之一,Prototype.js是由Sam Stephenson写的一个JavaScript类库,这个构思奇妙,而且兼容标准的类库,能帮助用户轻松建立具有高度互动的客户端页面。
2.request.getRemoteAddr()用来获得客户端的IP地址。
3.在使用Statement,PreparedStatement,ResultSet这些对象后,必须关闭它们。