1
、
Tomcat
的目录结构
目录
|
描述
|
/bin
|
存放
Windows
平台及
Linux
平台启动和关闭
Tomcat
的脚本文件
|
/conf
|
存放
Tomcat
服务器的各种配置文件,其中最重要的配置文件是
server.xml
|
/server
|
包括
3
个子目录:
Class
、
Lib
、
Webapps
|
/server/lib
|
存放
Tomcat
服务器所需的各种
JAR
文件
(
只有
Tomcat
可以访问
)
|
/server/webapps
|
存放
Tomcat
自带的两个
Web
应用:
admin
和
manager
|
/common/lib
|
存放
Tomcat
服务器以及所有
Web
应用都可以访问的
JAR
文件
|
/share/lib
|
存放所有
web
应用都可以访问的
JAR
文件
(Tomcat
不能访问
)
|
/logs
|
存放
Tomcat
的日志文件
|
/webapps
|
当发布
web
应用时,默认情况下把
web
应用文件放于此目录下
|
/work
|
Tomcat
把
JSP
生成的
Servlet
放于此目录下
|
注:
lib
目录下都只能接受
JAR
文件,如果类压缩文件为
ZIP
文件,应该将它展开,重新打包为
JAR
文件再拷贝到
lib
目录下。
2
、把开放目录结构的
Web
应用打包成
war
文件的方法
(
1
)进入
helloapp
应用的根目录
<CATALINA_HOME>/webapps/helloapp
;
(
2
)把整个
web
应用打包为
helloapp.war
文件,命令如下:
jar cvf helloapp.war *.*
;(展开:
jar xvf helloapp.war
);
3
、
Servlet
的功能
(
1
)创建并返回基于客户请求的动态
html
页面
(
2
)创建可嵌入到现有
html
页面中的部分
html
页面(
html
片段)
(
3
)与其他服务器资源(如数据库或基于
Java
的应用程序)进行通讯
(
4
)接收多个客户机的输入,并将结果广播到多个客户机上
(
5
)根据客户请求采用特定的
MIME(Multipurpose Internet Mail Extensions)
类型对数据过滤,例如进行图象格式转换
4
、
Servlet API
类框图
Servlet
的框图是由两个
Java
包组成的:
javax.servlet
和
javax.servlet.http
。在
javax.servlet
包中定义了所有的
Servlet
类都必须实现或扩展的通用接口和类。在
javax.servlet.http
包中定义了采用
http
协议通信的
HttpServlet
类。
5
、
Tomcat
服务器初次执行
JSP
的过程
由
JSP
生成的
Servlet
类实现了
javax.servlet.jsp.JspPage
接口,该接口扩展了
javax.servlet.Servlet
接口。在
javax.servlet.JspPage
接口中定义了代表
JSP
生命周期的方法
JspInit()
和
JspDestory()
,类似
Servlet
的
Init()
和
Destory()
方法。
6
、
JSP
指令:
page
、
include
、
taglib
page
指令:
可以指定所使用的脚本语言、
JSP
代表的
Servlet
实现的接口、
Servlet
扩展的类以及导入的软件包。语法:
<%@ page
属性
1=”
值
1”
属性
2=”
值
2” %>
page
指令属性表:
属
性
|
描
述
|
举
例
|
language
|
指定文件所用的脚本语言。目前仅
java
为有效值和默认值。该指令作用于整个文档。当多次使用这一指令时,只有第一次有效。
|
<%@ page language=”java” %>
|
method
|
指定
Java
程序片段(
Scriptlet
)所属的方法的名称。
Java
程序片段会成为指定方法的主体。默认的方法是
service
方法。当多次使用该指令时,只有第一次是有效的。该属性的有效值包括
Service
、
doGet
、
doPost
等。
|
<%@ page method=”doPost” %>
|
import
|
指定导入的
Java
软件包名或类名列表,该列表用逗号分隔。在
JSP
文件中,可以多次使用该指令来导入不同的软件包
|
<%@ page import=”java.io.*,jav
a.util.Hashtable” %>
|
content_type
|
指定响应结果的
MIME
类型。默认的
MIME
类型是
text/html
,默认字符编码为
ISO-8859-1
。当多次使用该指令时,只有第一次使用是有效的
|
<%@ page content_type=”text/html;
charset=GB2312” %>
|
session=”true/false”
|
指定
JSP
页面是否使用
Session
,默认为
true
|
<%@ page session=”true” %>
|
errorPage=”error_url
|
当发生异常时,客户请求重新定向到哪个网页
|
<%@ page errorPage=
”errorpage.jsp” %>
|
isErrorPage=”T/F”
|
表示此
JSP
网页是否为处理异常的网页
|
<%@ page isErrorPage=”true” %>
|
include
指令:
JSP
可以通过
include
指令来包含其它文件。被包含的文件可以是
JSP
文件、
HTML
文件或文本文件。如果被包含的是
JSP
文件,那么被包含的
JSP
文件中的
Java
程序片段也会被执行。
include
指令的语法为:
<%@ include file=”relativeURL” %>
7
、
JSP
隐含对象
在编写
JSP
程序时,可以直接使用
Servlet/JSP
容器提供的隐含对象。使用这些对象的引用变量时不需要任何变量声明。
JSP
中的隐含对象列表:
隐含对象
|
类
型
|
request
|
javax.servlet.HttpServletRequest
|
response
|
javax.servlet.HttpServletResponse
|
pageContext
|
javax.servlet.jsp.PageContext
|
application
|
javax.servlet.ServletContext
|
out
|
javax.servlet.jsp.JspWriter
|
config
|
javax.servlet.ServletConfig
|
page
|
java.lang.Object(
相当于
Java
中的
this
关键字
)
|
session
|
javax.servlet.http.HttpSession
|
exception
|
java.lang.Exception
|
8
、装载并注册数据库驱动程序
//
装载
JdbcOdbcDriver class
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
//
装载并注册
SQLServer Driver
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
//
装载并注册
OracleDriver
Class.forName(“oracle.jdbc.driver.OracleDriver”);
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//
装载并注册
MySQLDriver
Class.forName(“com.mysql.jdbc.Driver”);
java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());//
不是必要步骤
常用的数据库的
JDBCURL
形式
◆如果通过JDBC-ODBC Driver连接数据库,形式如下:
jdbc:odbc:datasource
◆对于Oracle数据库连接,形式如下:
jdbc:oracle:thin:@localhost:1521:sid
◆对于SQL Server数据库连接,形式如下:
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB
◆对于MySQL数据库连接,形式如下:
jdbc:mysql://localhost:3306/BookDB
中文编码转换问题
:
String dbUrl=”jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312”
9
、
HttpSession
接口
方
法
|
描
述
|
getId()
|
返回
session
的
ID
|
invalidate()
|
使当前的
session
失效,
servlet
释放其占用的资源
|
setAttriibute(String name,Object object)
|
将一对
name/value
属性保存在
HttpSession
对象中
|
getAttribute(String name)
|
根据
name
参数返回保存在
HttpSession
对象中的属性名
|
getAttributeNames()
|
以数组的方式返回
HttpSession
对象中所有的属性名
|
isNew
|
判断是否是新建的
session
|
setMaxInactiveinterval()
|
设定一个
session
可以处于不活动状态的最大时间间隔,以秒为单位
|
getMaxInactiveinterval()
|
得到
session
的最大时间间隔
|
10
、一个标准的
JavaBean
的特征
(
1
)
JavaBean
是一个公共的
(public)
类;
(
2
)
JavaBean
有一个不带参数的构造方法;
(
3
)
JavaBean
通过
setXXX
方法设置属性,通过
getXXX
方法获取属性。
11
、
JSP
访问
JavaBean
的语法
可以通过程序代码来访问
JavaBean
,也可以用特定的
JSP
标签来访问
JavaBean
(1)
导入
JavaBean
类
如:
<%@ page import=”mypack..CounterBean” %>
(2)
声明
JavaBean
对象
<jsp:useBean id=”myBean” class=”mypack.CounterBean” scope=”session”/>
注:
scope
可选值包括
page
、
request
、
session
、
application
,默认为
page
。
(3)
访问
JavaBean
属性
JSP
提供了访问
JavaBean
属性的标签,如果要将
JavaBean
的某个属性输出到网页上,可以用
<jsp:getProperty>
标签,如:
<jsp:getProperty name=”myBean” property=”count”/>
如果要给
JavaBean
的某个属性赋值,可以用
<jsp:setProperty>
标签,如:
<jsp:setProperty name=”myBean” property=”count” value=”0”/>
12
、
Tomcat
安全域的类型
类
型
|
类
名
|
描
述
|
内存域
|
MemoryRealm
|
在初始化阶段,从
XML
文件中读取安全验证信息,并把它们以一组对象的形式存放在内存中
|
JDBC
域
|
JDBCRealm
|
通过
JDBC
驱动程序访问存放在数据库中的安全验证信息
|
数据源域
|
DataSourceRealm
|
通过
JNDI
数据源访问存放在数据库中的安全验证信息
|
JNDI
域
|
JNDIRealm
|
通过
JNDI provider
访问存放在基于
LDAP
的目录服务器中的安全验证信息
|
13
、
MVC
设计模式
MVC
模块
|
描
述
|
模型
|
代表应用程序状态和业务逻辑
|
视图
|
提供可交互式的客户界面,向客户显示模型数据
|
控制器
|
响应客户的请求,根据客户的请求来操纵模型,并把模型的响应结果经由视图展现给客户
|
JDBC-ODBC
编程的典型步骤
1
、输入
java.sql
包
在程序的开头,必须加入下面的代码:
Import java.sql.*
2
、声明变量
在
JDBCDemo.java
,声明了下面三个变量,
stmt
用于
select
语句,
pstmt
用于
update
语句,
rs
用于
select
的结果集。
Statement stmt;
PreparedStatement pstmt;
ResultSet rs;
3
、加载
jdbc-odbc
桥驱动程序
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
4
、定义
JDBC URL
URL
中使用的
JDBCDemo
就是在“控制面板”的“
ODBC
数据源(
32
位)”中设置的
ODBC
数据源
JDBCDemo
。
String url=”jdbc:odbc:JDBCDemo”;
5
、连接数据库
Connection con=DriverManager.getConnection(url);
6
、进行相应的数据操作
如果需要执行
select
操作,可以使用
Statement
对象或
PreparedStatement
对象,如果需要进行
update
操作,就只能使用
PreparedStatement
对象。
7
、关闭数据库连接
Con.close();
源程序:
JDBCDemo.java
/*
* @(#) JDBCDemo.java
*/
import java.sql.*;
/**
*
演示
JDBC
操作数据库的各项功能,包括表的
create
、
drop
、
insert
、
update
、
select
*@versin 1.00 2004/09/05
*@author spring
*since jdk1.3
*/
public class JDBCDemo
{
public static void main(String args[])
{
try{
Statement stmt;
PreparedStatement pstmt;
ResultSet rs;
//
加载
jdbc-odbc
桥驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//
定义
JDBC URL
String url="jdbc:odbc:JDBCDemo";
//
得到与数据库的连接
Connection con=DriverManager.getConnection(url);
//
显示
URL
和连接信息
System.out.println("URL:"+url);
System.out.println("Connection:"+con);
//
得到一个
Statement
对象
stmt=con.createStatement();
//
如果表
DemoTable
已经存在,则删除之,否则,抛掷一个异常
System.out.println("If DemoTable Exist,Delete!");
try{
stmt.executeUpdate("DROP TABLE DEMOTable");
}catch(Exception e){
System.out.println(e);
System.out.println("Not Delete");
}
//
在数据库中创建一个表
DemoTable
stmt.executeUpdate("CREATE TABLE DemoTable(id int,val char(15) not null)");
System.out.println("Table DemoTable created!");
//
在表中插入一些值
stmt.executeUpdate("insert into DemoTable(id,val) values(1,'one')");
stmt.executeUpdate("insert into DemoTable(id,val) values(2,'two')");
stmt.executeUpdate("insert into DemoTable(id,val) values(3,'three')");
stmt.executeUpdate("insert into DemoTable(id,val) values(4,'four')");
stmt.executeUpdate("insert into DemoTable(id,val) values(5,'five')");
//
得到另一个
Statement
对象
stmt=con.createStatement();
//
查询数据库中的表
DemoTable
,得到以
ID
排序后的所有记录,并存储在
RS
中
rs=stmt.executeQuery("select * from DemoTable order by id");
//
显示表
DemoTable
中的所有记录
System.out.println("Display all results:");
while(rs.next())
{
int theInt=rs.getInt("id");
String str=rs.getString("val");
System.out.println("id=" + theInt + "val=" + str);
}
//
创建已准备好的语句,更新
DemoTable
表中某条记录
val
字段
//
已准备好的语句接受两个参数
/**********************
pstmt=con.preparedStatement("update DemoTable set val=? where id=?");
//
更改表
DemoTable
中的第
2
条记录的
val
字段的值
//
填充
update
语句中的
"?",
并执行
update
语句
pstmt.setString(1,"Hello!");
pstmt.setInt(2,2);
pstmt.executeUpdate();
System.out.println("Update row number 2:ok.");
//
显示表
DemoTable
中更新后的第
2
条记录
stmt=con.createStatement();
rs=stmt.executeQuery("select * from DemoTable order by id");
System.out.println("Display row 2:");
if(rs.next() && rs.next())
{
int theInt=rs.getInt("id");
String str=rs.getString("val");
System.out.println("id=" + theInt + "val=" + str);
}
***************/
//
关闭与数据库的连接
con.close();
}catch(Exception e){ //
异常处理
e.printStackTrace();
}
}
}
|
JSP
的中文环境
常见的处理
JSP
的中文的方法有两种:
<%@ page contentType=”text/html;charset=gb2312”%>
<%
String Hi=”
您好
”;
byte[] tmpbyte=Hi.getBytes(“ISO8859_1”);
Hi=new String(tmpbyte);
Out.print(Hi);
%>
通过简单总结,中文处理发生于以下几个地方:
(
1
)在
url
附带中文参数,可以直接读取。
例如:
<%=request.getParameter(“showword”)%>
(2)
与数据库有关的各种
sql
操作,使用
Access
没有发生问题。
1 JSP
基本语法
1.1 JSP
语句类型
JSP
语句主要有以下五种类型:
编译器指令
<%@
指令
%>
声明
<%!
预定义内容
%>
表达式
<%=
表达式
%>
脚本
Scriptlet<%
代码
%>
注解
<%--
注释内容
--%>
示例:
<%@ page language=”java”%>
<html>
<head>
<title>Hello,JSP</title>
</head>
<body bgcolor=red>
<%! String strHello=”How are you”;%>
<h1><%=strHello%></h1>
<%
out.println(“This is a sample”);
%>
<%--This is a sample of jsp--%>
</body>
</html>
1.2
指令语法
1.2.1 include
指令
在
JSP
中包含一个静态的文件,同时解析这个文件中的
JSP
语句。
语法:
<%@ include file=”relativeURL”%>
属性:
#file=”relativeURL”
1.2.2 Page
指令
定义
JSP
文件中的全局属性
语法:
<%@ page
[language=”java”]
[extends=”package.class”]
[import=”{package.class|package.*},….]
[session=”true|false”]
[buffer=”none|8kb|sizekb”]
[autoFlush=”true|false”]
[isThreadSafe=”true|false”]
[info=”text”]
[errorPage=”relativeURL”]
[contentType=”mimeType[;charset=characterSet]”|”text/html;charset=ISO-8859-1”]
[isErrorPage=”true|false”]
%>
示例:
<%@ page import=”java.util.*,java.lang.*”%>
<%@ page buffer=”5kb” autoFlush=”false”%>
<%@ page errorPage=”error.jsp”%>
1.2.3
声明
在
JSP
程序中声明合法的变量和方法
语法:
<%! declaration;[daclaration;]+…%>
示例:
<%! int=0;%>
<%! int a,b,c;%>
<%! Circle a=new Circle(2,0);%>
1.2.4
表达式
包含一个有效的程序段
语法:
<% code fragment%>
1.3
动作语法(
Action
)
JSP
动作语法应用
XML
语法结构来控制
Servlet
引擎的行为,你可以动态地插入文件、重用
Java Beans
控件、导向另一个页面或产生
Java Html
插件。可用的动作有:
jsp:include
:在页面得到请求时包含一个文件;
jsp:useBean
:使用
JavaBean
控件;
jsp:setProperty
:设置
JavaBean
的属性;
jsp:getProperty
:将
JavaBean
的属性插入到输出中;
jsp:forward
:引导请求者进入新的页面
jsp:plugin
1.3.1 jsp:include
动作
这个动作让你在页面生成时插入文件。
语法:
<jsp:include page=”relativeURL” flush=”true”/>
1.3.2 jsp:useBean
动作
这个动作让你装入这个
JSP
页中要用到的
JavaBean
,它让你能够充分应用
java
的重用性。
语法:
<jsp:useBean id=”name” class=”package.class”/>
1.3.3 jsp:setProperty
动作
jsp:setProperty
设置所要应用的
Bean
的属性值,你可以在两种情况下应用此动作。
1
、用在
jsp:useBean
之后,表示如下:
<jsp:useBean id=”myName”…/>
…
<jsp:setProperty name=”myName” property=someProperty”…/>
在这种情况下,此
jsp:setProperty
动作不管是新的例示还是原有的
Bean
对象,都会执行。
2
、用在
jsp:useBean
实体之内,表示如下:
<jsp:useBean id=”myName”…>
…
<jsp:setProperty name=”myName” property=”someProperty”…/>
</jsp:useBean>
JDBC API
最重要的接口是:
* java.sql.DriverManager
处理驱动的调入并且对产生新的数据库连接提供支持。
* java.sql.Connection
代表对特定数据库的连接。
* java.sql.Statement
代表一个特定的容器,来对一个特定的数据库执行
SQL
语句。
* java.sql.ResultSet
控制对一个特定语句的行数据的存取。
其中
java.sql.Statement
又有两个子类型:
1. java.sql.PreparedStatement
用于执行预编译的
SQL
语句。
2. java.sql.CallableStatement
用于执行对一个数据库内嵌过程的调用。
posted on 2006-07-23 10:50
MEYE 阅读(509)
评论(0) 编辑 收藏 所属分类:
JAVA