一:db
1.数据库事务处理
一项事务就是一条或多条数据库更新的SQL语句组成的一个不可分割的工作单元。他们必须全部完成后,整个事务才被提交给数据库。
Connection提供的控制事务处理方法:
**setAutoCommit(boolean autoCommit):是否自动提交事务,默认为是(true)。也就是说把一条语句看做一个事务,在所有任务完成后用commit来整体提交
**commit 提交事务
**rollback 撤消事务
2.数据源
**java.sql.DataSource中先建立了多个数据库连接并放在连接池里,DataSource对象的由tomcat提供的,所以应该采用JNDI(java naming and directory interface)来获得对象的引用。java.naming 中提供Context的接口,它含有bind(),lookup()两种方法
**配置数据源:
*在server.xml中加入<Resource>元素
*在web.xml中加入<resource-ref>元素
*Context ctx=intialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");
*Connection con=ds.getConnection();
*con.close();
**
**
**
**
**
**
3.jdbc url一般格式为:
jdbc:drivertype:driversubtype://parameters
drivertype:驱动程序 driversubtype:可选参数 parameters:通常用来设定数据库服务器的ip,端口号,数据库的名称
如:jdbc:mysql://localhost:3306/BookDB
还可以在url后跟上字符集,来处理中文编码
如:jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312
当然也可以用<%@ page contentType="html/text;charset=GB2312"%>
二:session
1.Servlet容器创建一个HttpSession对象,并为它分配一个ID,然后把ID保存在浏览器中
2.response提供一个把session ID写如URL的方法:reponse.encodeURL("URLpath");
3.Session的持久性(把Session对象从内存转移到文件系统)
**好处:避免同时有很多客户访问带来的效率下降,也避免了由于故障造成的数据丢失
**实现持久化的的Session Manager,tomcat提供两个类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager
(1)
org.apache.catalina.session.StandardManager会在服务器重启或web重新加载的时候持久化对象
目录为<home>/work/Catalina/hostname/applicationname/SESSION.ser
(2)
org.apache.catalina.session.PersistentManager把对象放在session store中(org.apache.catalina.FileStore,org.apache.catalina.JDBCStore)
配置FileStore:
**在server.xml的<Context>中加入<Manager className="org.apache.catalina.session.PersistentManager">元素
**servlet 会建立一个名为:SESSIONID.SESSION的文件
<home>/work/Catalina/hostname/applicationname/SESSIONID.SESSION
配置JDBCStore:
** 将对象放在一张表中,所以首先要建立一张表
**在server.xml的<Context>中加入<Manager>元素
三:ant
1.创建build.xml(包含一个<project>和多个<target>元素,<target>又包含多个任务元素,任务可以是一段可执行代码)
**ant的内置任务集,也可以自己开发任务集
*property 设置name/value形式的属性
*mkdir
*copy
*delet
*javac
*war 为web应用打包
2.
<project name="bookstore" default="about" basedir=".">
<!--basedir指定工程的基路径,“.”表示在build。xml的路径下-->
<!--default表示必须创建的<target>元素名-->
<target name="init">
<!--init用来初始化-->
<tstamp/>
<property name="build" value="build" />
<property name="src" value="src" />
<property environment="myenv" />
<!--myenv表示可以通过它访问系统环境变量,${myenv.CATALINA_HOME}表示CATALINA_HOME系统环境变量-->
<!--在build.xml中的其他地方使用属性时要用${属性}-->
<property name="servletpath" value="${myenv.CATALINA_HOME}/common/lib/servlet-api.jar" />
<property name="mysqlpath" value="WEB-INF/lib/mysqldriver.jar" />
<mkdir dir="${build}" />
<mkdir dir="${build}\WEB-INF" />
<mkdir dir="${build}\WEB-INF\classes" />
<copy todir="${build}" >
<fileset dir="${basedir}" >
<include name="*.jsp" />
<include name="*.bmp" />
<include name="WEB-INF/**" />
<exclude name="build.xml" />
</fileset>
</copy>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}"
destdir="${build}/WEB-INF/classes"
classpath="${servletpath}:${mysqlpath}">
</javac>
</target>
<target name="bookstorewar" depends="compile">
<!--depends属性表示执行本target之前必须执行的target-->
<war warfile="${build}/bookstore.war" webxml="${build}/WEB-INF/web.xml">
<lib dir="${build}/WEB-INF/lib"/>
<classes dir="${build}/WEB-INF/classes"/>
<fileset dir="${build}"/>
</war>
</target>
<target name="about" >
<echo>
<!--echo用于在控制台上显示信息-->
This build.xml file contains targets
for building bookstore web application
</echo>
</target>
</project>
<!--build。xml的任务描述:在bookstore的根目录下建立build子目录,然后在子目录下创建web应用-->
3.运行:
ant -buildfile <build-dir>/build.xml targetname
s:216]
[ 此帖被独飞の孤心在2007-12-24 22:11重新编辑 ]