版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、高級(jí)網(wǎng)站設(shè)計(jì),經(jīng)濟(jì)管理學(xué)院信息管理教研室 陳岡,本課程主要內(nèi)容,Eclipse3.2、JBuilder2005Servlet的使用 JavaBean的使用服務(wù)器的安裝和配置 apache與tomcat的整合使用、基本身份驗(yàn)證、摘要身份驗(yàn)證、JDBCRealm驗(yàn)證、DataSource驗(yàn)證、SSL保護(hù)Web高級(jí)應(yīng)用 文件上傳與下載的實(shí)現(xiàn)、Cookie管理、頁(yè)面緩存、文件操作的實(shí)現(xiàn)、基于listener的計(jì)數(shù)器
2、,本課程主要內(nèi)容,數(shù)據(jù)庫(kù)高級(jí)應(yīng)用 數(shù)據(jù)庫(kù)性能優(yōu)化、數(shù)據(jù)庫(kù)連接池、郵件發(fā)送和接收郵件服務(wù)器meark、郵件發(fā)送和接收,本課程要求的前導(dǎo)知識(shí),HTML基本語(yǔ)法JSP基本知識(shí)Tomcat、resin基本配置數(shù)據(jù)庫(kù)基本知識(shí),例如SQL語(yǔ)句、mysql數(shù)據(jù)庫(kù)JSP中與數(shù)據(jù)庫(kù)的JDBC連接,本課程主要涉及的軟件,1。JDK1.5.02。Tomcat5.5.73。mySQL4.0、 mySQL-Front3.24。Dreamwe
3、aver MX 20045。 Eclipse3.2,如何成為一個(gè)優(yōu)秀的jsp程序員,1、建立并且理解你的Web Server。2、 保證你理解 HTML ?;〞r(shí)間學(xué)習(xí)手工寫(xiě)作html是很有必要的。因?yàn)槟銓?huì)使用 JSP 和 HTML 混合編程,精通HTML語(yǔ)法是重要的。所以,你必須能流利地寫(xiě) HTML 。 訓(xùn)
4、練時(shí)間:2 ~ 4 個(gè)星期。3、開(kāi)始學(xué)習(xí) Java 。理解 Java 基礎(chǔ)是很重要的。不用擔(dān)心學(xué)習(xí)Swing或 Java 的圖形方面,因?yàn)樵贘SP 中你不會(huì)使用這些特征。集中精力在 Java 工作的細(xì)節(jié),學(xué)習(xí) Java 的邏輯,也在 Java Bean上花時(shí)間。學(xué)習(xí)Apple
5、t是好的, 但是就象Swing, JSP 的大多數(shù)應(yīng)用將不使用小程序。訓(xùn)練時(shí)間:3 ~ 6 個(gè)星期。,如何成為一個(gè)優(yōu)秀的jsp程序員,3、學(xué)習(xí) JavaScript學(xué)習(xí)怎么將 JavaScript在HTML中驗(yàn)證輸入的Form元素。也學(xué)習(xí) JavaScript怎么能在一 HTML 頁(yè)以內(nèi)修改Form的元素。最后要求你能從一&
6、#160;HTML 頁(yè)內(nèi)的事件中觸發(fā) JavaScript Function。 訓(xùn)練時(shí)間:1~ 2 個(gè)星期。4、學(xué)習(xí)并且理解你的Web Server的更多細(xì)節(jié)。熟悉Web Server的特征,這是很重要的。 訓(xùn)練時(shí)間:2 天。,如何成為一個(gè)優(yōu)秀的jsp程序員,5、建立你的 JSP Server推薦以Tomca
7、t開(kāi)始。它可以很好地運(yùn)行JSP程序。當(dāng)你不能在生產(chǎn)使用Tomcat時(shí),學(xué)習(xí)盡可能多的知識(shí)以便于更好的運(yùn)行程序。另外, 許多 JSP 程序員使用Tomcat。因此當(dāng)你遇到一個(gè)問(wèn)題時(shí),你將容易發(fā)現(xiàn)幫助。 安裝時(shí)間:1~ 2 天。6、開(kāi)始學(xué)習(xí) JSP ?;镜?#160;JSP 學(xué)習(xí)通過(guò)的步驟 1到步驟6可以完成, 然后使用
8、160;JSP 對(duì)象和腳本寫(xiě) JSP 程序來(lái)聯(lián)系。 訓(xùn)練時(shí)間:4 ~ 6 個(gè)星期。,如何成為一個(gè)優(yōu)秀的jsp程序員,7、學(xué)習(xí)更多的 JSP server。 沒(méi)有關(guān)于更多的 JSP Server當(dāng)然也可以運(yùn)行jsp程序。然而, 許多 JSP server都由自己特殊的特征,可以讓你更好的理解你的
9、JSP 工程。學(xué)習(xí)更多的Jsp server如何處理jsp程序是有必要的。同樣也可以優(yōu)化你的 JSP 應(yīng)用程序,并且使之運(yùn)行得更快而不出任何問(wèn)題。 訓(xùn)練時(shí)間:2 ~ 7 天。,如何成為一個(gè)優(yōu)秀的jsp程序員,8、 學(xué)習(xí) JDBC 。JSP 大多數(shù)應(yīng)用將使用數(shù)據(jù)庫(kù),JDBC 被用于數(shù)據(jù)庫(kù)連接。經(jīng)常忽略的一
10、個(gè)事實(shí)就是,每個(gè) JDBC Driver 所支持的東西是相當(dāng)不同的。了解并熟悉在jsp工程上被使用的 JDBC driver的細(xì)節(jié)是很重要的。(有時(shí)這部分的學(xué)習(xí)被包含在前面 Java 或JSP的學(xué)習(xí)中了 。) 訓(xùn)練時(shí)間:1~ 2 個(gè)星期。,如何成為一個(gè)優(yōu)秀的jsp程序員,到現(xiàn)在,你已經(jīng)成為了熟練的 JSP
11、程序員。仍然有很多需要學(xué)習(xí),你可以考慮擴(kuò)展你的知識(shí)比如 DHTML , XML ,java證書(shū), JSP Tag Libraries 或 Servlets , 看你想要造什么類型的網(wǎng)站而決定了。 這些訓(xùn)練是JSP 的核心。你不必都學(xué)習(xí)上面所有的, 取決于你在工程中分配到什么任務(wù)和你已
12、經(jīng)有什么知識(shí)。但是這是成功地訓(xùn)練程序員的時(shí)間表。關(guān)鍵的單元是時(shí)間。平均的說(shuō), 5 個(gè)月時(shí)間確實(shí)能夠訓(xùn)練一個(gè)人 ( 從開(kāi)始到完成 ) 成為一個(gè)對(duì)jsp熟悉程序員。5 個(gè)月時(shí)間似乎很長(zhǎng),但要成為一個(gè)資深的WEB程序員所學(xué)的東西遠(yuǎn)遠(yuǎn)不止5個(gè)月和以上內(nèi)容。,第一章 配置系統(tǒng)環(huán)境,1。安裝JDK1.5.0:http://Java.sun.com2。安裝Tomcat5.5.7
13、著名的Apache Group的Jakarta小組開(kāi)發(fā)(http://www.jakarta.org)。3。設(shè)置環(huán)境變量JAVA_HOME:c:\java\jdk1.5.0classpath:.;C:\java\jdk1.5.0\lib\tools.jar;C:\java\jdk1.5.0\lib\dt.jarpath:%JAVA_HOME%\bin; 這一句放在最前面,否則eclipse啟動(dòng)不了4。安裝mySQL,5。
14、安裝Eclipsehttp://www.eclipse.org/downloads/index.php 目前為止,大多數(shù) Java? 程序員都聽(tīng)說(shuō)過(guò) Eclipse,它正迅速成為最流行的 Java 編程環(huán)境。在目前所有的IDE中,Eclipse可以說(shuō)是最有發(fā)展前途的產(chǎn)品之一。Eclipse最初由OTI和IBM兩家公司的IDE產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。目前由IBM牽頭,圍繞著Eclipse項(xiàng)目已經(jīng)發(fā)展成為了一個(gè)龐
15、大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項(xiàng)目中,其中包括Borland、Rational Software、Red Hat及Sybase,最近Oracle也計(jì)劃加入到Eclipse聯(lián)盟中。 Eclipse 是否與其他花錢(qián)的 IDE 一樣好? 答案非常確定!對(duì)于編碼、調(diào)試、重構(gòu)、單元測(cè)試等等, Eclipse 可以與任何一種 IDE 匹敵,甚至比它們還要好。與昂貴的 JBuilde
16、r2005 版本相比,您可能會(huì)發(fā)現(xiàn) Eclipse 對(duì)很多特性的支持都比 JBuilder 更好。,6。下載MyEclipse Eclipse插件,開(kāi)源軟件。使Eclipse支持EJB、JSP、Servlet等等等。www.myeclipseide.com 直接安裝即可。,第二章Servlet的使用2.1理解Servlet,1。認(rèn)識(shí)Servlet Servlet 是封裝的Java類,可以認(rèn)為
17、是服務(wù)器上的小應(yīng)用程序。其優(yōu)點(diǎn):平臺(tái)無(wú)關(guān)性;執(zhí)行效率高;應(yīng)用廣泛;例如:信用卡、在線支付等等。因此非常適合于服務(wù)器端的處理與編程。其缺點(diǎn):不容易表現(xiàn)網(wǎng)頁(yè)的風(fēng)格。,2.1理解Servlet,2。Servlet運(yùn)行環(huán)境編寫(xiě)Servlet源程序(.java)?編譯為class ?放置在服務(wù)器相應(yīng)目錄?配置web.xml3。Servlet程序結(jié)構(gòu)主要由三大部分:定義包導(dǎo)入必需的類聲明Servlet名稱 初始化
18、、處理用戶響應(yīng)、清除釋放資源,,,package bysservlet;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class Servlet7 extends HttpServlet { //Initialize global variables public void init() throws Servl
19、etException { } //Process the HTTP request public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintW
20、riter out = response.getWriter(); out.println(“hello,every one!"); out.close(); } //Clean up resources public void destroy() { }},4。Servlet的生命周期,裝載Servlet程序?Web Server創(chuàng)建Servlet的實(shí)例?Web Server調(diào)用Servle
21、t的init()方法?Web Servlet等待客戶端請(qǐng)求 一個(gè)客戶端請(qǐng)求到達(dá)Web Server ?Web Server創(chuàng)建一個(gè)請(qǐng)求對(duì)象?Web Server創(chuàng)建一個(gè)響應(yīng)對(duì)象?Web Server激活service方法,傳遞參數(shù)、處理客戶端請(qǐng)求?Web Server不再需要時(shí),釋放資源,5。Servlet常用方法,doGet()doPost()service()init()destroy(),6。Servle
22、t示例1,package bysservlet;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class testservlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=GB2312&q
23、uot;; //Initialize global variables public void init() throws ServletException { },//Process the HTTP request public void service(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio
24、n, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("testservlet"); out.println(""); out.println(""); out.prin
25、tln("請(qǐng)稍候,系統(tǒng)3秒后自動(dòng)返回主頁(yè)。。。"); out.println(""); out.println(""); out.close(); } //Clean up resources public void destroy() { }},7。Servlet的配置,在web.xml中加入: testservlet bys
26、servlet.testservlet testservlet /tests,8。Servlet示例2,獲取用戶表單傳遞的參數(shù)值,并顯示在屏幕上?;舅悸罚?、編寫(xiě)JSP表單,其action設(shè)置為servlet2、編寫(xiě)Servlet,在Web.xml中配置好,利用doPost()或者doGet()或者service()接收用戶表單提交的數(shù)據(jù)。思考: 使用doPost()、doGet()或者service()接收表單
27、提交的數(shù)據(jù)有無(wú)規(guī)律可循?能否將成績(jī)表的數(shù)據(jù)利用Servlet顯示為Excel表格且用戶可以另存為excel的xls文件。,9。認(rèn)識(shí)listener Servlet,package listener;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.io.FileWriter;public class listenerS
28、ervlet extends HttpServlet implements ServletContextListener, ServletContextAttributeListener, HttpSessionListener, HttpSessionAttributeListener {//Notification that the web application is ready to process requests pu
29、blic void contextInitialized(ServletContextEvent sce) { } //Notification that the servlet context is about to be shut down public void contextDestroyed(ServletContextEvent sce) { } //Notification that a session was
30、 created public void sessionCreated(HttpSessionEvent se) { } //Notification that a session was invalidated public void sessionDestroyed(HttpSessionEvent se) { }},10。Listener Servlet的配置,在web.xml中加入: listener.l
31、istenerServlet,思考與練習(xí),1、編寫(xiě)Servlet,顯示一個(gè)簡(jiǎn)單成績(jī)單表格。2、編寫(xiě)Servlet,通過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù)。3、編寫(xiě)Servlet,根據(jù)用戶表單提交的用戶名、密碼判斷用戶是否是合法用戶(用戶名為111、密碼為222表示合法用戶)。4、編寫(xiě)Servlet,輸出excel表格。5、如何在Servlet中實(shí)現(xiàn)頁(yè)面包含?6、如何編寫(xiě)Servlet,實(shí)現(xiàn)文件下載功能。7、如何編寫(xiě)listener Ser
32、vlet,實(shí)現(xiàn)計(jì)數(shù)器功能。,第三章 JavaBean3.1JavaBean概述,1。什么是JavaBean JavaBean是描述Java的軟件組件模型。通過(guò)JavaBean可以無(wú)限擴(kuò)充Java程序的功能,通過(guò)JavaBean的組合可以快速的生成新的應(yīng)用程序。 對(duì)于程序員來(lái)說(shuō),最好的一點(diǎn)就是JavaBean可以實(shí)現(xiàn)代碼的重復(fù)利用,另外對(duì)于程序的易維護(hù)性等等 也有很重大的意義。JavaBean在服務(wù)器端應(yīng)用方面表現(xiàn)出來(lái)
33、了越來(lái)越強(qiáng)的生命力。,1。什么是JavaBean,比如說(shuō)一個(gè)購(gòu)物車程序,要實(shí)現(xiàn)購(gòu)物車中添加一件商品這樣的功能,就可以寫(xiě) 一個(gè)購(gòu)物車操作的JavaBean,建立一個(gè)public的AddItem成員方法,前臺(tái)Jsp文件里面直接調(diào)用這個(gè) 方法來(lái)實(shí)現(xiàn)。如果后來(lái)又考慮添加商品的時(shí)候需要判斷庫(kù)存是否有貨物,沒(méi)有貨物不得購(gòu)買,在這個(gè) 時(shí)候我們就可以直接修改JavaBean的AddItem方法,加入處理語(yǔ)句來(lái)實(shí)現(xiàn),這樣就完全不用修改前臺(tái) jsp程序了。
34、 當(dāng)然,也可以把這些處理操作完全寫(xiě)在jsp程序中,不過(guò)這樣的jsp頁(yè)面可能就有成百上千行,光看 代碼就是一個(gè)頭疼的事情,更不用說(shuō)修改了。由此可見(jiàn),通過(guò) JavaBean可以很好地實(shí)現(xiàn)邏輯的封裝、程序的易于維護(hù)等等。 如果您使用Jsp開(kāi)發(fā)程序,一個(gè)很好的習(xí)慣就是多使用JavaBean。,2。一個(gè)簡(jiǎn)單的JavaBean,package dbbeans;public class myBean { public myB
35、ean() { }},3.2JavaBean的構(gòu)成,1。JavaBean構(gòu)成 一般由屬性、方法組成。 JavaBean的值是通過(guò)一些屬性獲得的,你可通過(guò)這些屬性訪問(wèn)JavaBean設(shè)置。以一個(gè)人來(lái)打比方,這個(gè)人就是一個(gè)JavaBean,這個(gè)人的名字、身份證號(hào)碼以及住址就是其屬性。 JavaBean的方法是指你賦予其能夠執(zhí)行的任務(wù)。類似于一個(gè)人,騎自行車就是其方法。 在JSP網(wǎng)站,你基本上就是通
36、過(guò)JavaBean來(lái)使你的網(wǎng)站動(dòng)態(tài)化。,2。JavaBean的使用, 或者: ,例如:,2。JavaBean的使用,一旦你聲明了一個(gè)JavaBean,你就可以訪問(wèn)它的屬性來(lái)定制它。要獲得屬性值,請(qǐng)用“”標(biāo)記。有了這個(gè)標(biāo)記,你就能指定將要用到的Bean名稱(從useBean的"id"字段得到)以及你想得到其值的屬性。實(shí)際的值被
37、放在輸出中: ,2。JavaBean的使用,要改變JavaBean屬性,你必須使用“”標(biāo)記。對(duì)這個(gè)標(biāo)記,你需要再次識(shí)別Bean和屬性,以修改并額外提供新值。如果命名正確,這些值可以從一個(gè)已提交的表中直接獲得:參數(shù)獲得: 可以從一個(gè)參數(shù)獲得,但你必須直接命名屬性和參數(shù): 或者直接用一個(gè)名字稱和值來(lái)設(shè)置: />,2。JavaBean的使用,萬(wàn)能星(*):關(guān)于JavaBean 的最后一件事: 為了
38、Web服務(wù)器能找到JavaBean,你需要將其class類文件放在一個(gè)特殊位置。一般放置在自己站點(diǎn)的WEB-INF\classes下。注意:包的問(wèn)題!,3。JSP與JavaBean結(jié)合示例,count.java文件主要內(nèi)容:package count;public class counter {int count = 0;public counter() { }public int getCount() {cou
39、nt++; return this.count; } public void setCount(int count) { this.count = count; } },JSP文件mycnter.jsp內(nèi)容:, counter JBuilder Generated JSP 下面看另外一個(gè)JavaBean與數(shù)據(jù)庫(kù)交互的示例:,思考與練習(xí),1、編寫(xiě)一個(gè)JavaBean,具有屬性wid,其值為
40、welldone。編寫(xiě)jsp文件,輸出該JavaBean的wid屬性的值。2、編寫(xiě)一個(gè)JavaBean,實(shí)現(xiàn)用戶登錄功能。若數(shù)據(jù)庫(kù)中存在該用戶,顯示“歡迎您訪問(wèn)!”,否則顯示“您沒(méi)有權(quán)限訪問(wèn)!”3、編寫(xiě)一個(gè)JavaBean,實(shí)現(xiàn)用戶注冊(cè)功能。,3.3 通用的數(shù)據(jù)訪問(wèn)JavaBean,1。動(dòng)態(tài)配置數(shù)據(jù)源在WEB-INF\classes下創(chuàng)建init.properties文件,示例內(nèi)容如下:#系統(tǒng)配置默認(rèn)值connJDBC.dbD
41、river=com.mysql.jdbc.DriverconnJDBC.dbURL=jdbc:mysql://localhost/bysconnJDBC.dbUsername=bysconnJDBC.dbPassword=bys007,2。讀取properties文件的方法ResourceBundle rb = ResourceBundle.getBundle("init");String dirver=
42、rb.getString("connJDBC.dbDriver");String url= rb.getString("connJDBC. dbURL ");String username= rb.getString("connJDBC. dbUsername ");String password= rb.getString("connJDBC. dbPassw
43、ord ");Class.forName(dirver);Conncetion conn = DriverManager.getConnection(url,username, password);,3. 創(chuàng)建commJDBC,封裝數(shù)據(jù)訪問(wèn)的常用方法package dbbeans;public class commJDBC { private Connection conn = null; priva
44、te Statement stmt = null; private PreparedStatement prepstmt = null; ResourceBundle rb = ResourceBundle.getBundle("init");//創(chuàng)建Statement初駛化commJDBC public commJDBC() { try { Class.forName(rb.get
45、String("connJDBC.dbDriver")).newInstance(); conn = DriverManager.getConnection(rb.getString("connJDBC.dbURL"), rb.getString("connJDBC.dbUsername&quo
46、t;), rb.getString("connJDBC.dbPassword")); stmt = conn.createStatement(); } catch (Exception e) { System.err.println("commJDBC初始化JDBC錯(cuò)誤!" );
47、 } },//創(chuàng)建PreparedStatement初駛化commJDBC public commJDBC(String sql) { try { Class.forName(rb.getString("connJDBC.dbDriver")).newInstance(); conn = DriverManager.getConnection(rb.getString("
48、connJDBC.dbURL"), rb.getString("connJDBC.dbUsername"), rb.getString("connJDBC.dbPassword")); prepareStatement(sql); } catch (Exception e) { System.err.println(&q
49、uot;commJDBC初始化JDBC錯(cuò)誤!" ); } },public Connection getConnection() { return conn; } public void prepareStatement(String sql) throws SQLException { prepstmt = conn.prepareStatement(sql); } public P
50、reparedStatement batchStatement(String sql) throws SQLException { prepstmt = conn.prepareStatement(sql); return prepstmt; } public void setString(int index, String value) throws SQLException { prepstmt.se
51、tString(index, value); } public void setInt(int index, int value) throws SQLException { prepstmt.setInt(index, value); },public void setBoolean(int index, boolean value) throws SQLException { prepstmt.setBo
52、olean(index, value); } public void setLong(int index, long value) throws SQLException { prepstmt.setLong(index, value); } public void setFloat(int index, float value) throws SQLException { prepstmt.setFlo
53、at(index, value); } public void setDate(int index, Date value) throws SQLException { prepstmt.setDate(index, value); },public void setBinaryStream(int index, InputStream in, int length) throws SQLExceptio
54、n { prepstmt.setBinaryStream(index, in, length); } public void setBytes(int index, byte[] value) throws SQLException { prepstmt.setBytes(index, value); } public void clearparameters() throws SQLException
55、{ prepstmt.clearParameters(); } public PreparedStatement getPrearedStatement() { return prepstmt; } public Statement getStatement() { return stmt; },//執(zhí)行statement查詢語(yǔ)句 public ResultSet executeQuery
56、(String sql) throws SQLException { if (stmt != null) { return stmt.executeQuery(sql); } else { return null; } } //執(zhí)行preparedStatement更新語(yǔ)句 public ResultSet executeQuery() throws SQLExcept
57、ion { if (prepstmt != null) { return prepstmt.executeQuery(); } else { return null; } },//執(zhí)行Statement更新語(yǔ)句 public void executeUpdate(String sql) throws SQLException { if (stmt != null)
58、{ stmt.executeUpdate(sql); } } //執(zhí)行PreaparedStatement更新語(yǔ)句 public int executeUpdate() throws SQLException { if (prepstmt != null) { return prepstmt.executeUpdate(); } else { return
59、0; } },//添加更新語(yǔ)句塊 public void addBatch(String sql) throws SQLException { prepstmt.addBatch(sql); }//執(zhí)行更新語(yǔ)句塊 public int[] executeBatch() throws SQLException { return prepstmt.executeBatch(); },//關(guān)閉連接
60、 public void closeDB() { try { if (stmt != null) { stmt.close(); stmt = null; } if (prepstmt != null) { prepstmt.close(); prepstmt = null; } conn.close(
61、); conn = null; } catch (Exception e) { System.err.println("commJDBC關(guān)閉數(shù)據(jù)庫(kù)錯(cuò)誤:"); } }},4。應(yīng)用示例public class insertLawsinfo { private final static String sql = "insert into lawsinfo
62、 (title,content,issuetime,tag) values (?,?,?,?)"; private String msg = ""; private String title = null; private String content = null; private String tag = null; private Date issuetime = new jav
63、a.sql.Date(new java.util.Date().getTime()); public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public
64、 void setContent(String content) { this.content = content; } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; },public String insertLawsinfo() {……commJDBC myconn
65、 = new commJDBC(sql); try { myconn.setBytes(1, this.title.getBytes("GBK")); myconn.setBytes(2, this.content.getBytes("GBK")); myconn.setDate(3, this.issuetime); m
66、yconn.setString(4, tag); int uprnd = myconn.executeUpdate(); …… } catch (Exception e) {…… } finally { myconn.closeDB(); this.title = null; this.content = null; }
67、 } …… }},第四章 服務(wù)器的安裝和配置4.1 Apache和tomcat的整合使用,1。Apache簡(jiǎn)介 Apache是一個(gè)歷史悠久并且功能十分強(qiáng)大的WEB服務(wù)器??焖?、可靠、可通過(guò)簡(jiǎn)單的API擴(kuò)展,完全免費(fèi),完全源代碼開(kāi)放。如果你需要?jiǎng)?chuàng)建一個(gè)每天有數(shù)百萬(wàn)人訪問(wèn)的Web服務(wù)器,Apache可能是最佳選擇。Apache 起初由 Illinois 大學(xué) Urbana-Champaign 的國(guó)家高級(jí)計(jì)算程序中心
68、開(kāi)發(fā)。此后,Apache 被開(kāi)放源代碼團(tuán)體的成員不斷的發(fā)展和加強(qiáng)。Apache 服務(wù)器擁有牢靠可信的美譽(yù),已用在超過(guò)半數(shù)的因特網(wǎng)站中-特別是幾乎所有最熱門(mén)和訪問(wèn)量最大的網(wǎng)站。開(kāi)始,Apache只是Netscape網(wǎng)頁(yè)服務(wù)器(現(xiàn)在是Sun ONE)之外的開(kāi)放源代碼選擇。漸漸的,它開(kāi)始在功能和速度超越其他的基于Unix的HTTP服務(wù)器。1996年4月以來(lái),Apache一直是Internet上最流行的HTTP服務(wù)器: 1999年5月它在 57
69、% 的網(wǎng)頁(yè)服務(wù)器上運(yùn)行;到了2005年7月這個(gè)比例上升到了69%。http://httpd.apache.org/download.cgi,2。Apache和tomcat的整合,修改Apache的 conf/httpd.conf文件:步驟一:#LoadModule proxy_module modules/mod_proxy.so# LoadModule proxy_ajp_module modules/mod_pro
70、xy_ajp.so# LoadModule proxy_balancer_module modules/mod_proxy_balancer.so去掉前面的#號(hào)。,步驟二:# Virtual hosts#Include conf/extra/httpd-vhosts.conf 去掉第二句前面的#號(hào)。步驟三:ProxyPass / ajp://127.0.0.1:8009/
71、ProxyPassReverse / ajp://127.0.0.1:8009/ 加在conf/httpd.conf文件末尾在conf/extra/httpd-vhosts.conf文件中,添加 :,ServerAdmin huchg@yahoo.com.cnProxyPass / ajp://localhost:8009/ProxyPassReverse / ajp://localhost:8009/S
72、erverName localhostServerAlias 127.0.0.1,4.2 Tomcat的安全域,1。角色和用戶 在conf\tomcat-users.xml中加入角色和用戶2。設(shè)置安全約束在web.xml中加入。 在中指定受保護(hù)的Web資源以及所有可以訪問(wèn)該Web資源的角色,2。設(shè)置安全約束, 測(cè)試網(wǎng)站 Protected Area /admin/* /*.jsp
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第11章高級(jí)輸出與輸入-read
- 第二章高級(jí)語(yǔ)言及其語(yǔ)法描述-read
- 畢業(yè)論文——鐵富高級(jí)中學(xué)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文——鐵富高級(jí)中學(xué)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)
- 高級(jí)財(cái)務(wù)會(huì)計(jì)-網(wǎng)站防火墻
- 前端工程師-高級(jí)web網(wǎng)站前端開(kāi)發(fā)設(shè)計(jì)注意因素
- 提綱-read
- read and circle
- 網(wǎng)站設(shè)計(jì)—電子購(gòu)物網(wǎng)站設(shè)計(jì)
- read.txt
- READ ME!!!.txt
- READ ME!!!.txt
- READ ME!!!.txt
- 的國(guó)旗。-read
- READ ME!!!.txt
- read.txt
- READ ME!!!.txt
- read.txt
- 《java語(yǔ)言程序設(shè)計(jì)》復(fù)習(xí)講義-read
評(píng)論
0/150
提交評(píng)論