??xml version="1.0" encoding="utf-8" standalone="yes"?>
Tomcat 5.0.30
SQLServer2000
---------------------------------------------------------------------------------------
%TOMCAT_HOME%\conf\Server.xmll构分析
<Server> <Service> <Connector></Connector> <Engine> <Host> <Context></Context> </Host> </Engine> </Service> </Server> |
<Server><!--层元素,?/span>Tomcat实例的顶层元素,可包含一个或多个Service-->
<Service><!--q接器元素,包含一?/span>Engine元素Q以及一个或多个Connector元素Q这?/span> Connector׃n同一?/span>Engine-->
< Connector>< !--实际和客户交互的lg-->
< Engine>< !--容器cd素,可以包含多个Host元素-->
< Host>< !--定义一个虚拟主机,它可以包含一个或多个Web应用-->
< Context>< !--使用最频繁的元素,每个Context代表q行在虚拟主Z的应?/span>-->
嵌套cd素可以加到容器组件中如:< Logger>< Value>< Realm>元素
Context元素功能分析
?/span> [installdir]\webapps 目录下创Z个名?/span> blog 的子目录。然后在 blog 子目录下Q创建标准的 Web 应用E序目录l构Q?/span>
[installdir]\webapps\blog [installdir]\webapps\blog\WEB-INF [installdir]\webapps\blog\WEB-INF\classes [installdir]\webapps\blog\WEB-INF\lib |
接下来,d指向 Web 应用E序?/span> context?/span>context 只是一个别名,它告?/span> Tomcat 在哪里可以访?/span> Web 应用E序。我们的 context 路径是 /blogQ它指向我们刚刚创建的 blog 子目录。在用户输入 http://localhost:8080/blog 后,{?/span> webapps 下的 banner 目录。如果他惌行我们的 BlogServletQ将存在?/span> WEB-INF/classes 目录中)Q他可以使用 http://localhost:8080/blog/servlet/BlogServlet?/span>
要添?/span> /blog contextQ首先,我们需要编?/span> Tomcat conf 目录中的 server.xml 文g。在接近该文件底部的位置Q您会看到几?/span> context 标记。那里应该有一个用?/span> /admin ?/span> context 和一个用?/span> /examples ?/span> context。请d以下 context 标记Q?/span>
<!-- BannerAd Context --> <Context path="/blog" docBase="blog" debug="0" reloadable="true" crossContext="true"/> |
--------------------------------------------------------------------------------------
开始数据池配置
1Q配|环?/span>
需要的jar包打入全局目录Q即%TOMCAT_HOME%\common\lib下,?/span>SQLServer的数据驱动等?/span>
2Q配|?/span>TOMCATQ?/span>POOLMAN的数据池Q?/span>
·服务器端Q配|?/span>Server.xml文档(%TOMCAT_HOME%\conf\Server.xml)
<Context path="/blog" docBase="blog" debug="0" reloadable="true">
<Resource name="jdbc/blog" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/blog">
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name> <value>jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
·.客户端:配置web.xml文档(\webapps\banner\WEB-INF\web.xml)
<resource-ref>
<description>SqlServer Datasource example</description>
<res-ref-name>jdbc/blog</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
下面的代码示例都以下面的表结构ؓ准:
Articles ?nbsp; SQL Server cd Oracle cd
PK Id int (自增) number(9) (插入时在当前最大g?)
Author nvarchar(10) nvarchar2(10)
Title nvarchar(50) nvarchar2(50)
PubTime datetime date
SQL Server / Access {微软品中Q我们通常的自定义分页有两U思\Q?/p>
一U是?ASP.NET Forum Z表的?#8220;临时?#8221;ҎQ即在存储过E中建立一个时表Q该临时表包含一个序号字D(1Q?Q?Q?...Q以及表的主键(其他能够唯一定一行记录的字段也是可以的)字段。存储过E可能如下:Q编?SS1Q?/p>
CREATE Procedure GetAllArticles_Paged
(
@PageIndex int,
@PageSize int,
@TotalRecords out int,
@TotalPages out int
)
AS
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1
-- Create a temp table to store the select results
CREATE TABLE #tmp
(
RecNo int IDENTITY (1, 1) NOT NULL,
ArticleID int
)
INSERT INTO #tmp
SELECT [ID]
FROM Articles
ORDER BY PubTime DESC
SELECT A.*
FROM Articles A (nolock), #tmp T
WHERE A.ID = T.ArticleID AND
T.RecNo > @PageLowerBound AND
T.RecNo < @PageUpperBound
ORDER BY T.RecNo
GO
另一U可能更适合E序?#8220;拼凑” SQL 语句Q用两次 TOP 命o取得我们所要的分页数据Q例如:Q编?SS2Q?/p>
SELECT * FROM
(
SELECT TOP(PageSize) * FROM
(
SELECT TOP (PageSize * PageIndex) *
FROM Articles
ORDER BY PubTime DESC
)
ORDER BY PubTime ASC
)
ORDER BY PubTime DESC
q个的想法就?#8220;掐头d”Q还有不分늚ҎQ这里就不一一列出了?/p>
对于 Oracle 数据库,有几处不同严重妨了上面几个Ҏ的实施,比如QOracle 不支?TOP 关键字:不过q个好像q不十分严重Q因为它提供?rownum q个隐式游标Q可以实C TOP cM的功能,如:
SELECT TOP 10 ... FROM WHERE ...
要写?/p>
SELECT ... FROM ... WHERE ... AND rownum <= 10
rownum 是记录序P1Q?Q?...Q,但有一个比较麻烦的事情是:如果 SQL 语句中有 ORDER BY ... 排序的时候,rownum 居然是先“标号”后排序!q样Q这个序号如果不加处理是不合乎用需求的?/p>
至于临时表,Oracle 的时表?SQL Server 的有很大不同Q我q没搞懂q个东西Q就不妄加揣了?/p>
国内|站中介l?Oracle 分页的资料很,我找C一个国外站点(www.faqts.comQ的一?FAQQ根据这文章的介绍Q可以如下分:Q编?Ora1Q?/p>
SELECT * FROM
(
SELECT A.*, rownum r
FROM
(
SELECT *
FROM Articles
ORDER BY PubTime DESC
) A
WHERE rownum <= PageUpperBound
) B
WHERE r > PageLowerBound;
A. 有两个方?
1). int i = Integer.parseInt([String]); ?nbsp;
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
? 字串转成 Double, Float, Long 的方法大同小?
2 如何整?int 转换成字?String ?
A. 有叁U方?
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
? Double, Float, Long 转成字串的方法大同小?