第一篇:JSP實習報告
JSp實習報告
實習內容:JSp
實習目的:通過JSp的學習,可以獨立的編寫留言板、上傳規(guī)格、考試系統(tǒng)、連接SQLserver數據庫、以及怎么樣配置運行jsp服務器
實習要求:懂得什么是JSp,運行原理,它的基本語法,內置對象,服務端的輸出緩沖區(qū),文件流的讀取,jsp數據庫如:jdbc、odbc、mysql、oracle等,jsp與javaBeans,javaServlet等
JSp是JavaServerpages的縮寫,是由Sun公司倡導、許多公司參與,于1999年推出的一種動態(tài)網頁技術標準。JSp是一個建立安全的、夸平臺的先進動態(tài)網頁技術。
一、JSp工作原理
在一個JSp文件第一次被請求時,JSp引擎把該JSp文件轉換成為一個servlet。而這個引擎本身也是一個servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。JSp引擎先把該JSp文件轉換成一個Java源文件,在轉換時如果發(fā)現jsp文件有任何語法錯誤,轉換過程將中斷,并向服務端和客戶端輸出出錯信息;如果轉換成功,JSp引擎用javac把該Java源文件編譯成相應的class文件。然后創(chuàng)建一個該SERVLET的實例,該SERVLET的jspInit()方法被執(zhí)行,jspInit()方法在servlet的生命周期中只被執(zhí)行一次。然后jspService()方法被調用來處理客戶端的請求。對每一個請求,JSp引擎創(chuàng)建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSp文件,則JSp引擎會創(chuàng)建多個線程。每個客戶端請求對應一個線程。以多線程方式執(zhí)行可大大降低對系統(tǒng)的資源需求,提高系統(tǒng)的并發(fā)量及響應時間.但應該注意多線程的編程限制,由于該servlet始終駐于內存,所以響應是非常快的。如果.jsp文件被修改了,服務器將根據設置決定是否對該文件重新編譯,如果需要重新編譯,則將編譯結果取代內存中的servlet,并繼續(xù)上述處理過程。雖然JSp效率很高,但在第一次調用時由于需要轉換和編譯而有一些輕微的延遲。此外,如果在任何時候如果由于系統(tǒng)資源不足的原因,JSp引擎將以某種不確定的方式將servlet從內存中移去。當這種情況發(fā)生時jspDestroy()方法首先被調用,然后servlet實例便被標記加入“垃圾收集”處理。jspInit()及jspDestory()格式如下:可在jspInit()中進行一些初始化工作,如建立與數據庫的連接,或建立網絡連接,從配置文件中取一些參數等,在jspDestory()中釋放相應的資源。
<%!
publicvoidjspInit()
{
System.out.println(“jspinit”);
}
%>
<%!
publicvoidjspDestory()
{
System.out.println(“jspDestory”);
}
%>
二、服務端的輸出緩沖區(qū)
缺省情況下:服務端要輸出到客戶端的內容,不直接寫到客戶端,而是先寫到一個輸出緩沖區(qū)中.只有在下面三中情況下,才會把該緩沖區(qū)的內容輸出到客戶端上:
該JSp網頁已完成信息的輸出
輸出緩沖區(qū)已滿
JSp中調用了out.flush()或response.flushbuffer()
輸出緩沖區(qū)的大小可以用:或response.setBufferSize()設置,如下:
設置輸出緩沖區(qū)的大小為1KB。或response.setBufferSize(1);
設置輸出緩沖區(qū)的大小為0,即不緩沖。或response.setBufferSize(0);
用response.getBufferSize()或out.getBufferSize()可取的輸出緩沖區(qū)的大小,單位為字節(jié).用response.isCommitted()可檢查看服務端是否已將數據輸出到客戶端.如果返回值是TRUE則已將數據輸出到客戶端,是FALSE則還沒有.三、服務端輸出重定向
有以下3種方法可以做到輸出重定向:
RESpONSE.SETREDERECT(“URL”)該方法通過修改HTTp協(xié)議的HEADER部分,對瀏覽器下達重定向指令的,使瀏覽器顯示重定向網頁的內容.response.sendRedirect(“http://localhost:7001/index.html”);
下面的方法也能改變HTTpHEADER屬性,它的原理和1是一樣的.<%
response.setStatus(HttpServletResponse.SC_MOVED_pERMANENTLY);
StringnewLocn=“/index.html”;
response.setHeader(“Location”,newLocn);
%>
采用
(1)
<%@pagebuffer=“1kb”%>
<%
longi=0;
for(i=0;i<10;i++)
{
out.println(“@@@@@@@@@@@@@@@@@”);
}
%>
(2)
<%@pagebuffer=“1kb”%>
<%
longi=0;
for(i=0;i<600;i++)
{
out.println(“@@@@@@@@@@@@@@@@@”);
}
%>
說明:
1.方法(1),(2)可以使用變量表示重定向的地址;方法(3)不能使用變量表示重定向的地址。
Stringadd=“./index.html”;
無法重定向到index.html中去
Stringadd=http://localhost:7001/index.html
response.sendRedirect(add);
可以重定向到http://localhost:7001/index.html中去。
2.采用方法(1),(2)request中的變量(通過request.setAttribute()保存到request中的值)不能在新的頁面中采用,采用方法(3)能.綜上,我們應該采用(1),(2)重定向比較好.四、JSp基本配置:
第一步:下載j2sdk和tomcat:到sun官方站點(http://java.sun.com/j2se/1.4.2/download.html)下載j2sdk,注意下載版本為WindowsOfflineInstallation的SDK,同時最好下載J2SE1.4.2Documentation,然后到tomcat官方站點(http://;charset=gb2312“ %>
<% Class.forName(”com.microsoft.jdbc.sqlserver.SQLServerDriver“).newInstance();
String url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs“;
//pubs 為你的數據庫的String user=”sa“;
String password=”admin“;Statementstmt;
Connection conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement(ResultSet.TYpE_SCROLL_SENSITIVE,ResultSet.CONCUR_UpDATABLE);
String sql=”select job_id,job_desc from jobs“;
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){ %>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<% } %>
<% out.print(”數據庫操作成功,恭喜你“);%>
<% rs.close();
stmt.close();
conn.close();
%>
將上面的JSp代碼保存為sql_test.jsp,放在/Root目錄下。
Servlet/JSp配置詳解
首先下載驅動程序:
然后就是安裝JDK,我是把它裝到從c:JDK目錄下面。
然后設置CLASSpATH的問題了:
正如操作系統(tǒng)利用pATH來搜索可執(zhí)行程序一樣,Java運行環(huán)境也會遍歷CLASSpATH來查找類,即便是HelloWorld這樣簡單的程序,JVM也會遍歷CLASSpATH定義的每一個路徑,直到找到相應的文件為止。
相信大家用的系統(tǒng)不是2k就是Xp,然后就應當如下設置path:
我的電腦->屬性->高級->環(huán)境變量
然后在環(huán)境變量的path后面追加:C:JDKbin;.;C:JDKlib
也可以這樣配置:C:JDKbin;.;C:JDKlibdt.jar;C:JDKlibtools.jar
★記住:環(huán)境變量中的.切記不能少,它表示當前路徑,如果少掉出現的錯誤等會就說!
dt.jar是關于運行環(huán)境的類庫,tools.jar是關于一些工具的類庫
如果沒有配置:C:JDKbin,則會出現“javac?不是內部或外部命令,也不是可運行的程序或批處理文件。”這樣的錯誤。
下面我們就寫一個示例程序:
打開Editplus,新建一個Java文件,請照著如下輸入,要一字不漏,并且分清大小寫:
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println(”Hello,World!“);
}
}
然后把這個文件保存(ctrl+s)到HelloWorld.java,Java是分大小寫的,所以大小寫一定要分清,是HelloWorld.java不是helloworld.java或者其他。
運行:開始->運行->cmd
在控制臺中把目錄切換到當前目錄:
javacHelloWorld.java
javaHelloWorld
你就會在控制臺上看見輸出的Hello,World!
javac是編譯命令,它把HelloWorld.java編譯成HelloWorld.class
java就是解釋命令,JVM把HelloWorld.class解釋執(zhí)行.在這個時候:
1、如果出現Exceptioninthread”main“java.lang.NoClassDefFoundError:HelloWorld
那就是你在環(huán)境變量中沒有加上那個.(dot)
2、如果出現Exceptioninthread”main“java.lang.NoSuchMethodError:main
或者HelloWorld.java:1:publicclasshelloworldmustbedefinedinafilecalled
”HelloWorld.java“.那就是你沒有分清大小寫的寫入這個HelloWorld,或者保存得時候沒有保存為HelloWorld.java。這個名字一定要跟publicclass的名字一樣
對于環(huán)境變量的問題就說到這里,下面我先所說怎么在Editplus里面編譯和運行,在Tools->參數設置->配置用戶工具
1.添加工具(添加應用程序)
菜單文字:CompileJavaprogram
程序:C:JDKbinjavac.exe
參數:文件名稱
初始目錄:文件目錄
2.添加工具(添加應用程序)
菜單文字:RunJavaprogram
程序:C:JDKbinjava.exe
參數:文件名稱(不含擴展名)
初始目錄:文件目錄
工具組名稱可以隨便添,比如DebugJavaprogram。
然后在Tools的下拉菜單中,你就會看見CompileJavaprogram以及RunJavaprogram這兩個選項,以后你就可以利用ctrl+1編譯和ctrl+2運行程序了
下面我們討論Servlet的運行環(huán)境:
要運行Servlet,則需要JSp/Servletcontainer,我用Tomcat。
http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip
然后把這個壓縮包解壓到:
C:Tomcat
然后再配置環(huán)境變量;添加三個系統(tǒng)變量:
JAVA_HOME:C:JDK
TOMCAT_HOME:C:Tomcat
CLASSpATH:%JAVA_HOME%lib;%TOMCAT_HOME%lib
Tomcat的環(huán)境變量就配置完畢了,下面檢驗Tomcat是否能夠運行:
在控制臺中轉到C:Tomcatbin這個目錄,運行startup,然后回出現一個窗口,連跳一大串東西,最后表示Server已經運行。
在瀏覽器中輸入http://localhost:8080,出現歡迎界面,則表示Tomcat沒問題了。然后和上面一樣,寫入你的第一個Servlet。
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassHelloWorldextendsHttpServlet
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException
{
response.setContentType(”text/html“);
printWriterout=response.getWriter();
out.println(”<html><head><title>“);
out.println(”ThisismyfirstServlet“);
out.println(”</title></head><body>“);
out.println(”<h1>Hello,World!</h1>“);
out.println(”</body></html>");
}
}
然后照樣用javacHelloWorld.java來編譯這個文件,如果出現無法importjavax.servlet.*
那么就是應該把C:Tomcatcommonlib里面的servlet.jar文件拷貝到C:JDKjrelibext中,再次編譯,就沒有問題了!
然后在Tomcat目錄里面的C:TomcatwebappsROOT里面按如下的文件結構:
ROOTindex.html
ROOTwelcom.jsp
ROOTWEB-INFlibMyServlet.jar(如果你的servlet的.class打成了.jar文件,則放在lib下面)
ROOTWEB-INFclassesHelloWorld.class(把上面生成的HelloWorld.class文件放在這個里面)
然后在瀏覽器中輸入http://localhost:8080/servlet/HelloWorld,于是Server眾望所歸的報錯了:Error404--NotFound
出不來,然后繼續(xù)弄下面的Servlet必須使用C:TomcatwebappsROOTWEB-INF這個目錄下面的web.xml文件進行注冊,用Ep打開這個web.xml文件,在里面加入:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/helloworld</url-pattern>
</servlet-mapping>
這樣的結構
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
表示指定包含的servlet類。而以下的結構:
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>
表示指定HelloServlet應當映射到哪一種URL模式。
在修改web.xml完畢過后,重新啟動Server,然后再輸入http://localhost:8080/servlet/HelloWorld,那么偌大一個Hello,World!等著你呢。
六、JSp和Servlet的區(qū)別:
SUN首先發(fā)展出SERVLET,其功能比較強勁,體系設計也很先進,只是,它輸出HTML語句還是采用了老的CGI方式,是一句一句輸出,所以,編寫和修改HTML非常不方便。后來SUN推出了類似于ASp的JSp,把JAVA代碼嵌套到HTML語句中,這樣,就大大簡化和方便了網頁的設計和修改。ASp,pHp,JSp都是嵌套型的SCRIpT語言。一個分布式系統(tǒng)應分為三層:表示層,業(yè)務邏輯層,數據存取層,在J2EE體系結構中,SERVLET用來寫業(yè)務邏輯層是很強大的,但是對于寫表示層就很不方便。JSp則主要是為了方便寫表示層而設計的。ENTITYBEAN實現數據存取層,SESSIONBEAN實現業(yè)務邏輯層。如果是簡單的應用系統(tǒng),可采用JSp+BEANS的結構進行設計,JSp中應該僅僅存放與表示層有關的東西,也就是說,只放輸出HTML網頁的部份。而所有的數據計算,數據分析,數據庫聯(lián)結處理,統(tǒng)統(tǒng)是屬于業(yè)務邏輯層,應該放在JAVABEANS中。通過JSp調用JAVABEANS,實現兩層的整合。實際上,微軟的DNA技術,簡單說,就是ASp+COM/DCOM技術。與JSp+BEANS完全類似,所有的表示層由ASp完成,所有的業(yè)務邏輯由COM/DCOM完成。為什么要采用這些組件技術呢?因為單純的ASp/JSp語言是非常低效率執(zhí)行的,如果出現大量用戶點擊,純SCRIpT語言很快就到達了他的功能上限,而組件技術就能大幅度提高功能上限,加快執(zhí)行速度。另外一方面,純SCRIpT語言將表示層和業(yè)務邏輯層混在一起,造成修改不方便,并且代碼不能重復利用,采用組件技術就只改組件就可以了。對于復雜的應用,應該采用ENTITYBEAN實現數據存取層,SESSIONBEAN實現業(yè)務邏輯層,用JSp來調用SESSIONBEAN,由SESSIONBEAN調用ENTITYBEAN。即采用JSp+EJB來構建一個復雜的分布式系統(tǒng)。它比JSp+BEAN具有更高的吞吐量,可靠性,安全性。綜上所述,對簡單應用,可采用JSp+BAEN,對復雜的應用系統(tǒng),應采用JSp+EJB,SERVLET變的無足輕重。用JSp完全可替代它。
實習心得:
JSp是一門新技術,他基于JavaServlet以及整個java體系的Web開發(fā)技術。從網上得知Java的中文問題歷史悠久,連綿不絕,至今也沒有完全解決,但是上有政策下有對策,我們總是有辦法搞定它的。跟Java相關的中文問題主要有兩類,一類是編程的問題,涉及到I/O,內碼轉換等。第二類是Java運行環(huán)境的配置,涉及字體,屬性配置等。覺得很有必要給自己寫個備忘錄之類的。
學習了JSp,感觸很深,這一技術是需要有一定基礎、而且動手能力強的學科。書上也強調一點是:要想真正地掌握JSp技術,必須有較好的java語言基礎,以及HTML語言方面的知識。想想的確對啊。
通過一周的實習JSp,這個實習,使我初步掌握和了解了JSp的基本運行原理、各個對象的結構和功能、怎樣連接數據庫、能自己手動寫code開發(fā)一些小網頁。并且,自己能夠組建一臺JSp服務器,而且還了解了安裝過程中,所要注意的事項。對于一些簡單的小問題,能夠自己動手排除。
我個人認為,這次實習對于我是非常有意義的,對我個人的影響比較大,對我的成長更有莫大的幫助。
第二篇:JSP實習報告
引言
JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準,是一種建立安全的、跨平臺的、優(yōu)秀的動態(tài)網頁技術。由于其具有強大的可移植性和可擴展性,所以應用越來越廣泛。實習目的和意義
通過JSP的上機實習,理論聯(lián)系實際,鞏固所學的知識,進一步理解和掌握JSP的原理和基本語法,加深對相關內容的理解;提高處理實際問題的能力,培養(yǎng)實踐能力,接觸課堂以外的實踐知識,拓寬知識面,為最后一學年課程學習打好基礎;了解設計專題的主要內容,為自己能順利與社會環(huán)境接軌做好準備。實習要求
理解和掌握JSP的運行原理和基本語法,通過JSP的上機實習,可以獨立安裝、配置JSP的開發(fā)和運行環(huán)境,掌握Eclipse等工具軟件的使用方法,鞏固所學知識,具體實現以下要求:
1.開發(fā)一個JSP頁面,通過JSP輸出“保護環(huán)境、愛護地球”。
2.應用eclipse創(chuàng)建一個WEB項目,并在該項目的根目錄下創(chuàng)建index.jsp和welcome.jsp文件,要求實現如下功能:當訪問index文件后,會自動轉發(fā)到welcome.jsp頁面。3.應用JSP腳本標識實現一個簡單的計數器。
4.編寫一個簡單的留言薄,寫入留言提交后顯示留言內容。5.編寫一個實現頁面計數的計數器。
6.實現一個簡單的登錄程序,要求應用JavaBean來接收用戶輸入的用戶名和密碼,然后判斷輸入的用戶名是否為“admin”,密碼是否為“000”,若是,則轉發(fā)到success.jsp頁面,顯示“歡迎登錄”提示信息,否則轉發(fā)到fault.jsp頁面中,顯示“登錄失敗”等提示信息。4 實習準備過程
4.1 軟件準備
① j2sdk1.6.0: 到 http://java.sun.com/j2se/ ② Tomcat6.0: 到 http://tomcat.apache.org/download ③ myeclipse6.6: 到 http://>
實現了從index頁面自動轉到Welcome 頁面!
第三篇:jsp實習報告
新疆農業(yè)職業(yè)技術學院
《Java程序設計》 教學實習報告
部 門:軟件技術學院 專 業(yè):計算機網絡技術 班 級:2007高職網絡 姓 名:張 博 指導教師:李 欣
《JAVA程序設計》教學實習報告
一、實習時間:
2009 年 5 月 14日至 2009 年 5月 20 日
二、實習地點:第2微機室
三、實習目的
1、掌握搭建Java開發(fā)環(huán)境的方法;
2、通過團隊合作,提高溝通、交流能力,培養(yǎng)團隊合作精神;
3、嚴格按照Java語言編寫規(guī)約編寫代碼,養(yǎng)成遵守規(guī)約的習慣,增強編碼質量的意識;
4、教師面向對象程序實例的剖析,以及實際操作,理解面向對象編程的理念,并熟練編寫程序;
5、掌握Java程序的調試方法;
四、實習內容及方法
實訓一
相關環(huán)境搭建
實驗目的
1、熟悉JDK開發(fā)環(huán)境。
2、熟悉JCreator編輯器的使用。實驗內容
1、JDK開發(fā)環(huán)境及安裝
第一步:下載。從學校網站上找:ftp://10.1.1.16 選擇編程軟件中Java。第二步:安裝jdk。
第三步:安裝好后,選擇“開始”→“運行?”命令,在打開的“運行”窗口中輸入“cmd”命令并“確定”。在打開的命令行窗口中,分別執(zhí)行java和javac命令。如下圖所表示
第四步:查看操作系統(tǒng)環(huán)境變量。選擇“我的電腦”的“屬性”,選擇“高級”中的“環(huán)境變量”。
第五步:設置環(huán)境變量及path環(huán)境變量的作用和設置。
編輯源文件
import java.io.*;public class HelloWorld1{ public static void main(String arg[]){ System.out.println(“Hello World!”);}} 輸出結果 實訓分析總結
什么是Java虛擬機?它的作用是什么?
Java虛擬機是一個想象中的機器,在實際的計算機上通過軟件模擬來實現。Java虛擬機有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應的指令系統(tǒng)。
作用:運行JAVA applet 小程序,沒了它,好多網站的功能無法使用,因為現在很多服務是通過它實現的。JAVA不編譯,他的字節(jié)碼要靠虛擬機才能運行。
實訓二 Java基礎-控制語句使用實例
實訓目的:
1、掌握Java語言中的三種基本的流程控制
2、理解數組的概念,數組的定義方法,數組的應用。實訓內容:
1、隨機輸入3個數,要求按降序排列。
import java.util.*;導入包 public class bidaxiao{ public static void main(String[] args){ int length = 3;int [] ints = new int[length];Scanner san = new Scanner(System.in);for(int i = 0;i < length;i ++){ System.out.print(“請輸入第” +(i + 1)+ “個數: ”);ints[i] = san.nextInt();} Arrays.sort(ints);System.out.println(“這” +length +“個數從大到小的排列順序為: ”);for(int i = length-1;i >= 0;i--){ System.out.print(ints[i] + “ ”);} } } 輸出結果:
2、編寫程序,用循環(huán)語句列出1到10的階乘值。
public class A{ public static void main(String args[]){
int i;long A=1;
for(i=1;i<=10;i++){ A*=i;
System.out.println(“!”+A);}}} 輸出結果:
3、編寫程序顯示一年的月份。月份要保存在數組中。
public class year{ public static void main(String args[]){ int[] a=new int[12];for(int i =1;i<=12;i++){
System.out.println(“一年的第”+i+“個月是”+i+“月”);} } } 輸出結果:
4、定義一個二維數組,從鍵盤輸入數據,要求求出最大值元素、最小值元素。
public class MaxArray { public static void main(String[] args){ int a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}};int max=0;int min=0;for(int i=0;i 實訓分析總結: 1、三種循環(huán)語句的數據流程圖如何執(zhí)行? do-while 流程圖 for 流程圖 while 流程圖 2、三種循環(huán)語句的語法格式。while循環(huán)語句的語法格式: [initialization] while(loop-condition){ body;[iteration;]} for 循環(huán)語句的語法格式: for([initialization];[loop-condition];[iteration;]){ body;} 3、什么是數組?數組的定義形式? 數組是由相同的數據類型數據按順序組成的數據集合。數組的定義形式: 一維數組:type arrayName[ ] 或者 type[ ] arrayName 二維數組:type arrayName[ ][ ] 或者 type[ ][ ] arrayName 實訓三 類的封裝、繼承與多態(tài)性 實訓目的: 1、理解類、封裝、繼承多態(tài)的概念和類的對象的創(chuàng)建和使用。 2、理解方法的概念,方法的調用,參數的傳遞。 3、熟練掌握類的繼承。實訓內容: 1、編寫程序,給定圓的半徑和高度,計算圓柱體的體積,利用引用對象方法的形式表示。 import java.io.*;class tj{ private double r;private double h;public tj(double r,double h){ if(r>0)this.r=r;if(h>0)this.h=h;} public boolean setr(double r){ if(r>0){ this.r=r;return true;} else return false;} public double getr(){ return r;} public boolean seth(double h){ if(h>0){ return true;} else return false;} public double geth(){ return h;} public double tj(){ return 3.14*r*r*h;} public static void main(String args[])throws IOException{ BufferedReaderin=new BufferedReader(new InputStreamReader(System.in));System.out.println(“請輸入圓的半徑:”);double r=Double.parseDouble(in.readLine());System.out.println(“請輸入圓柱的高:”);double h=Double.parseDouble(in.readLine());tj v=new tj(r,h);System.out.println(“圓柱的半徑為:”+v.getr()+“t高為:”+v.geth());System.out.println(“圓柱的體積為:”+v.tj());} } 2、試設計一個Calculator類,并完成下列的各方法的程序設計: 定義add(a,b)方法,用來計算兩數之和。定義mul(a,b)方法,用來計算兩數的乘積。定義sub(a,b)方法,用來計算兩數之差。定義div(a,b)方法,用來計算a/b。 import java.io.*;class Calculator{ private double a;private double b;public Calculator(double a,double b){ if(a>0)this.a=a;if(b>0)this.b=b;} public boolean seta(double a){ if(a>0){ this.a=a;return true;} else return false;} public double geta(){ return a;} public boolean setb(double b){ if(b>0){return true;} else return false;} public double getb(){ return b;} public double add(){ return a+b;} public double mul(){ return a*b;} public double sub(){ return a-b;} public double div(){ return a/b;} public static void main(String args[])throws IOException{ BufferedReaderin=newBufferedReader(new InputStreamReader(System.in));System.out.println(“請輸入a的值:”);double a=Double.parseDouble(in.readLine());System.out.println(“請輸入b的值:”);double b=Double.parseDouble(in.readLine());Calculator c=new Calculator(a,b);//System.out.println(“"+c.geta()+”t“+c.getb());System.out.println(”a,b的和:“+c.add());System.out.println(”a,b的積:“+c.mul());System.out.println(”a,b的差:“+c.sub());System.out.println(”a,b的商:“+c.div());} } 輸出結果 3、請逐步完成下列的程序設計: (a)、設計一個父類Caaa,內含public兩個整數數據成員。 (b)、設計一個子類Cbbb,繼承自Caaa類,并加入set_num()方法,可用來賦值從父類繼承而來的成員num1,num2,和show()方法,用來顯示num1與num2的值。 (c)、在Caaa類里加入一個沒有參數的構造函數Caaa(),它可用來把num1和num2賦值初值為1。 (d)、在類里加入另一個有參數的構造函數Caaa(int a,int b),它可用來把num1賦值為a,把num2賦值為b。 (e)、在main()方法里編寫程序代碼,測試(c)和(d)的結果。不帶參數 class Caaa{ public int num1;public int num2;public Caaa(){ } public void setnum1(int num1){this.num1=num1;} public int getnum1(){return num1;} public void setnum2(int num2){this.num2=num2;} public int getnum2(){return num2;} public void printOtherInfo(){ System.out.print(”num1=“+num1);System.out.print(”tnum2=“+num2);System.out.println();}} class Cbbb extends Caaa{ } class Cbbbtest{ public static void main(String agrs[]){ Cbbb b=new Cbbb();b.setnum1(1);b.setnum2(1);b.printOtherInfo();}} 輸出結果 帶參數的 class Caaa { public int num1;public int num2;} class Cbbb extends Caaa { void set_num(int a,int b){ num1=a;num2=b;} void show(){ System.out.println(”num1=“+num1+”,“+”num2=“+num2);} } class app { public static void main(String args[]){ Cbbb bb=new Cbbb();bb.set_num(5,10);bb.show();} } 輸出結果 4、設計一個類,內含一個方法可以判別輸入的值為奇數還是偶數,如果為奇數就輸出“此數為奇數”,反之若為偶數就輸出“此數為偶數”。 import java.io.*;public class jo{private int a;public jo(int a){if(a>0)this.a=a;} public boolean seta(int a){ if(a>0){this.a=a;return true;} else return false;} public double geta(){ return a;} public static void main(String args[])throws IOException{ BufferedReaderin=new BufferedReader(new InputStreamReader(System.in));System.out.println(”請輸入a的值:“);double a=Double.parseDouble(in.readLine());if(a%2==1){ System.out.println(”此數為奇數“);} else{ System.out.println(”此數為偶數“);} }} 輸出結果 實訓分析總結: 1、什么是類?請寫出定義類的格式。 2、如何創(chuàng)建一個類和該類的對象? 1、什么是類?寫出定義類的格式,如何創(chuàng)建類的對象? 類是組成java程序的基本元素,一個java程序由若干個類組成。Java中使用關鍵字class聲明一個類,大括號用來指出類體的開始和結束。創(chuàng)建類:class Student{ 創(chuàng)建類的對象: //類的成員變量聲明 Student studeng=new Student //類的方法聲明} 2、類的成員變量和方法? 類的成員變量用來描述對象的狀態(tài),也稱為屬性、數據或域。類的方法是用來描述對象的行為。 3、什么是繼承?什么是封裝? 像大客車和小轎車與車類之間存在的關系為繼承 封裝是指信息與實現細節(jié)的隱藏。 實訓四 簡單計算器模擬 實訓目的: 1、熟練掌握圖形用戶界面的設計和各組件的應用 2、能夠處理一般事件的響應 實訓內容: 1、設計一個窗口,內含一個按鈕,當按下此按鈕的時候,窗口的顏色會從原來的白色變成其他你所設置的顏色。 import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Panel;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class button extends MouseAdapter { Frame f = new Frame();Panel P1 = new Panel();Button b1 = new Button(”綠色“);public static void main(String args[]){ button ct = new button();ct.init();} public void init(){ f.setLayout(new FlowLayout());f.add(b1);P1.setBackground(Color.red);P1.setVisible(true);b1.addMouseListener(this);f.setSize(200, 150);f.setVisible(true);} public void mousePressed(MouseEvent e2){ if(e2.getSource()== b1){ f.setBackground(Color.green);} } } 2、設計一個包含有文本框和標簽的窗口,在文本框中輸入一段文字,按回車后,將該段文字內容加入到標簽中顯示。 import java.awt.GridLayout;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class zhuanhuan { public static void main(String[] args){ JFrame jf=new JFrame();JPanel jp=new JPanel();final JLabel jl=new JLabel();final JTextField jtf=new JTextField();jf.add(jp);jp.setLayout(new GridLayout(2,1));jp.add(jl);jp.add(jtf);jtf.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_ENTER){ jl.setText(jtf.getText());} } });jf.setSize(144,144);jf.setVisible(true);} } 輸出結果 3、學生注冊系統(tǒng) import java.util.*;//導入工具包 import java.awt.*;//導入抽象窗口工具包 import java.awt.event.*;//導入軟件包 import javax.swing.*;//導入輕量級的工具包 import java.io.*;//導入軟件包 class 學生 extends Panel { class ShowWin extends JFrame implements ActionListener{ LinkedList students_list=null;JTextField 學號文本框=new JTextField(), 姓名文本框=new JTextField(), 年齡文本框=new JTextField(), //創(chuàng)建新實例 班級文本框=new JTextField(), 刪除文本框=new JTextField();JButton b_add=new JButton(”添加學生“), b_del=new JButton(”刪除學生“), b_show=new JButton(”顯示學生名單“);JTextArea 顯示區(qū)=new JTextArea();students_list=new LinkedList();JPanel save=new JPanel();save.setLayout(new GridLayout(5,2));save.add(new Label(”輸入學號:“));save.add(學號文本框);//添加文本內容 save.add(new Label(”點擊添加:“));save.add(b_add);JPanel del=new JPanel();del.setLayout(new GridLayout(2,2));//刪除文本內容 del.add(new Label(”輸入刪除的學號:“));del.add(刪除文本框);del.add(new Label(”點擊刪除:“));del.add(b_del);JPanel show=new JPanel();show.setLayout(new BorderLayout());show.add(pane,BorderLayout.CENTER);show.add(b_show,BorderLayout.SOUTH);//顯示添加的商品清單 JSplitPane split_one,split_two;split_one=new JSplitPane(JSplitPane.VERTICAL_SPLIT,save,del);split_two=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,split_one,show);con.add(split_two,BorderLayout.CENTER);b_show.addActionListener(this);} public void actionPerformed(ActionEvent e){ if(e.getSource()==b_add){ String xuehao=null;String xingming=null;String nianling=null;String banji=null;banji=班級文本框.getText();學生 students=new 學生(xuehao,xingming,nianling,banji);students_list.add(students);try{ FileOutputStream file=new FileOutputStream(”students.txt“);ObjectOutputStream out=new ObjectOutputStream(file);out.writeObject(students_list);out.close();} catch(IOException event){} } else if(e.getSource()==b_del){ String xuehao=刪除文本框.getText();try{ FileInputStream come_in=new FileInputStream(”students.txt“);ObjectInputStream in=new ObjectInputStream(come_in);students_list=(LinkedList)in.readObject();in.close();} catch(ClassNotFoundException event){} catch(IOException event){} for(int i=0;i win.setVisible(true);//設置屬性(trun 顯示,false隱藏) win.addWindowListener(new WindowAdapter()//繼承WindowAdapter,然后又覆蓋 實訓分析總結: 1、布局管理器,它有什么用? JAVA是與平臺無關的,就是應用程序的界面的大小,位置與硬件沒關系,與平臺無關就是說你不能通過setSize()這樣的方法去設置窗體中組件的大小。由此問題產生了。 當一個窗體中有文本控件,又有標簽,還有按鈕,這時你怎么控制它們在窗體中的排列順序和位置呢,JAVA定義了布局管理器來處理這個問題 2、說明文本區(qū)和文本框的主要不同點。 文本區(qū):是用戶輸入、編輯、格式化、查看文本數據的區(qū)域。單擊鼠標左鍵定位插入點。 文本框就是可以向其中輸入文字的框,比如百度。 實訓五 擴展—Java和JSP編寫要點練習 實訓目的: 1、理解JSP 運行環(huán)境要求。 2、掌握JSP建立與測試開發(fā)環(huán)境的方法 3、了解j2ee 實訓內容: 1、鏈接到指定的email地址 在網站中,你經常會看到“聯(lián)系我們”的鏈接,一點擊這個鏈接,就會觸發(fā)你的郵件客戶端,比如Outlook Express,然后顯示一個新建mail的窗口。用可以實現這樣的功能。 2、給定系統(tǒng)的自我學習后臺分析: 計算機圖書信息后臺維護系統(tǒng)分析 點擊刪除 點擊修改 它的路徑 路徑 http://localhost:8080/aaa/book/index.jsp http://localhost:8080/aaa/book/RequestAdd.jsp 實訓分析總結: 1、JSP文件的建立過程? 第一步 安裝JDK 第二步 安裝Tomcat 第三步 安裝Eclipse 第四步 安裝MyEclipse 第五步 破解MyEclipse 第六步 指定Eclipse+MyEclipse的JRE 和Tomcat 服務器 第七步 新建個項目來測試一下Eclipse+MyEclipse開發(fā)環(huán)境是否搭建成功 2、JSP的特點。 1.將內容的生成和顯示進行分離 2.強調可重用的組件 3.采用標識簡化頁面開發(fā) 五、結論 在為期一個星期的實習中,讓我收獲不少,并且發(fā)現自己存在的不足。通過這次實習我受益匪淺,知道JAVA的功能和使用方法以及編譯技術,以前只知道玩手機中的小游戲,并不知道是用JAVA做出來的,現在實習也使自己掌握了JAVA技術,也通過實習使我了解到我更多的不足,在做題時沒有一點點的思路,注意力不是很集中,在每項實訓中不是很認真的聽講,在調試程序的時候,發(fā)現不了問題的根本原因,一個簡單的程序少了那小小的一個標點都不行,發(fā)現了自己粗心大意的一面。在以后會多加努力的。 六、致謝 通過這次實習,我深感自己的不足,我對知識的渴望遠遠超過這些,我將努力學習知識,取長補短,為自己注入新鮮的血液。相信自己會在以后的實習工作中更加努力。 這次非常感謝老師在實習中對我們的指導,我們有什么不懂的問題都是老師悉心教導,不耐其煩的告知我們,和我們一起實習,在這里向老師說聲,您辛苦了。也非常感謝同學在學習上給予我的幫助。感謝學校為我們安排的這次實習。 Jsp實習作業(yè) 一.實現兩個數求和 1.實現過程描述: 寫一個界面在這個界面中我們輸入要計算的兩個數據,如果輸入錯誤的話就是用清零來清除原來的數據然后在重新輸入,然后通過求和按鈕將數據提交到指定的界面也就是servlet中通過request.getParameter(“name”)來取得輸入的數據然后進行類型的轉化在進行求和最后將所求的和輸出到客戶端,這時是一個標準的html文檔,再通過瀏覽器將標準的html文檔轉化為一個可視化界面,也就是我們所看到的界面。 2.訪問過程: 上面寫的額這個也就是一個小的項目,所以我們想知道上面的提交的過程是怎么一回事,怎么把輸入的數據傳到servlet中,在WEB-INF 中我們要建立一個class文件夾lib文件夾和web.xml文件,其中classes文件夾中存放的是servlet被javac編譯器編譯后的.class文件在使用的過程中tomcat會調用這個文件的,而web.xml 中我們進行配置就是將訪問的路勁進行配置,通過這個配置找到前面的class文件并把提交的數據獲取進行相應的操作在輸出: 也就是執(zhí)行瀏覽器中輸入的地址:localhost:8080/first/test1.jsp; 3.實現代碼: (1)數據輸入提交代碼: <%@page language =“java” contentType=“text/html;chatset=GBK”%> 電子商務系統(tǒng)規(guī)劃與管理 實訓報告 題 目: 新聞發(fā)布系統(tǒng)網站 系 別: 管理系 專 業(yè): 電子商務 學生姓名: 學 號: 指導教師: 2013年 月 日 新聞發(fā)布系統(tǒng) 2 目錄 1.系統(tǒng)開發(fā)和運行環(huán)境..........................................3 2.系統(tǒng)設計....................................................3 2.1 總體設計................................................3 2.2 詳細設計................................................4 2.2.1 結構設計..........................................4 3.1 具體功能解釋..........................................6 3.1.1 增加發(fā)布新聞功能....................................6 3.1.2 編輯發(fā)布新聞功能....................................7 3.1.3 刪除發(fā)布新聞功能....................................7 3.1.4 管理發(fā)布新聞功能....................................7 3.1.5 管理分類新聞功能....................................7 3.1.6 后臺顯示效果框架....................................7 3.1.7 登陸驗證功能........................................7 3.1.8 登陸數據處理功能....................................7 3.1.9登陸頁面............................................7 3.1.10 退出登陸頁面功能...................................7 3.1.11 前臺首頁...........................................8 3.1.12注冊頁面...........................................8 3.網站整體效果................................................8 4.核心代碼....................................................12 4.1.1 main.jsp............................................12 4.1.2 manage.jsp.........................................13 4.1.3 news_list.jsp......................................14 4.1.4 login.jsp...........................................16 4.1.5 addNews.jsp.........................................17 4.1.6 register.jsp........................................18 4.1.7 news_view.jsp.......................................21 5.系統(tǒng)維護...................................................22 6.歸納總結....................................................22 6.1.1 開發(fā)經驗...........................................22 6.1.2 設計不足之處.......................................22 6.1.3 心得體會...........................................2 3新聞發(fā)布系統(tǒng) 3 1.系統(tǒng)開發(fā)和運行環(huán)境 (1)J2SDK:Java2的軟件開發(fā)工具,是Java應用程序的基礎。JSP是基于Java技術的,所以配置JSP環(huán)境之前必須要安裝J2SDK。 (2)Tomcat服務器:Apache組織開發(fā)的一種JSP引擎,本身具有Web服務器的功能,可以作為獨立的Web服務器來使用。但是,在作為Web服務器方面,Tomcat處理靜態(tài)HTML頁面時不如Apache迅速,也沒有Apache健壯,所以我們一般將Tomcat與Apache配合使用,讓Apache對網站的靜態(tài)頁面請求提供服務,而Tomcat作為專用的JSP引擎,提供JSP解析,以得到更好的性能。并且Tomcat本身就是Apache的一個子項目,所以Tomcat對Apache提供了強有力的支持。對于初學者來說,Tomcat是一個很不錯的選擇。 (3)MyEclipse:是Eclipse的插件,也是一款非常優(yōu)秀的J2EE集成開發(fā)環(huán)境(IDE),用于構建集成Web和應用程序,支持代碼編寫、配置、測試以及除錯。2.系統(tǒng)設計 2.1 總體設計 系統(tǒng)設計是整個軟件項目開發(fā)的核心階段,經過對開發(fā)軟件的項目要求進行仔細分析,明確目標,嚴格按照要求進行項目開發(fā),設計出系統(tǒng)的總體結構,進行模塊劃分,并確定個模塊之間相互關系以及每個模塊所應該完成的任務。 本次采用模塊化設計方法,即按照設計原則把程序分為多個模塊,再由各個模塊細分成更小的任務來實現整個程序的功能。在細分模塊的過程中,模塊要求相對獨立又相互關聯(lián),并且使非設計者容易理解。以下是模塊化層次結構圖,從上到下層層進行細分描述: 主頁查看注冊登錄新聞分類管理 新聞發(fā)布系統(tǒng) 新聞發(fā)布管理 4 2.2 詳細設計 2.2.1 結構設計 1)連接SQL數據庫設計 2)網站功能整體設計 3)頁面整體設計 3-1 新聞的管理 新聞發(fā)布系統(tǒng) 5 3-2 主頁,登陸及注冊頁面 4)數據庫設計 一共2個表,分別存放用戶,新聞發(fā)布的信息。 4-1 wys數據庫 新聞發(fā)布系統(tǒng) 6 4-2表 4-3 用戶表 4-4 新聞表 3.1 具體功能解釋 3.1.1 增加發(fā)布新聞功能 通過表單來實現發(fā)布新聞的標題,內容和分類的提交,并且在同一個頁面進行數據處理,添加至數據庫。 新聞發(fā)布系統(tǒng) 7 聲明一個class類,通過getlist來獲得分類列表,判斷是否提交了表單,通過request獲取表單標題,內容,分類。聲明一個webInfo的類,把從request獲取的內容傳入到此類中,聲明一個web的類,執(zhí)行此類中insert方法進行保存。 3.1.2 編輯發(fā)布新聞功能 通過表單來實現發(fā)布新聞的標題,內容和分類的提交,并且在同一個頁面進行數據處理,添加至數據庫。 聲明一個class類,通過getlist來獲得分類列表,判斷是否提交了表單,通過request獲取表單標題,內容,分類。聲明一個webInfo的類,把從request獲取的內容傳入到此類中,聲明一個web的類,執(zhí)行此類中updata方法進行保存。獲取當前內容的分類。 3.1.3 刪除發(fā)布新聞功能 通過request來獲取id,聲明一個名為cls的web類,定義result為0,執(zhí)行刪除操作并返回值到result。若result為0刪除失敗,否則成功。 3.1.4 管理發(fā)布新聞功能 聲明一個web類和class類,通過request語句來獲取查詢內容,實現內容查找。遍歷查詢出所有內容,通過action傳遞參數id,實現編輯刪除功能。 3.1.5 后臺顯示效果框架 聲明一個 web類,通過getlist來獲得分類列表,判斷是否提交了表單,通過request獲取表單標題,內容,分類。聲明一個webInfo的類,把從request獲取的內容傳入到此類中,聲明一個web的類,執(zhí)行此類中insert方法進行保存。 3.1.6 登陸驗證功能 建立cookie,驗證是否為admin,以及頁面跳轉。 3.1.7登陸數據處理功能 聲明類user,查找賬戶密碼是否在數據庫中,若是則創(chuàng)建session,實現頁面跳轉。否則提示用戶名及密碼錯誤。 3.1.8登陸頁面 驗證賬戶、密碼是否為空,若為空則提示。 3.1.9退出登陸頁面功能 清除session,并執(zhí)行頁面跳轉。 3.1.10 導航新聞頁面 聲明類名為w,wif,cls的類。通過傳入參數ID,獲取內容并顯示。通過request語句來獲取查詢內容,實現內容查找。遍歷查詢出所有內容,通過action傳遞參數id,實現編輯刪除功能。 新聞發(fā)布系統(tǒng) 8 3.1.11 前臺首頁 聲明一個web類和,通過request語句來獲取查詢內容,實現內容查找。遍歷查詢出所有內容,通過action傳遞參數id,實現查看新聞內容功能。 3.1.12注冊頁面 通過request獲取賬號、密碼、確認密碼和電子郵件。聲明類user和userInfo,判斷action是否為save,是則進行兩次密碼輸入的判斷,否則提示密碼不一致重新輸入。若兩次密碼輸入一致,則對密碼進行MD5加密,進行數據保存。并將結果返回result。若不為0則,注冊成功,否則提示失敗。 3.網站整體效果 1-6 發(fā)布新聞頁面 1-7 發(fā)布成功的效果圖 新聞發(fā)布系統(tǒng) 9 1-8新聞編輯頁面 1-9 新聞編輯成功的效果圖 新聞發(fā)布系統(tǒng) 10 1-10 發(fā)布新聞刪除的效果圖 1-11前臺頁面效果圖 1-12 注冊頁面 新聞發(fā)布系統(tǒng) 11 1-15 注冊信息提醒圖 1-16 注冊成功頁面 1-17瀏覽新聞稿效果圖 新聞發(fā)布系統(tǒng) 12 4.核心代碼 4.1.1 main.jsp <%@ page language=“java” contentType=“text/html;charset=utf-8” %> <%@page import=“java.util.List”%> <%@page import=“iit.jsp.beans.News”%> 第四篇:JSP實習作業(yè)
第五篇:JSP實訓報告
bgcolor=“#284B78”>新聞發(fā)布系統(tǒng) | ||||
歡迎, xxx用戶 |用戶登錄 |管理員登錄 | ||||
|