第一章JSP基础
JSP实用教程
教程整理 jacksq
2007年8月2日
第一章JSP基础
第一章 JSP基础
2.1什么是JSP
1、Jzva Server Pages(JSP)
2、SUN公司倡导开发,1999年推出的动态见面编程技术。JSP是基于Java Servlet 以及整个Java 体系的Web开发技术。利用该技术可以建立安全、跨平台的先进动态网站。 JSP和ASP的比较
相同点:都是Web 服务器端的开发技术。
不同点:ASP使用的语言是VBScript和JavaScript,JSP使用的是Java;ASP的运行方式是脚本级执行,JSP的运行方式是编译后运行;JSP由于使用Java技术,所以可以使动态页面和表态页面分离,脱离硬件平台的束缚。
2.2安装配置JSP运行环境(先安装JDK,后安装Tomcat)
1、服务器端的JSP引擎多种多样。
2、1999年著名的Web用品组织Apache开发了JSP用品项目Tomcat。Tomcat可以和大部分主流用品一起高效率的工作。
3、http://jakarta.apache.org/site/downloads/downloads_tomcat.html免费下载Tomcat的最新版。 Win2000下安装JDK
1、http://java.sun.com/j2se/corejava/index.jsp下载SUN公司的JDK最新版。 2、安装完后,需设置几个环境变量,假设JDK的安装目录:c:\\jdk1.4.2 变量名 java_home classpath Path 变量值 c:\\jdk1.4.2 c:\\jdk1.4.2\\jre\\lib\\rt.jar;,; c:\\jdk1.4.2\\bin 环境变量设置方法:我的电脑的属性—>“高级”选项卡—>环境变量 安装Tomcat
1、运行Tomcat安装文件 2、安装方式的选择 3、安装目录的选择
4、端口号和管理密码设置 5、确定JDK所在目录 6、安装完成 启动Tomcat服务器
1、运行Tomcat安装目录下的bin下的启动服务程序。
2、在Win2000下Tomcat可以设置为后台自动启动,也可以手动启动。
3、在IE浏览器中输入http://localhost:8080或http://127.0.0.1:8080启动测试页面 2.3 JSP页面和服务目录
1、JSP页面包括:HTML标记符;Java程序片(包含在<% %>间的内容)。
2、JSP页面文件扩展各是.JSP,注意JSP文件标识符区分大小写。一般用大写字母书写HTML标记符。小写字母书写Java程序片。
3、文本编辑器编辑JSP页面文件。例如:ultraedit。 例2.1
<%@ page contentType=”text/html;charset=gb2312”%>
这是一个简单的JSP页面 <%
int I,sum=0;
for (i=1;i<=100;i++) {
Sum=sum+1; } %>
1到100的连续和是:
Tomcat的配置(两种方法)
1、修改主配置文件server.xml
2、通过启动Tomcat主配置页面配置相关参数 Server.xml文件(原始文件)
Tomcat配置页面
http://localhost:8080/admin或http:/127.0.0.1:8080/admin启动主配置页面。注意Tomcat5.5版本默认是没有内置admin模块的。该模块需要单独安装。请到Apache网站找jakartatomcat-5.5x-admin.zip解压到安装目录下。
当进入admin以后,可能会做的操作有(对service项操作):
1、修改端口
例如端口由8080改为9080。要注意端口不要设置为已经使用的端口。
- 1 -
如果改为
则表明该服务器同时拥有两个端口为之服务(8080和9080)。 注意:修改了server.xml以后,要重新启动Tomcat。 2、增加虚拟服务目录
Path指虚拟目录的名字,docBase指虚拟目录所在的绝对路径。设置完成后,要重新启动Tomcat服务。启动新增加虚拟服务目录中的主页的方法是:http://127.0.0.1:8080/my/index.jsp。看好,这里没有指出路径名“wxh”。
JSP中的文件包含方法形如:
3、增加虚拟主机 2.4 JSP的运行原理
1、JSP页面首次执行时,服务器引擎首先将该JSP页面转译成Java文件,再将该Java文件编译成字节码文件,通过执行字节码文件响应客户的请求。
2、该JSP页面再次选择时,JSP引擎直接执行这个字节码文件响应客户,这也就是JSP比ASP速度快的原因。
字节码文件的主要工作:街道,将JSP页面中的不同HTML标记符号交给客户的浏览器显示。其次,执行<% %>之间的Java片,并把执行结果交给浏览器显示。
当多个客户同时请求一个JSP页面时,JSP引擎为每个客户启动一个纯种,而不是一个进程,效率明显提高。JSP引擎为JSP页面生成的Java文件和字节码文件放在安装文件下的\\work\\Catalina\\localhost\\_\\org\\apache\\jsp目录下。
本节知识要点:
JSP页面和服务目录,主配置文件server.xml;配置工具admin模块介绍。通过修改主配置文件和admin模块修改端口;增加虚拟服务目录;增加虚拟主机。
JSP的运行原理。字节码文件的主要工作;原文件和生成的Java文件的对照。
- 2 -
第二章JSP数据库操作代码大全
JSP数据库操作代码大全
一、jsp连接Oracle8/8i/9i数据库(用thin模式) testOracle.jsp如下:
<%@ page contentType=\<%@ page import=\<%
String result = \查询结果字符串
String sql = \字符串
// 连接字符串,格式: \数据库驱动名称:连接模式:@数据库服务器ip:端口号:数据库SID\ String url = \ String username = \用户名 String password = \密码
// 创建oracle数据库驱动实例
Class.forName(\
// 获得与数据库的连接
Connection conn = DriverManager.getConnection(url, username, password); // 创建执行语句对象
Statement stmt = conn.createStatement(); // 执行sql语句,返回结果集
ResultSet rs = stmt.executeQuery(sql);
while ( rs.next() ) {
result += \第一个字段内容:\ }
rs.close(); // 关闭结果集
stmt.close(); // 关闭执行语句对象 conn.close(); // 关闭与数据库的连接 %>
<%=result%>
二、jsp连接Sql Server7.0/2000数据库 testSqlServer.jsp如下
<%@ page contentType=\<%@ page import=\
<%
String sql = \
// 连接字符串,格式: \公司名称:数据库驱动名称://数据库服务器ip:端口号;DatabaseName=数据库名称\
String url = \ String username = \ String password = \
Class.forName(\
Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql); %>
<%
while ( rs.next() ) {
%>
第一个字段内容为:<%=rs.getStrisng(1)%>
<% }
rs.close(); stmt.close(); conn.close(); %>
三、jsp连接DB2数据库 testDB2.jsp如下:
<%@ page contentType=\<%@ page import=\<%
String sql = \
// 连接字符串,格式: \数据库驱动名称://数据库服务器ip:端口号/数据库名称\ String url = \
- 1 -
String username = \ String password = \
Class.forName(\
Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.close(); stmt.close(); conn.close(); %>
四、jsp连接Informix数据库 testInformix.jsp如下:
<%@ page contentType=\<%@ page import=\<%
String sql = \
// 连接字符串,格式: \数据库驱动名称://数据库服务器ip:端口号/数据库名称:INFORMIXSERVER=服务器名;user=用户名;password=密码\ String url = \testpassword\
Class.forName(\
Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.close(); stmt.close(); conn.close(); %>
五、jsp连接Sybase数据库
testSybase.jsp如下: <%@ page contentType=\<%@ page import=\<%
String sql = \
- 2 -
// 连接字符串,格式: \公司名称:数据库驱动名称:数据库服务器ip:端口号/数据库名称\ String url = \
Properties prop = System.getProperties(); prop.put(\用户名
prop.put(\密码
Class.forName(\
Connection conn = DriverManager.getConnection(url, prop); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.close(); stmt.close(); conn.close(); %>
六、jsp连接MySQL数据库
testMySQL.jsp如下: <%@ page contentType=\<%@ page import=\<%
String sql = \
// 连接字符串,格式: \数据库驱动名称://数据库服务器ip/数据库名称?user=用户名&password=密码&使用Unicode=布尔值&字符编码=编码\ String url = \=8859_1\
String username = \ String password = \
Class.forName(\
Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.close(); stmt.close(); conn.close(); %>
- 3 -
七、jsp连接PostgreSQL数据库
testPostgreSQL.jsp如下: <%@ page contentType=\<%@ page import=\<%
String sql = \
// 连接字符串,格式: \数据库驱动名称://数据库服务器ip/数据库名称\ String url = \ String username = \ String password = \
Class.forName(\
Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
rs.close(); stmt.close(); conn.close(); %>
八、JSP连接ACCESS数据库
String url =\try {
Class.forName(\ Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(\ while (rs.next()) {
//do something }
rs.close(); stmt.close(); conn.close(); } try {
code; //将可能出现的错误放在其中; }
catch(e) //如果出现上面的错误,这里就捕获 {
- 4 -
第二章JSP数据库操作代码大全
alert(e.number); //处理错误信息 }
解释:jsp的try、catch 的意思是错误捕捉: try {
code; //将自己的代码放在其中; }
catch(e) //如果上面的代码有错误,这里就捕获 {
alert(e.number); //获得错误信息 }
JSP JDBC:createStatement参数解释
createStatement参数解释
createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);参数解释
用缺省设置创建时,ResultSet 是一种只能访问一次(one-time-through)、只能向前访问(forward-only)和只读的对象。您只能访问数据一次,如果再次需要该数据,必须重新查询数据库。然而,并不只有这一种方式。通过设置 Statement 对象上的参数,您可以控制它产生的 ResultSet。
例如:...
Class.forName(driverName);
db = DriverManager.getConnection(connectURL); Statement statement = db.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE );
String orderElName = xmlfileEl.getElementsByTagName(\ .getFirstChild().getNodeValue(); ...
这个 Statement 现在将产生可以更新并将应用其他数据库用户所作更改的 ResultSet。您还可以在这个 ResultSet 中向前和向后移动。
第一个参数指定 ResultSet 的类型。其选项有:
TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:
CONCUR_READ_ONLY:这是缺省值,指定不可以更新 ResultSet CONCUR_UPDATABLE:指定可以更新 ResultSet
第二章JSP数据库操作代码大全
JSP中执行SQL语句的execute语句分类
1、stmt.executeQuery(sql);
解释:执行SQL的查询命令。
2、stmt.executeUpdate(sql);或stmt.executeUpdate();
解释:执行SQL的数据更新命令,此时要求创建执行语句对象时,createStatement()中的参数不能再使用默认值了,而要使用可以进行数据更新的参数。一般在执行过insert、delete等数据修改语句以后都要执行一次该语句。 3、stmt.executeDelete(sql);
解释:执行SQL的删除记录命令,此时要求创建执行语句对象时,createStatement()中的参数不能再使用默认值了,而要使用可以进行数据更新的参数。 4、stmt.execute(sql);
解释:可以执行SQL的所有命令。 JSP中的输出命令
1、out.print(表达式)
字符型表达式要用引号引住。功能为输出表达式的值。 2、out.println(表达式)
字符型表达式要用引号引住,功能为输出表达式的值后换行。 JAVASCRIPT事件处理
事件处理概述
事件处理是对象化编程的一个很重要的环节,没有了事件处理,程序就会变得很死,缺乏灵活性。事件处理的过程可以这样表示:发生事件 - 启动事件处理程序 - 事件处理程序作出反应。其中,要使事件处理程序能够启动,必须先告诉对象,如果发生了什么事情,要启动什么处理程序,否则这个流程就不能进行下去。事件的处理程序可以是任意 JavaScript 语句,但是我们一般用特定的自定义函数(function)来处理事情。 指定事件处理程序
指定事件处理程序有三种方法:
方法一 直接在 HTML 标记中指定。这种方法是用得最普遍的。方法是: <标记 ... ... 事件=\事件处理程序\事件=\事件处理程序\让我们来看看例子:
标记,能使文档读取完毕的时候弹出一个对话框,写着“网页读取完成,请慢慢欣赏”;在用户退出文档(或者关闭窗口,或者到另一个页面去)的时候弹出“再见”。方法二 编写特定对象特定事件的 JavaScript。这种方法用得比较少,但是在某些场合还是很好用的。方法是:
例:
...