第一篇:學習JSP和servlet程序設計心得體會
學習JSP程序設計和Servlet心得體會
JSP這門課是教我們怎么做網站的,學習了許多枯燥的語言知識,總算是可以自己做網站了 記得在第一節課上,我就跟學生們講了“為什么學JSP?”,“JSP學什么?”,“學JSP有什么用?”還有“如何學JSP?”從我對這些問題的講解中同學們確實體會到了學習JSP的重要性和如何去學。在課上還了解了這門課程我要講述的主要內容以及需要具備的相關知識。
學生們在JAVA上是最欠缺的,之前也只是跟著老師學,自己在課下并沒有下很多功夫。
在前階段的學習中都感覺很輕松,因為我講到的HTML學生已經在上個學期的差不多了,所以做一個靜態的頁面還是沒有多大問題,但是后來學到后面要用到JAVA做一些動態的網頁就感覺越來越吃力了,之前學過的很多JAVA知識也有很多都已經忘了。所以在第一次上課后完成任務時就用到了比較長的時間,最后才能勉強做到符合我的要求。還出現了很多小錯誤,有了第一次視頻教學的教訓,我在后面趕緊復習之前學習的JAVA知識,但是畢竟過了挺久了,有些東西需要重頭再教,而且我也是以做項目的形式來完成教學,項目里包括了JSP呀Servlet等技術,所以學生們大概花了一個多月才將這學期JSP和Servlet課程中所掌握的一些關于JAVA的東西搞清楚。后來也就順利的完成了我們要做的項目。
我想簡單的談談我在JSP程序設計這門課中都學到了什么,JSP的全稱是 Java Server Pages,它是一種動態網頁技術。我們需要配置的壞境有JDK,Tomcat,還要用到Dreamweaver。最開始我們學習了HTML這種文本標記語言,用HTML可以做一些靜態網站,看的出在學生第一次用HTML做出第一個網頁時的興奮,都覺得好神奇!后面我們學到做動態網站,其中就涉及到JSP內部對象及內部對象所對應的一些方法。再就是JSP與數據庫的聯系,怎么樣引用數據庫。通過以上所學到的知識我們可以基本上上做出一個比較實用的小網站,比如一個班級網站,在上面可以上傳下載一些學習資料,以及存儲班上同學的一些基本信息,給班上同學提供一個交流平臺等等。
那 在以后的學習中學生該如何學呢?從這一次JSP程序設計課程的學習中我總結了以后學習的方法。首先要把基礎打牢,不要只是注重技術開發,對于一些基本概念也要掌握;其次要多一些專業方面的書,多了解我們專業動向;再者就是要多上機實踐,學到什么知識點要趕緊把它應用到實踐當中;最后就是要加強自己團隊協作的能力,爭取在以后的學習中能夠跟同學通過一些項目實戰提高自己團隊協作能力。
第二篇:Servlet和JSP經驗總結
Servlet和JSP經驗總結
這里介紹Servlet和JSP經驗總結,包括在servlet的init()方法中緩存數據、禁止Servlet和JSP自動重載、將頁面輸出進行壓縮和正確地確定javabean的生命周期等七種實用的方法。
在servlet的init()方法中緩存數據
當應用服務器初始化Servlet和JSP實例之后,為客戶端請求提供服務之前,它會調用這個servlet的init()方法。在一個servlet的生命周期中,init()方法只會被調用一次。通過在init()方法中緩存一些靜態的數據或完成一些只需要執行一次的、耗時的操作,就可大大地提高系統性能。
例如,通過在init()方法中建立一個JDBC連接池是一個最佳例子,假設我們是用jdbc2.0的DataSource接口來取得數據庫連接,在通常的情況下,我們需要通過JNDI來取得具體的數據源。我們可以想象在一個具體的應用中,如果每次SQL請求都要執行一次JNDI查詢的話,那系統性能將會急劇下降。解決方法是如下代碼,它通過緩存DataSource,使得下一次SQL調用時仍然可以繼續利用它
1.2.3.publicclassControllerServletextendsHttpServlet{privatejavax.sql.DataSourcetestDS=null;publicvoidinit(ServletConfigconfig)throwsServletExcep
tion{
4.super.init(config);
5.Contextctx=null;
6.try{ctx=newInitialContext();
7.testDS=(javax.sql.DataSource)ctx.lookup(“jdbc/testDS”);
8.}
9.catch(NamingExceptionne){
10.ne.printStackTrace();
11.}
12.catch(Exceptione){
13.e.printStackTrace();
14.}
15.}
16.publicjavax.sql.DataSourcegetTestDS(){
17.returntestDS;
18.}
19.......20.}
禁止Servlet和JSP自動重載(auto-reloading)
Servlet和JSP提供了一個實用的技術,即自動重載技術,它為開發人員提供了一個好的開發環境,當你改變servlet和JSP頁面后而不必重啟應用服務器。然而,這種技術在產品運行階段對系統的資源是一個極大的損耗,因為它會給JSP引擎的類裝載器(classloader)帶來極大的負擔。因此關閉自動重載功能對系統性能的提升是一個極大的幫助。
不要濫用HttpSession
在很多應用中,我們的程序需要保持客戶端的狀態,以便頁面之間可以相互聯系。但不幸的是由于HTTP具有天生無狀態性,從而無法保存客戶端的狀態。因此一般的應用服務器都提供了session來保存客戶的狀態。在JSP應用服務器中,是通過HttpSession對像來實現session的功能的,但在方便的同時,它也給系統帶來了不小的負擔。因為每當你獲得或更新session時,系統者要對它進行費時的序列化操作。你可以通過對 HttpSession的以下幾種處理方式來提升系統的性能:
如果沒有必要,就應該關閉JSP頁面中對HttpSession的缺省設置:如果你沒有明確指定的話,每個JSP頁面都會缺省地創建一個HttpSession。如果你的JSP中不需要使用session的話,那可以通過如下的JSP頁面指示符來禁止它:
21.<%@ page session=“false”%>
不要在HttpSession中存放大的數據對像:如果你在HttpSession中存放大的數據對像的話,每當對它進行讀寫時,應用服務器都將對其進行序列化,從而增加了系統的額外負擔。你在HttpSession中存放的數據對像越大,那系統的性能就下降得越快。
當你不需要HttpSession時,盡快地釋放它:當你不再需要session時,你可以通過調用HttpSession.invalidate()方法來釋放它。
盡量將session的超時時間設得短一點:在JSP應用服務器中,有一個缺省的session的超時時間。當客戶在這個時間之后沒有進行任何操作的話,系統會將相關的session自動從內存中釋放。超時時間設得越大,系統的性能就會越低,因此最好的方法就是盡量使得它的值保持在一個較低的水平。
將頁面輸出進行壓縮
壓縮是解決數據冗余的一個好的方法,特別是在網絡帶寬不夠發達的今天。有的瀏覽器支持gzip(GNU zip)進行來對HTML文件進行壓縮,這種方法可以戲劇性地減少HTML文件的下載時間。因此,如果你將servlet或JSP頁面生成的HTML頁面進行壓縮的話,那用戶就會覺得頁面瀏覽速度會非常快。但不幸的是,不是所有的瀏覽器都支持gzip壓縮,但你可以通過在你的程序中檢查客戶的瀏覽器是否支持它。下面就是關于這種方法實現的一個代碼片段:
22.publicvoiddoGet(HttpServletRequestrequest,HttpServlet
Responseresponse)
throwsIOException,ServletException{
23.OutputStreamout=null
24.Stringencoding=request.getHeader(“Accept-Encoding”);
25.if(encoding!=null&&encoding.indexOf(“gzip”)!=-1){
26.request.setHeader(“Content-Encoding”,“gzip”);
27.out=newGZIPOutputStream(request.getOutputStream());
28.}
29.elseif(encoding!=null&&encoding.indexOf(“compress”)!=
-1){
30.request.setHeader(“Content-Encoding”,“compress”);
31.32.33.34.35.36.37.out=newZIPOutputStream(request.getOutputStream());}else{out=request.getOutputStream();}......}
使用線程池
應用服務器缺省地為每個不同的客戶端請求創建一個線程進行處理,并為它們分派service()方法,當service()方法調用完成后,與之相應的線程也隨之撤消。由于創建和撤消線程會耗費一定的系統資源,這種缺省模式降低了系統的性能。但所幸的是我們可以通過創建一個線程池來改變這種狀況。另外,我們還要為這個線程池設置一個最小線程數和一個最大線程數。在應用服務器啟動時,它會創建數量等于最小線程數的一個線程池,當客戶有請求時,相應地從池從取出一個線程來進行處理,當處理完成后,再將線程重新放入到池中。如果池中的線程不夠地話,系統會自動地增加池中線程的數量,但總量不能超過最大線程數。通過使用線程池,當客戶端請求急劇增加時,系統的負載就會呈現的平滑的上升曲線,從而提高的系統的可伸縮性。
選擇正確的頁面包含機制
在JSP中有兩種方法可以用來包含另一個頁面
1、使用include指示符(< %@ includee file=”test.jsp” %>)。
2、使用jsp指示符(< jsp:includee
page=”test.jsp” flush=”true”/>)。在實際中我發現,如果使用第一種方法的話,可以使得系統性能更高。
正確地確定javabean的生命周期
Servlet和JSP一個強大的地方就是對javabean的支持。通過在JSP頁面中使用<jsp:useBean>標簽,可以將javabean直接插入到一個JSP頁面中。它的使用方法如下:
38.<
jsp:useBean id=“name” scope=“page|request|session|application”
class= “package.className” type=“typeName”>
39.</jsp:useBean>
其中scope屬性指出了這個bean的生命周期。缺省的生命周期為page。如果你沒有正確地選擇bean的生命周期的話,它將影響系統的性能。
舉例來說,如果你只想在一次請求中使用某個bean,但你卻將這個bean的生命周期設置成了session,那當這次請求結束后,這個bean將仍然保留在內存中,除非session超時或用戶關閉瀏覽器。這樣會耗費一定的內存,并無謂的增加了JVM垃圾收集器的工作量。因此為bean設置正確的生命周期,并在bean的使命結束后盡快地清理它們,會使用系統性能有一個提高。
需要注意:
1.在字符串連接操作中盡量不使用“+”操作符:在java編程中,我們常常使用“+”操作符來將幾個字符串連接起來,但你或許從來沒有想到過它居然會對系統性能造成影響吧?由于字符串是常量,因此JVM會產生一些臨時的對像。你使用的“+”越多,生成的臨時對像就越多,這樣也會給系統性能帶來一些影響。解決的方法是用StringBuffer對像來代替“+”操作符。
2.避免使用System.out.println()方法:由于System.out.println()是一種同步調用,即在調用它時,磁盤I/O操作必須等待它的完成,因此我們要盡量避免對它的調用。但我們在調試程序時它又是一個必不可少的方便工具,為了解決這個矛盾,我建議你最好使用Log4j工具,它既可以方便調試,而不會產生System.out.println()這樣的方法。
3.ServletOutputStream 與 PrintWriter的權衡:使用PrintWriter可能會帶來一些小的開銷,因為它將所有的原始輸出都轉換為字符流來輸出,因此如果使用它來作為頁面輸出的話,系統要負擔一個轉換過程。而使用ServletOutputStream作為頁面輸出的話就不存在一個問題,但它是以二進制進行輸出的。
第三篇:Tomcat開發jsp與servlet總結
一,添加虛擬目錄: 1.在tomcat安裝目錄下webapps建一目錄,例如:myweb.2.在此目錄下建目錄WEB-INF(全部為大寫),3.在WEB-INF目錄下建立文件web.xml,在此文件中添加如下內容:
第四篇:JSP程序設計習題解答
習題一
1.運行startup.bat啟動Tomcat服務器的好處是什么?
答:確保Tomcat服務器使用的是Java_home環境變量設置的JDK。
2.請在C:下建立一個名字為book的目錄,并將該目錄設置成一個Web服務目錄,然后編寫一個簡單的JSP頁面,保存到該目錄中,讓用戶使用虛擬目錄red訪問該JSP頁面。答:屬于操作題,解答略。
3.怎樣訪問Web服務目錄子目錄中的JSP頁面?
答:Web服務目錄的下的目錄稱為該Web服務目錄下的相對Web服務目錄。瀏覽器的地址欄中鍵入:http://IP:8080/Web目錄名字/子目錄名字/JSP頁面。
4.如果想修改Tomcat服務器的端口號,應當修改哪個文件?能否將端口號修改為80。答:修改Tomcat服務器安裝目錄中conf文件夾中的主配置文件:server.xml,只要沒有其他應用程序正在占用80,就可以將端口號設置為80。
習題二
1.“<%!”和“%>”之間聲明的變量與“<%”和“%>”之間聲明的變量有何不同? 答:“<%!”和“%>”之間聲明的變量在整個JSP頁面內都有效,稱為JSP頁面的成員變量,成員變量的有效范圍與標記符號<%!、%>所在的位置無關。所有用戶共享JSP頁面的成員變量,因此任何一個用戶對JSP頁面成員變量操作的結果,都會影響到其他用戶。
“<%”和“%>”之間聲明的變量稱為局部變量,局部變量在JSP頁面后繼的所有程序片以及表達式部分內都有效。運行在不同線程中的Java程序片的局部變量互不干擾,即一個用戶改變Java程序片中的局部變量的值不會影響其他用戶的Java程序片中的局部變量。當一個線程將Java程序片執行完畢,運行在該線程中的Java程序片的局部變量釋放所占的內存。
2.如果有兩個用戶訪問一個JSP頁面,該頁面中的Java程序片將被執行幾次? 答:兩次。
3.是否允許一個JSP頁面同時含有如下兩條page指令: <%@ page contentType=“text/html;charset=GB2312” %> <%@ page contentType=“application/msword” %> 是否允許JSP頁面同時含有如下兩條指令: <%@ page import=“java.util.*” %> <%@ page import=“java.sql.*” %> 答:第一個問題的答案是不允許;第二個問題的答案是允許。
4.假設有兩個用戶訪問下列JSP頁面hello.jsp,請問第一個訪問和第二個訪問hello.jsp頁面的用戶所看到的頁面的效果有何不同?
Hello.jsp <%@ page contentType=“text/html;charset=GB2312” %> <%@ page isThreadSafe=“false” %>
<%!int sum=10;void add(int m){
sum=sum+m;} %> <% int n=600;
add(n);%>
<%=sum%>
第五篇:《JSP程序設計》職業技能訓練大綱
曲靖師范學院計算機科學與工程學院 《JSP程序設計》學生職業技能訓練大綱
(2013年5月 編寫)
為了促進我院學生盡快熟悉和掌握JSP語言編程的基本知識和技能,特制定本職業技能訓練大綱。大綱適合我院計算機科學與技術、信息管理與信息系統和軟件工程三個專業的全體學生。通過JSP語言程序設計的職業技能訓練,使學生掌握JSP運行環境的搭建、JSP頁面元素、JSP內置對象、JSP數據庫操作、文件操作、Web基礎知識、JSP與JavaBean、Servlet編程技術等知識點。
由于《JSP程序設計》職業技能訓練是在學習《JSP程序設計》課程時開展,故訓練內容可參考這門課程的教學大綱要求。為了促進職業技能的訓練效果,將設置3個評測項目,每個項目包含訓練目標、訓練內容、訓練方法要求、訓練實施安排及考核、參考資料等部分,學生根據要求熟練掌握各知識點。最后考核則選擇其中某個項目,并參考其要求實施。
項目一:JSP學生成績管理程序
一、訓練目標
通過本項目的訓練,使學生掌握JSP語言編寫一個小型學生成績程序的方法。該程序包括成績錄入、修改成績、查詢成績、刪除程序功能。通過該技能的訓練,除了熟悉JSP語言語法外,為今后的動態網站的開發奠定良好的基礎。
二、訓練內容
1.JSP開發環境的搭建 2.數據表的創建 3.數據查詢的方法 4.數據添加的方法 5.數據更新的方法
三、訓練方法要求
使用MyEclipse工具編制實現訓練目標及內容要求的JSP代碼程序,要求學生獨立完成程序代碼的編制與調試。
四、訓練實施安排及考核
1.時間安排: 與課程《JSP程序設計》同一學期開設,課余時間,短學期。2.訓練方式: 除課堂上必要的訓練外,課余對學生開放相關實驗室進行操作訓練。
3.考核形式: 開卷考核。學生使用MyEclipse編寫JSP程序,實現訓練目標及內容所要求功能,并對代碼增加詳細注釋。最后提交可訪問的成績管理動態網站,并隨機選取部分學生參與答辯,據此給出成績評定。
五、說明
1.需要安裝有MyEclipse的計算機,可使用學院機房的計算機,也可以使用學生自己的個人電腦完成實驗項目。
2.參考資料
[1] 范蕓,范慧霞.JSP動態網站開發基礎與上機指導[M].北京:清華大學出版社, 2010.[2] 王小軍,田中雨,劉躍軍.JSP動態網站開發[M].北京:清華大學出版社, 2008.[3] 劉俊亮,王清華.JSP Web開發學習實錄[M].北京:清華大學出版社, 2011 [4] 王永茂.JSP程序設計——用JSP開發Web應用[M].北京:清華大學出版社, 2012.[5] 向學哲.JSP程序設計教程[M].北京:人民郵電出版社, 2009.[6]清華大學計算機與信息管理中心.Servlet和JSP編程基礎[M].北京:中國鐵道出版社, 2010.項目二:簡單的購物程序
一、訓練目標
通過本項目的訓練,使學生掌握JSP語言編寫一個網上購物程序。該程序包括用戶注冊、登陸、購物車、商品列表分頁顯示功能。通過該技能的訓練,除了熟悉JSP語言語法外,為今后的動態網站的開發奠定良好的基礎。
二、訓練內容
1.JSP頁面的創建 2.JavaBean類的創建
3.JavaBean組建對數據庫的訪問
三、訓練方法要求
使用MyEclipse工具編制實現訓練目標及內容要求的JSP代碼程序,要求學生獨立完成程序代碼的編制與調試。
四、訓練實施安排及考核
1.時間安排: 與課程《JSP程序設計》同一學期開設,課余時間,短學期。2.訓練方式: 除課堂上必要的訓練外,課余對學生開放相關實驗室進行操作訓練。
3.考核形式: 開卷考核。學生使用MyEclipse編寫JSP程序,實現訓練目標及內容所要求功能,并對代碼增加詳細注釋。最后提交可訪問的簡單購物動態網站,并隨機選取部分學生參與答辯,據此給出成績
評定。
五、說明
1.需要安裝有MyEclipse的計算機,可使用學院機房的計算機,也可以使用學生自己的個人電腦完成實驗項目。
2.參考資料
[1] 范蕓,范慧霞.JSP動態網站開發基礎與上機指導[M].北京:清華大學出版社, 2010.[2] 王小軍,田中雨,劉躍軍.JSP動態網站開發[M].北京:清華大學出版社, 2008.[3] 劉俊亮,王清華.JSP Web開發學習實錄[M].北京:清華大學出版社, 2011 [4] 王永茂.JSP程序設計——用JSP開發Web應用[M].北京:清華大學出版社, 2012.[5] 向學哲.JSP程序設計教程[M].北京:人民郵電出版社, 2009.[6]清華大學計算機與信息管理中心.Servlet和JSP編程基礎[M].北京:中國鐵道出版社, 2010.項目三:JSP留言板程序設計
一、訓練目標
通過本項目的訓練,使學生掌握JSP語言編寫一個綜合實訓程序的方法。要求單擊“提交留言”按鈕后,要將輸入留言人輸入的信息保存到數據庫中。通過該技能的訓練,除了熟悉JSP語言語法外,為今后的動態網站的開發奠定良好的基礎。
二、訓練內容
1.JSP頁面的創建
2.JavaBean類、Servlet類的創建 3.Servlet程序Web.xml文件的配置 4.JSP+JavaBean+Servlet程序的運行
三、訓練方法要求
使用JSP+JavaBean+Servlet開發模式編制實現訓練目標及內容要求的JSP代碼程序,要求學生獨立完成程序代碼的編制與調試。
四、訓練實施安排及考核
1.時間安排: 與課程《JSP程序設計》同一學期開設,課余時間,短學期。2.訓練方式: 除課堂上必要的訓練外,課余對學生開放相關實驗室進行操作訓練。
3.考核形式: 開卷考核。學生使用MyEclipse編寫JSP程序,實現訓練目標及內容所要求功能,并對代碼增加詳細注釋。最后提交可訪問的留言板動態網站,并隨機選取部分學生參與答辯,據此給出成績評定。
五、說明
1.需要安裝有MyEclipse的計算機,可使用學院機房的計算機,也可以使用學生自己的個人電腦完成實驗項目。
2.參考資料
[1] 范蕓,范慧霞.JSP動態網站開發基礎與上機指導[M].北京:清華大學出版社, 2010.[2] 王小軍,田中雨,劉躍軍.JSP動態網站開發[M].北京:清華大學出版社, 2008.[3] 劉俊亮,王清華.JSP Web開發學習實錄[M].北京:清華大學出版社, 2011 [4] 王永茂.JSP程序設計——用JSP開發Web應用[M].北京:清華大學出版社, 2012.[5] 向學哲.JSP程序設計教程[M].北京:人民郵電出版社, 2009.[6]清華大學計算機與信息管理中心.Servlet和JSP編程基礎[M].北京:中國鐵道出版社, 2010.