国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Tomcat 5.5 身份驗(yàn)證領(lǐng)域配置

關(guān)于示例應(yīng)用程序

我們遷移的示例應(yīng)用程序是使用 Web 層組件創(chuàng)建的 General Store 應(yīng)用程序,Web 層組件包括:

  • JSP
  • servlet
  • JSP 標(biāo)準(zhǔn)標(biāo)記庫(kù)(JSP Standard Tag Library,JSTL)

該應(yīng)用程序使用模型-視圖-控制器(Model-View-Controller,MVC)的體系結(jié)構(gòu)來(lái)路由請(qǐng)求,并且全部是無(wú)腳本(JSP 頁(yè)面內(nèi)沒(méi)有嵌入式 Java 代碼)的。

作為 Tomcat 5.5 應(yīng)用程序,它還使用下面的 Tomcat 的特定功能:

  • 對(duì)用戶進(jìn)行身份驗(yàn)證的缺省的 Tomcat UserRealm。
  • 查找連接到外部 Derby 數(shù)據(jù)庫(kù)的 JDBC 數(shù)據(jù)源的 JNDI。

圖 2 演示了該應(yīng)用程序的一般體系結(jié)構(gòu)。


圖 2. General Store 示例應(yīng)用程序

在圖 2 中,所有傳入請(qǐng)求都被發(fā)送到控制器(MVC 體系結(jié)構(gòu))Servlet。該 Servlet 根據(jù)傳入請(qǐng)求的參數(shù)將請(qǐng)求發(fā)送到兩個(gè) JSP頁(yè)面中的某一個(gè)頁(yè)面。最初,請(qǐng)求被發(fā)送到顯示產(chǎn)品目錄的 generalstore.jsp。圖 3 顯示了 General Store應(yīng)用程序的產(chǎn)品目錄頁(yè)面。


圖 3. 應(yīng)用程序目錄頁(yè)面

當(dāng)您單擊某個(gè) BUY 超鏈接時(shí),控制器會(huì)將請(qǐng)求發(fā)送到 checkoutcart.jsp 頁(yè)面,該頁(yè)面使您能夠?qū)⒍鄠€(gè)項(xiàng)添加到購(gòu)物車,清除購(gòu)物車,或返回到購(gòu)物。

generalstore.jsp 和 checkoutcart.jsp 都大量使用 JSTL 生成交互式購(gòu)物車腳本;沒(méi)有使用嵌入式 Java 代碼。

名為 GerneralStore 的類具有一個(gè)方法,通過(guò)該方法,可以獲得目錄以及每個(gè)目錄中的產(chǎn)品列表。在生產(chǎn)場(chǎng)景中,該類的實(shí)現(xiàn)可以連接到外部 RDBMS 以獲得它們的數(shù)據(jù)。在本例中,為了保持簡(jiǎn)單實(shí)現(xiàn)具有硬編碼的目錄和產(chǎn)品信息。

要通過(guò) JDBC 訪問(wèn)外部 RDBMS,checkoutcart.jsp 頁(yè)面使用 RDBMS 獲取今天的促銷消息并將該消息顯示給購(gòu)物者。

本文的下載 ZIP 文件提供了組成示例應(yīng)用程序的文件。表 2 概括介紹了組成應(yīng)用程序的類和文件,并描述了它們的用途。

表 2. General Store 示例應(yīng)用程序中的文件
文件描述
generalstore.jsp向用戶呈現(xiàn)目錄。
checkoutcart.jsp向用戶呈現(xiàn)購(gòu)物車。將通過(guò)數(shù)據(jù)源(使用 JNDI 查找)訪問(wèn) RDBMS 以顯示促銷消息。
generalstore.css兩個(gè) JSP 頁(yè)面所使用的用來(lái)格式化 HTML 元素的樣式表。
StoreController.java將請(qǐng)求發(fā)送到 JSP 的主控制器。還可以獲得目錄和產(chǎn)品信息,并將這些信息作為 JSP 的屬性附加以進(jìn)行顯示。
GeneralStore.java包含返回應(yīng)用程序所需的數(shù)據(jù)的方法。還包含實(shí)現(xiàn)自定義標(biāo)記庫(kù)的功能(請(qǐng)參閱 generalstore-taglib.tld)。
Category.java
Proudct.java
LineItem.java
當(dāng)數(shù)據(jù)在應(yīng)用程序的模型和視圖之間傳送時(shí),JavaBean 用于保存值。
generalstore-taglib.tld實(shí)現(xiàn)為 GeneralStore.java 的方法的自定義標(biāo)記庫(kù),這些方法用于 JSP。

要使用該示例應(yīng)用程序,您必須下載以下應(yīng)用程序并將它們安裝到您的環(huán)境中:





回頁(yè)首


部署到 Tomcat 5.5 環(huán)境

通過(guò)轉(zhuǎn)到代碼目錄并鍵入下面的命令,您可以構(gòu)建示例應(yīng)用程序:

ant war

這將在 dist 目錄中創(chuàng)建一個(gè)名為 generalstore.war 的 WAR 文件。它是可以部署到 Tomcat 5.5 的 Web 應(yīng)用程序存檔文件。

1. Tomcat 5.5 連接器配置

缺省情況下,Tomcat 5.5 服務(wù)器在端口 8080 偵聽(tīng)請(qǐng)求。這是通過(guò) Tomcat 5.5 安裝目錄下的 conf/server.xml 配置的。清單 1 顯示了配置連接器的 server.xml 代碼段。

清單1.server.xml 中的 Tomcat 連接器配置

<Server port="8005" shutdown="SHUTDOWN">
...
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">
...
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

如果您需要更改端口,則執(zhí)行以下操作:

  1. 關(guān)閉服務(wù)器。
  2. port="8080" 更改為上面的 server.xml 代碼段中需要的端口。
  3. 再次啟動(dòng)服務(wù)器。

2. Tomcat 5.5 身份驗(yàn)證領(lǐng)域配置

在Tomcat 中,領(lǐng)域維護(hù)用戶、組和密碼信息。缺省情況下,UserDatabaseRealm 在 Tomcat 5.5中進(jìn)行了配置,從而使您能夠讓用戶在訪問(wèn)雜貨店前對(duì)他們進(jìn)行身份驗(yàn)證。此領(lǐng)域在 server.xml 文件中也進(jìn)行了設(shè)置。清單 2 中的server.xml 代碼段的粗體行表示該身份驗(yàn)證領(lǐng)域的配置。

清單 2. server.xml 中的 Tomcat UserDatabaseRealm 配置

<Server port="8005" shutdown="SHUTDOWN">
...
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>
...
<Service name="Catalina">
...
<Engine name="Catalina" defaultHost="localhost">
...
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
...

上面的配置對(duì) UserDatabaseRealm 進(jìn)行設(shè)置,以使用 conf/tomcat-users.xml下面的文件維護(hù)用戶、密碼和角色信息。由于該領(lǐng)域是在 <Engine> 級(jí)配置的,因此它可以用于運(yùn)行在 Tomcat引擎上的所有主機(jī)。

要運(yùn)行我們的應(yīng)用程序,您不需要對(duì) conf/server.xml文件進(jìn)行任何修改,因?yàn)槿笔∨渲脤槲覀冃薷摹H欢?,您需要?duì) conf/tomcat-users.xml 文件進(jìn)行一些更改,其中UserDatabaseRealm 保留所有用戶信息。對(duì) tomcat-users.xml 文件進(jìn)行清單 3 中以粗體表示的更改。

清單 3. 在 tomcat-users.xml 中為 tomcat 用戶添加管理和管理員角色

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager,admin"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

這分配tomcat 用戶(密碼為“tomcat”)角色為管理員和管理組的一部分。

在應(yīng)用程序的 web.xml 文件中,存儲(chǔ)的控制器受到保護(hù),并且它只對(duì)具有 admin 角色的用戶授予訪問(wèn)權(quán)限。清單 4 中的粗體行顯示了保護(hù)應(yīng)用程序的 web.xml 代碼(在代碼分配的 dd 目錄中)。

清單 4. 對(duì)應(yīng)用程序進(jìn)行身份驗(yàn)證訪問(wèn)保護(hù)的 web.xml 部署描述符
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>
IBM Community Edition 1.0 Example
</description>
<display-name>IBM Community Edition 1.0 General Store Example</display-name>

<servlet>
<servlet-name>GeneralStore</servlet-name>
<servlet-class>com.ibm.wasce.store.StoreController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GeneralStore</servlet-name>
<url-pattern>/store.cgi</url-pattern>
</servlet-mapping>
...
<security-constraint>
<display-name>General Store Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Entire store</web-resource-name>
<url-pattern>*.cgi</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Shopping Realm</realm-name>
</login-config>

<security-role>
<role-name>admin</role-name>
</security-role>
...
</web-app>

以上代碼中的<security-constraint> 和 <security-role> 元素是標(biāo)準(zhǔn)的 J2EE安全性配置元素,并且在容器之間是可移植的。因此,未改變的 web.xml 稍后可以在 Community Edition環(huán)境中工作。然而,您在 Tomcat 中部署和使用應(yīng)用程序之前,應(yīng)該設(shè)置該應(yīng)用程序要訪問(wèn)的 Derby RDBMS。

3. 設(shè)置 Derby 網(wǎng)絡(luò)服務(wù)器

首先,請(qǐng)確保包裝 Apache Derby 10.1。將 DERBY_INSTALL 環(huán)境變量設(shè)置為 Derby 安裝目錄,并確保 CLASSPATH 環(huán)境變量中包含下列元素:

  • lib/derby.jar
  • lib/derbytools.jar
  • lib/derbynet.jar
  • lib/derbyclient.jar

在源代碼分配中,提供的 sp.bat 文件可用于設(shè)置這些變量。如果您使用該批處理文件,請(qǐng)確保首先對(duì)其進(jìn)行修改,以反映您自己實(shí)際的 Derby 安裝目錄。然后,您可以使用以下命令在控制臺(tái)窗口中啟動(dòng) Derby 網(wǎng)絡(luò)服務(wù)器:

java org.apache.derby.drda.NetworkServerControl start

Derby 服務(wù)器啟動(dòng)并在缺省端口 1527 進(jìn)行偵聽(tīng)。

接下來(lái),創(chuàng)建要使用的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)名為 generalstore,它只包含一個(gè)名為 promotions 的表。createdb1.sql 文件將執(zhí)行該創(chuàng)建并填充數(shù)據(jù)庫(kù)。

使用 ij 命令執(zhí)行 SQL 腳本:

java  org.apache.derby.tools.ij  createdb1.sql

createdb1.sql 腳本包含清單 5 所示的 SQL 命令。

清單 5. createdb1.sql 腳本:創(chuàng)建數(shù)據(jù)庫(kù)表并填充數(shù)據(jù)

connect ‘jdbc:derby://localhost/generalstore;create=true‘;
drop table promotion;
create table promotion
(id char (5) not null,
message char(40) not null,
primary key(id));
insert into promotion values (‘1‘, ‘Thank your for your order.‘);
insert into promotion values (‘2‘, ‘Have a nice day!‘);
exit;

如果您看到消息 ERROR 08001: No suitable driver,則所需的 lib/derbyclient.jar 庫(kù)不在 CLASSPATH 環(huán)境變量中。

4. Tomcat 5.5 JNDI 資源引用和 JDBC 連接器

checkoutcart.jsp 頁(yè)面使用 JSTL 的 SQL 支持標(biāo)記訪問(wèn)促銷數(shù)據(jù)庫(kù)并輸出促銷消息。清單 6 顯示訪問(wèn) RDBMS 的代碼摘錄。

清單 6. 訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器的 checkoutcart.jsp 中的 JSP 代碼

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="storetags" uri="/GeneralStoreTagLibrary" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
...
<sql:query var="rs" dataSource="jdbc/storeDB">
select * from promotion
</sql:query>
...
<tr>
<td colspan="5">
<c:forEach var="row" items="${rs.rows}">
${row.message}<br/>
</c:forEach>
</td>
</tr>
...

JSTL<sql:query> 標(biāo)記將通過(guò) JNDI 查找名為 jdbc/storeDB 的數(shù)據(jù)源。該名稱引用是以 J2EE標(biāo)準(zhǔn)方式在應(yīng)用程序的 web.xml 部署描述符中定義的。該標(biāo)準(zhǔn)配置適用于 Tomcat 5.5 和 Community Edition。清單7 顯示該配置。

清單 7. 指定 JNDI 數(shù)據(jù)源引用的 web.xml 中的元素

<resource-ref>
<description>Derby DB connection</description>
<res-ref-name>jdbc/storeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

現(xiàn)在,您需要配置該引用,以匹配實(shí)際的JDBC 驅(qū)動(dòng)程序和 RDBMS 連接。這是通過(guò)一種容器的特定方式完成的,對(duì)于 Tomcat 和 Community Edition來(lái)說(shuō)有所不同。對(duì)于 Tomcat 5.5,可以在 META-INF/context.xml 文件(位于 dd 目錄)中進(jìn)行配置(清單 8)。

清單 8. 將 JNDI 資源與 Derby JDBC 連接器相關(guān)聯(lián)的 Tomcat 的特定 context.xml 描述符
<Context>
<Resource name="jdbc/storeDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
driverClassName="org.apache.derby.jdbc.ClientDriver"
user="APP" password="APP"
url="c"/>
</Context>

此處,Derby JDBC 驅(qū)動(dòng)程序org.apache.derby.jdbc.ClientDriver 用于在 URLjdbc:derby://localhost/generalstore 訪問(wèn)數(shù)據(jù)庫(kù)。Derby 服務(wù)器具有缺省的用戶“APP”和密碼“APP”。

5. 使用管理器應(yīng)用程序部署到 Tomcat 5.5 環(huán)境

要使用自定義設(shè)置部署應(yīng)用程序 WAR 文件,請(qǐng)啟動(dòng) Tomcat 5.5 服務(wù)器并在 Web 瀏覽器中指向:

http://localhost:8080/manager/html

您將被提示登錄;這要使用我們先前設(shè)置的 UserDatabaseRealm。由于需要管理人員角色,因此使用用戶“tomcat”和密碼“tomcat”。

管理器應(yīng)用程序?qū)@示所有部署的模塊。滾動(dòng)到底部,此處有一個(gè)框“Deploy directory or WAR file located on server”。對(duì)于“Context path”,輸入 /Shopping,而對(duì)于“WAR or Directory URL”,輸入到 generalstore.war 文件的絕對(duì)路徑。按下 Deploy 按鈕?,F(xiàn)在您應(yīng)該看到運(yùn)行于 /Shopping 上下文的 General Store 應(yīng)用程序。圖 4 顯示成功部署后的管理器應(yīng)用程序。


圖 4. 使用 Tomcat 管理器成功部署應(yīng)用程序

使用下面的 URL 嘗試訪問(wèn)應(yīng)用程序:

http://localhost:8080/Shopping/store.cgi
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring 2 和 JPA 簡(jiǎn)介
使用 Velocity 實(shí)現(xiàn)客戶端和服務(wù)器端模板
Tomcat的目錄結(jié)構(gòu)及用途
Tomcat全攻略
開(kāi)發(fā)Spring MVC應(yīng)用程序(1)
在JavaEE版本Eclipse中配置與使用Tomcat
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服