一步一步學JSP(環境配置,資料庫連接,web應用配置)
來源:互聯網
上載者:User
js|web|資料|資料庫|資料庫連接 一、jsp運行環境配置
1.(apache+ resin-2.0.5)配置
如果你的網站是建立在apache下現在又想使用jsp,怎麼辦呢?你可以通過一些支援apache的jsp引擎(如resin,tomcat,jser等)來實現。這裡介紹怎麼配置apache+resin使apache支援jsp。 一、分別安裝配置apache和resin使各自都單獨能正常運行。
apache和resin的安裝後路徑如下:c:apache 和 c: esin1.1。
2)、配置apache
這裡配置apache,使其裝載resin的jsp引擎。增加如下的命令列到c:apacheconfhttp.conf設定檔中.
LoadModule aucho_module
3)、配置resin
修改rsein的設定檔(c: esinconf esin.conf),指定其在apache下的jsp的工作目錄。修改如下:
<caucho.com>
<http-server app-dir=`c:/apache/htdocs`>
<servlet-mapping rl-pattern=`/servlets/*` servlet-name=`invoker`/>
<servlet-mapping rl-pattern=`*.xtp` ervlet-name=`com.caucho.jsp.XtpServlet`/>
<servlet-mapping rl-pattern=`*.jsp` servlet-name=`com.caucho.jsp.JspServlet`/>
</http-server>
</caucho.com>
4)測試
完成以上步驟後apache已經支援jsp和servlet. 運行apache,啟動resin的jsp引擎(運行c: esin1.1insrun.exe).
jsp的運行目錄為apache的htdocs下,而servlet運行目錄為"c:apachehtdocsWeb-infclass"
把一個jsp檔案(test.jsp )放入apache的htdocs目錄下
test.jsp如下:
<%@ page language=java?>
2+2=<%=2+2%>
瀏覽http://localhost:port/test.jsp 你將看到:2+2=4這個結果. 註: 調試環境win98+apache_1_3_12+resin1.1 ,port為WEB伺服器連接埠號碼
2.(IIS 5.0+ resin-2.0.5)配置
IIS WEB以其管理操作簡單和對ASP的支援而受不少人的喜歡。這裡介紹怎麼用resin使IIS支援jsp和servlet。
1)分別安裝配置iis和resin2.0.5使各自都單獨能正常運行。iis和resin2.0.5的安裝後路徑如下:c:apache 和 c: esin2.0.5。
2)配置IIS
1.拷貝iis_srun.dll 到IIS scripts目錄"c:inetpubscripts";
2.在c:inetpubscripts目錄下建立設定檔(resin.ini)用於指定resin的設定檔的位置。
resin.ini內容如下: CauchoConfigFile c:/resin2.0.5/conf/resin.conf
3)配置resin
?<caucho.com>
<http-server app-dir=`C:Inetpubwwwroot`>
<servlet-mapping rl-pattern=`/servlets/*` servlet-name=`invoker`/>
<servlet-mapping rl-pattern=`*.xtp` ervlet-name=`com.caucho.jsp.XtpServlet`/>
<servlet-mapping rl-pattern=`*.jsp` servlet-name=`com.caucho.jsp.JspServlet`/>
</http-server>
</caucho.com>
4)測試
1、 運行IIS,啟動resin的jsp引擎(運行c: esin2.0.5insrun.exe)
2、 把一個jsp檔案(test.jsp )放入IIS的C:Inetpubwwwroot目錄下.
test.jsp如下:
<%@ page language=java?>
2+2=<%=2+2%> 瀏覽http://localhost:port/test.jsp。你將看到:2+2=4<??這個結果 註:port為連接埠號碼,調試環境nt4.0+iis+resin1.1
資料連線池的學習
poolman是一個優秀的串連池。下載地址為http://telia.dl.sourceforge.net/sourceforge/poolman/
一個JDBC URL由三部分組成:協議標識(總是jdbc),驅動程式標識(如 odbc、idb、oracle等),資料庫標識(其格式依賴於驅動程式)。例如,jdbc:odbc:demo,即是一個指向demo資料庫的JDBC URL,而且訪問該資料庫要使用JDBC-ODBC驅動程式。每個串連池都有一個供客戶程式使用的名字以及可選的使用者帳號、密碼、最大串連數限制。如果Web應用程式所支援的某些資料庫操作可以被所有使用者執行,而其它一些操作應由特別許可的使用者執行,則可以為兩類操作分別定義串連池,兩個串連池使用相同的JDBC URL,但使用不同的帳號和密碼。
Naming 類 的學習
Naming 類
java.rmi.Naming 類提供儲存和獲得對遠程對象註冊服務程式中遠程對象進行
引用的方法。Naming 類中的方法以如下形式的,URL 格式的 java.lang.String
作為其中的一個參數:
//host:port/name
其中 host 是註冊服務程式所在的主機(遠程或本地),port 是註冊服務程式
接收調用的連接埠號碼,name 是注 冊表未作出解釋的簡單字串。host 和 port
是可選的。如果省略了 host,則主機預設值為本地 主機。如果省略了 port,
則連接埠預設值為 1099,即 RMI 系統註冊服務程式 rmiregistry 所用的“眾所
周知”的連接埠。
為遠程對象綁定名稱即為稍後使用的遠程對象關聯或註冊名稱,可用於查詢該遠
程對象。可以使用 Naming 類的 bind 或 rebind 方法將遠程對象與名稱相關聯
。
當遠程對象已用 RMI 註冊服務程式在本地主機上進行過註冊(綁定)後,遠程
(或本地)主機上的調用程式就可以按名稱查詢遠程對象、獲得其引用,然後在
對象上調用遠程方法。必要時,某一主機上啟動並執行伺服器可以共用一個註冊服務
程式。
伺服器的各個進程也可建立和使用自己的註冊服務程式
(詳細資料,參見 java.rmi.registry.LocateRegistry.createRegistry 方法)
。
package java.rmi;
public final class Naming
{
public static Remote lookup(String url)
throws NotBoundException, java.net.MalformedURLException,
RemoteExceptio
n;
public static void bind(String url, Remote obj)
throws AlreadyBoundException, java.net.MalformedURLException,
RemoteExce
ption;
public static void rebind(String url, Remote obj)
throws RemoteException, java.net.MalformedURLException;
public static void unbind(String url)
throws RemoteException, NotBoundException, java.net.MalformedURLExce
ptio
n;
public static String[] list(String url)
throws RemoteException, java.net.MalformedURLException;
}
lookup 方法返回與名稱的檔案部分相關聯的遠程對象。如果名稱未綁定到對象上
,則拋出 NotBoundException。
bind 方法將把指定名稱綁定到遠程對象上。如果該名稱已綁定到某一對象上,
則拋出 AlreadyBoundException。
rebind 方法總將名稱綁定到對象上,無論該名稱是否已綁定。原有綁定將丟失。
unbind 方法將取消名稱和遠程對象間的綁定。如果沒有綁定,則拋出 NotBound
Exception。
list 方法返回一個 String 對象的數組,該對象包含註冊服務程式中綁定 URL
的快照。
為了向註冊服務程式查詢其內容列表,只需要 URL 上的主機名稱和連接埠資訊;因此
,URL 的“file”部分將被忽略。
注意 : 這些方法也可能拋出 java.rmi.AccessException。AccessException 表
示調用程式無執
行特定操作的許可權。例如,只有運行註冊服務程式的主機上的本地客戶機才允許
執行 bind、rebind
和 unbind 操作。但任何非本地客戶機都可調用 lookup 操作。
web.xml的學習
現在我改為了tomcat的運行環境了!!
web.xml具體的文法請看這個網址
http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/index.html#611
JSP取得在WEB.XML中定義的參數
在WEB.XML檔案中設定參數:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name> myjsp </servlet-name>
<jsp-file> /MyJsp.jsp </jsp-file>
<init-param>
<param-name>firstparam</param-name>
<param-value>firstparamvalue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name> myjsp </servlet-name>
<url-pattern> /myurl/* </url-pattern>
</servlet-mapping>
</web-app>
下面的程式無法取出在WEB.XML中定義的參數firstparam的值firstparamvalue
<html>
<HEAD><TITLE>my jsp page .jsp</TITLE></HEAD>
My init parameter is <%= application.getInitParameter("firstparam") %>
</html>
下面的程式就可以取出在WEB.XML中定義的參數firstparam的值firstparamvalue
<%
String Str1;
Str1=config.getInitParameter("firstparam");
Out.println(Str1);
%>
因為config是類javax.servlet.ServletConfig的對象,而application 是類 javax.servlet.ServletContext的對象.
如果指定WebLogic SERVER的偵聽連接埠為80,那麼在IE中就不用輸入連接埠
http://hostname/myfile.html取代http://hostname:portnumber/myfile.html.
JNDI的學習
JNDI全稱 Java Naming and Directory Interface
JNDI是Java平台的一個標準擴充,提供了一組介面、類和關於命名空間的概念。如同其它很多Java技術一樣,JDNI是provider-based的技術,暴露了一個API和一個服務供應介面(SPI)。這意味著任何基於名字的技術都能通過JNDI而提供服務,只要JNDI支援這項技術。JNDI目前所支援的技術包括LDAP、CORBA Common Object Service(COS)名字服務、RMI、NDS、DNS、Windows註冊表等等。很多J2EE技術,包括EJB都依靠JNDI來組織和定位實體。
JDNI通過綁定的概念將對象和名稱聯絡起來。在一個檔案系統中,檔案名稱被綁定給檔案。在DNS中,一個IP地址綁定一個URL。在目錄服務中,一個對象名被綁定給一個對象實體。
JNDI中的一組綁定作為上下文來引用。每個上下文暴露的一組操作是一致的。例如,每個上下文提供了一個尋找操作,返回指定名字的相應對象。每個上下文都提供了綁定和撤除綁定名字到某個對象的操作。JNDI使用通用的方式來暴露命名空間,即使用分層上下文以及使用相同命名文法的子上下文。
jndi的用途:
1。你可以用jndi來得到object類的屬性
如:Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi來搜尋對象
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
尋找誰的名字叫Fox在wiz部門的員工?
3。你可以用jndi通過naming/directory服務查詢像printers和databases的對象
如:查詢 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空間的特殊層級的內容
如:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
以上根據jndi文檔翻譯的
地址:
http://java.sun.com/products/jndi/overview.html
tomcat資料庫連接池配置中的
java:comp/env代表你的JVM的環境,comp=computer env=environment