導航:首頁 > 源碼編譯 > jsp編譯數字塔

jsp編譯數字塔

發布時間:2022-05-29 17:36:28

1. jsp中的contentType與pageEncoding的區別和作用

pageEncoding是jsp文件本身的編碼
contentType的charset是指伺服器發送給客戶端時的內容編碼
關於JSP頁面中的pageEncoding和contentType兩種屬性的區別:
pageEncoding是jsp文件本身的編碼
contentType的charset是指伺服器發送給客戶端時的內容編碼
JSP要經過兩次的「編碼」,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網頁, 用的是contentType。
第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA源碼(即.java),如果pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。
第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,經過這個階段的結果全部是UTF-8的encoding的java源碼。
JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8 encoding的二進制碼(即.class),這是JVM對常數字串在二進制碼(java encoding)內表達的規范。
第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的參數contentType就發揮了功效
contentType的設定.
pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了(TOMCAT4.1.27是如此). 但這不是絕對的, 這要看各自JSPC的處理方式. 而pageEncoding不等於contentType, 更有利亞洲區的文字 CJKV系JSP網頁的開發和展示, (例pageEncoding=GB2312 不等於 contentType=utf-8)。
jsp文件不像.java,.java在被編譯器讀入的時候默認採用的是操作系統所設定的locale所對應的編碼,比如中國大陸就是GBK,台灣就是BIG5或者MS950。而一般我們不管是在記事本還是在ue中寫代碼,如果沒有經過特別轉碼的話,寫出來的都是本地編碼格式的內容。所以編譯器採用的方法剛好可以讓虛擬機得到正確的資料。
但是jsp文件不是這樣,它沒有這個默認轉碼過程,但是指定了pageEncoding就可以實現正確轉碼了。
舉個例子:

<%@ page contentType="text/html;charset=utf-8" %>

大都會列印出亂碼,因為我輸入的「你好嗎」是gbk的,但是伺服器是否正確抓到「你好嗎」不得而知。
但是如果更改為

<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>

這樣就伺服器一定會是正確抓到「你好嗎」了。

2. 哪位可以提供JSP的網站計數器的源代碼一定要沒有錯誤可以運行的喲!!不勝感激!!

jsp計數器程序段:
//test.jsp文件
<%@ page contentType="text/html;charset=gb2312"%>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>計數器演示程序</TITLE>
</HEAD>
<BODY>
<!--創建並調用bean(counter)-->
<jsp:useBean id="counter" class="counter" scope="request">
</jsp:useBean>
<%
//調用counter對象的ReadFile方法來讀取文件lyfcount.txt中的計數
String cont=counter.ReadFile("/lyfcount.txt");
//調用counter對象的ReadFile方法來將計數器加一後寫入到文件lyfcount.txt中
counter.WriteFile("/lyfcount.txt",cont);%>
您是第<font color="red"><%=cont%></font>位訪問者
</BODY>
</HTML>

//counter.java 讀寫文件的一個bean
import java.io.*;

public class counter extends Object {
private String currentRecord = null;//保存文本的變數
private BufferedReader file; //BufferedReader對象,用於讀取文件數據
private String path;//文件完整路徑名
public counter() {
}
//ReadFile方法用來讀取文件filePath中的數據,並返回這個數據
public String ReadFile(String filePath) throws FileNotFoundException
{
path = filePath;
//創建新的BufferedReader對象
file = new BufferedReader(new FileReader(path));
String returnStr =null;
try
{
//讀取一行數據並保存到currentRecord變數中
currentRecord = file.readLine();
}
catch (IOException e)
{//錯誤處理
System.out.println("讀取數據錯誤.");
}
if (currentRecord == null)
//如果文件為空
returnStr = "沒有任何記錄";
else
{//文件不為空
returnStr =currentRecord;
}
//返回讀取文件的數據
return returnStr;
}
//ReadFile方法用來將數據counter+1後寫入到文本文件filePath中
//以實現計數增長的功能
public void WriteFile(String filePath,String counter) throws

FileNotFoundException
{
path = filePath;
//將counter轉換為int類型並加一
int Writestr = Integer.parseInt(counter)+1;
try {
//創建PrintWriter對象,用於寫入數據到文件中
PrintWriter pw = new PrintWriter(new FileOutputStream(filePath));
//用文本格式列印整數Writestr
pw.println(Writestr);
//清除PrintWriter對象
pw.close();
} catch(IOException e) {
//錯誤處理
System.out.println("寫入文件錯誤"+e.getMessage());
}
}

}
到這里,程序寫完了,將counter.java編譯為counter.class,同樣放在對應的class目錄下,在根目錄下建立一個lyfcount.txt文件,文件內容就一個數字0,直接在瀏覽器中敲入地址就可以看到計數器了,刷新瀏覽器會看到不斷變幻的數字。

(如果運行時候提示找不到文件,請將上面test.jsp中的readfile那一句注釋後運行一次則lyfcount.txt文件自動建立,然後就可以正常運行。)

3. jsp相關!~~~~~~~~~~~

ISO/IEC 8859-1,又稱Latin-1或「西歐語言」,是國際標准化組織內ISO/IEC 8859的第一個8位字元集。它以ASCII為基礎,在空置的0xA0-0xFF的范圍內,加入192個字母及符號,藉以供使用變音符號的拉丁字母語言使用。

此字元集支援部分於歐洲使用的語言,包括阿爾巴尼亞語、巴斯克語、布列塔尼語、加泰羅尼亞語、丹麥語、荷蘭語、法羅語、弗里西語、加利西亞語、德語、格陵蘭語、冰島語、愛爾蘭蓋爾語、義大利語、拉丁語、盧森堡語、挪威語、葡萄牙語、里托羅曼斯語、蘇格蘭蓋爾語、西班牙語及瑞典語。

英語雖然沒有重音字母,但仍會標明為ISO 8859-1編碼。除此之外,歐洲以外的部分語言,如南非荷蘭語、斯瓦希里語、印尼語及馬來語、菲律賓他加洛語等也可使用ISO 8859-1編碼。

法語及芬蘭語本來也使用ISO 8859-1來表示。但因它沒有法語使用的 œ、Œ、 Ÿ 三個字母及芬蘭語使用的 Š、š、Ž、ž ,故於1998年被ISO/IEC 8859-15所取代。(ISO 8859-15同時加入了歐元符號)

JAVA字元編碼:Unicode,ISO-8859,GBK,UTF-8編碼

1:編碼方式

階段一 ASCII 計算機剛開始只支持英語,其它語言不能夠在計算機上存儲和顯示。 英文 DOS

階段二 ANSI編碼
(本地化) 為使計算機支持更多語言,通常使用 0x80~0xFF 范圍的 2 個位元組來表示 1 個字元。比如:漢字 '中' 在中文操作系統中,使用 [0xD6,0xD0] 這兩個位元組存儲。
不同的國家和地區制定了不同的標准,由此產生了 GB2312, BIG5, JIS 等各自的編碼標准。這些使用 2 個位元組來代表一個字元的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文系統下,ANSI 編碼代表 GB2312 編碼,在日文操作系統下,ANSI 編碼代表 JIS 編碼。
不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬於兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。 中文 DOS,中文 Windows 95/98,日文 Windows 95/98

階段三 UNICODE
(國際化) 為了使國際間信息交流更加方便,國際組織制定了 UNICODE 字元集,為各種語言中的每一個字元設定了統一並且唯一的數字編號,以滿足跨語言、跨平台進行文本轉換、處理的要求。

C++和java中數據類型及編碼 類型或操作
C++
Java

字元 wchar_t char

位元組 char byte
ANSI 字元串 char[] byte[]
UNICODE 字元串 wchar_t[] String
位元組串→字元串 mbstowcs(), MultiByteToWideChar() string = new String(bytes, "encoding")
字元串→位元組串 wcstombs(), WideCharToMultiByte() bytes = string.getBytes("encoding")

從上邊知道

Java 中的 char 代表一個「UNICODE 字元(寬位元組字元)」,而 C++ 中的 char 代表一個位元組;

Java 中字元串類 String 中的內容是 UNICODE 字元串;

二:JSP及Java程序中的傳送編碼方式

JSP頁中加如下語句

<%@ page language="java" pageEncoding="GBK"%>

其中pageEncoding是當jsp轉譯成_jsp.java時使用的encoding.預設是iso8859_1.

當_jsp.java編譯成_jsp.class是使用utf-8作為encoding.

<%@ page contentType="text/html;charset=GBK" %>

輸出到瀏覽器時的文件格式和編碼方式,預設是iso8859_1;

也可以直接調用response.setContentType("text/html; charset=GBK")來設定,但是必須在傳回任何結果之前調用,否則不起作用。

三:傳送數據時,不同的傳送方式的處理方法

使用GET 的方式:
String test = new String((request.getParameter("test")).getBytes("ISO-8859-1"),"GBK");

使用POST 的方式:
request.setCharacterEncoding("GBK");

注意,其中的GBK的編碼與頁面的pageEncoding必須一致,如果頁面的編碼是UTF-8,那麼這里也應該把GBK改成UTF-8,否則同樣會亂碼

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=646020

總之是一種編碼方式

4. jsp 包含其他html頁面編碼問題。

出現的問題原因應該是,靜態包含指令是在jsp文件執行之前將被包含文件包含進來,如果被包含文件裡面沒有使用明確 的指令說明它的編碼方式是什麼,一般我發現是使用utf-8編碼,這樣如果這里需要說明一下pageEncoding與contentType兩種屬性:

關於JSP頁面中的pageEncoding和contentType兩種屬性的區別:

pageEncoding是jsp文件本身的編碼

contentType的charset是指伺服器發送給客戶端時的內容編碼

JSP要經過兩次的「編碼」,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是在客戶端瀏覽器里看到的網頁,用的是contentType。

第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA源碼(即.java),如果pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。

第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,經過這個階段的結果全部是UTF-8的encoding的java源碼。

JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8 encoding的二進制碼(即.class),這是JVM對常數字串在二進制碼(java encoding)內表達的規范。

第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的參數contentType就發揮了功效

而include指令就是在第一階段之前執行的,注意這個是在第一階段之前,所以,如果包含文件和被包含文件的文件編碼不是utf-8,那麼,該指令就會工作不太正常,不能正確的把被包含的文件從原來編碼轉換為包含文件的編碼,就會出現亂碼現象.

解決的方法有很多,一種很簡單的方法就是,把包含文件的pageEncoding設置為utf-8,同時,把被包含文件的pageEncoding也設置 為utf-8,如果被包含文件為html的話,如果你使用的ide是eclipse的話,那麼,可以這么做,在被包含文件名上右鍵單擊,選擇屬性 (properties),Resource下,在text file encoding里選擇utf-8,這樣就可以做到正常顯示了.如果用的是其他的編輯工具,比如Dream weaver,也有響應的修改頁面編碼的地方.
另外一種方法比較麻煩點,但是也挺好用,支持各種編碼方式,只需要修改web.xml文件就可以了.

方法為:在web.xml里添加(注意我所使用的javaee版本2.5為
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">)

<jsp-config>
<jsp-property-group>
<de******ion>jsp encoding example</de******ion>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>gbk</page-encoding>
<******ing-invalid>false</******ing-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
<jsp-property-group>
<de******ion>html encoding example</de******ion>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>gbk</page-encoding>
<******ing-invalid>false</******ing-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>

需要注意的是,這里設置的page-encoding必須與真正的被包含文件和包含文件的pageEncoding一致,修改方法見上一方法.

5. 請編寫一個簡單的JSP頁面,顯示數字1-30

<%@ page contentType="text/html; charset=gbk"%>
<html>
<head>
<title>1-30展示</title>
</head>
<body>
<%
for (int i = 1; i < 31; i++) {
out.println(i);
}
%>
</body>
</html>

6. JSP編程問題,高手幫幫啊!

開始學習不在於多,而在於精.
初學者不要過多停留在語言與工具的表面.學習一門能深入底層的語言,最好的選擇是:匯編,C,C++.我感覺C/C++足以,匯編用於調試和嵌入匯編就可以了.我選擇的是C語言,因為它入門簡單,深入難,需要數據結構和演算法支持,這樣能更好的學習數據結構和演算法.
初學者不要使用Java,VC++的MFC,VB,那樣會很危險的.如果無深入底層,停留在語言表面過久,不利於初學者未來的發展和繼續學習.對! 你可以用JAVA編程,你可以用MFC做出東西,你也可以用VB程序.但是一些比較底層的東西你一點都不知道,連匯編的調試也不懂,程序BUG在那裡也不知道.那永遠只是一個熟練使用錘子的工人,難道你不想成為建築工程師嗎?樓房是你構思的,圖紙是你畫的,而不是建造樓房中的一個不起眼的埋頭工作的工人.
深入底層學習大概: C/C++ ->數據結構->編譯原理
數字電路和匯編語言->計算機組成原理
操作系統->Linux內核
自己再動手寫一個比較簡單的內核.
為什麼要學習內核.why?因為內核是一個學習軟體工程最好的摸版,有很多技巧,技術,是C/C++課本上無法學到的,這主要是把理論知識總結起來.為什麼要自己寫一個簡單的操作系統內核,大家也知道,沒有什麼比實踐更容易理解.等你把簡單的內核完成的時候,你的計算機組成原理,操作系統,Linux內核, 數據結構,C語言,匯編會得到一個更深層次的理解.
這些東西,是那些只能玩玩 VB,VC++,JAVA的低級程序員能理解的嗎?這就是為什麼有些高級程序員,只要看看的VB的書,不用兩三天就能掌握的原因.你叫java程序員來試一下.
所以說,成為了高手,基礎打牢靠了,學什麼都簡單.比起你今年學個java,明年又學個VC++.最後沒有一樣能學好.不如把時間用來打好基礎.
希望各位能給未來的軟體產業作出貢獻. 希望大家多多支持Linux和開源軟體.
我也是一名正在學習中的大一新生.我之所以能有這樣的思想,真的沒有什麼好好奇的.那是我從以前的各位大師身上吸取的思想.我也正在為成為高手而努力.
想為成為高手而努力,就不要把時間浪費在打游戲,打牌,彈吉他等一些事情上了,我們計算機學院的學生都是網游成風,我真為他們擔心,更為中國未來軟體的產業擔心.

7. 什麼是JSP,JAVA又是什麼各有什麼作用呢

JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。

用JSP開發的Web應用是跨平台的,即能在Linux下運行,也能在其他操作系統上運行。

JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計和顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。

Web伺服器在遇到訪問JSP網頁的請求時,首先執行其中的程序段,然後將執行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作資料庫、重新定向網頁等,以實現建立動態網頁所需要的功能。

JSP與Java Servlet一樣,是在伺服器端執行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

JSP的1.0規范的最後版本是1999年9月推出的,12月又推出了1.1規范。目前較新的是JSP1.2規范,JSP2.0規范的徵求意見稿也已出台。

JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。伺服器在頁面被客戶端請求以後對這些Java代碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術基礎,而且大型的Web應用程序的開發需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平台無關性且安全可靠,主要面向網際網路的所有特點。

1. JSP技術的強勢

(1)一次編寫,到處運行。在這一點上Java比PHP更出色,除了系統之外,代碼不用做任何更改。

(2)系統的多平台支持。基本上可以在所有平台上的任意環境中開發,在任意環境中進行系統部署,在任意環境中擴展。相比ASP/PHP的局限性是現而易見的。

(3)強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多台伺服器進行集群和負載均衡,到多台Application進行事務處理,消息處理,一台伺服器到無數台伺服器,Java顯示了一個巨大的生命力。

(4)多樣化和功能強大的開發工具支持。這一點與ASP很像,Java已經有了許多非常優秀的開發工具,而且許多可以免費得到,並且其中許多已經可以順利的運行於多種平台之下。

2. JSP技術的弱勢

(1) 與ASP一樣,Java的一些優勢正是它致命的問題所在。正是由於為了跨平台的功能,為了極度的伸縮能力,所以極大的增加了產品的復雜性。

(2) Java的運行速度是用class常駐內存來完成的,所以它在一些情況下所使用的內存比起用戶數量來說確實是「最低性能價格比」了。從另一方面,它還需要硬碟空間來儲存一系列的.java文件和.class文件,以及對應的版本文件。
=================================
java
Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執行的語言,語法規則和C++類似。同時,Java也是一種跨平台的程序設計語言。用Java語言編寫的程序叫做「Applet」(小應用程序),用編譯器將它編譯成類文件後,將它存在WWW頁面中,並在HTML檔上作好相應標記,用戶端只要裝上Java的客戶軟體就可以在網上直接運行「Applet」。 Java非常適合於企業網路和Internet環境,現在已成為Internet中最受歡迎、最有影響的編程語言之一。 Java有許多值得稱道的優點,如簡單、面向對象、分布式、解釋性、可靠、安全、結構中立性、可移植性、高性能、多線程、動態性等。Java擯棄了C++中各種弊大於利的功能和許多很少用到的功能。 Jave可以運行與任何微處理器,用Java開發的程序可以在網路上傳輸,並運行於任何客戶機上。

JAVA介紹

一、前言

『Java』從1995年的暑假開始在計算機業界就受到了高度注意,特別是在Internet和多 媒體(Multimedia)相關產品類方面。Java為何有如此這么大的魅力?人作如此的比喻: Java在全球資訊網(World Wide Web, WWW )地位就如同電子表格(Spreadsheet)與個人計 算機(PC)的關系。那Java究竟有那些特色呢?

Java是一種軟體技術

是一種由美國SUN計算機公司(Sun Microsystems, Inc.)所研究而成的語言

是一種為 Internet發展的計算機語言

是一種使網頁(Web Page)產生生動活潑畫面的語言

是一種使網頁(Web Page)由靜態(Static)轉變為動態(Dynamic)的語言

是一種語言,用以產生「小應用程序(Applet(s))」

是一種簡化的C++語言 是一種安全的語言,具有阻絕計算機病毒傳輸的功能

是一種將安全性(Security)列為第一優先考慮的語言

是一種使用者不需花費很多時間學習的語言

是一種突破用戶端機器環境和CPU結構的語言

是一種「寫一次,即可在任何機器上執行(Write OnceRun Anywhere)」的語言是有史以來,第一套允 使用者將應用程序(Applications)通過Internet從遠端的伺服器(Remote Server)傳輸到本地端的機器 上(LocalMachine)並執行

是一種應用程序提供者不需要知道使用者的計算機硬體(如:Sun, Intel, 或MAC等)與軟體(如:SW- UNIX, MAC O/S, Windows, 或NT等)環境的語言(Kestenbaum, 1995)。

Java的版本

J2SE Java的標准版本 (Java2 Standard Edition) 定位在客戶端,主要用於桌面應用軟體的編程

J2ME (Java2 Micro Edition) 主要應用於嵌入是系統開發,如手機和PDA的編程;

J2EE 企業版本(Java2 Enterprise Edition)定義在伺服器端Java2的企業版,主要用於分布式的網路程序的開發,如電子商務網站和ERP系統。

下面將依序地介紹Java,首先是Java的發展歷史與Java語言介紹,其次依序是Java Applet和HotJava的簡單介紹。

二、Java FAQ

下面以問答的方式來說明Java的發展歷史與其背景(下列內容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,讀者若欲深 入了解,請自行參閱原文):

Java何時開始發展?(When)

最早大概可追溯至1991年四月份,Sun的綠色計劃(Green Project)開始著手於發展消費性電子產品(Consumer Electronics),所使用的語言是C、C++、及Oak (為Java語 言的前身),後因語言本身和市場的問題, 使得消費性電子產品的發展無法達到當初 預期的目標,再加上網路的興起, 綠色計劃也因此而改變發展的方向,這已是1994 年了。

為何稱之為Java?(Why) "Java"是美國SUN計算機公司Java發展小組歷經無數次的激烈討論之後才被選擇出。 生動(Liveliness)、動畫(Animation)、速度(Speed)、交互性(Interactivity)為當 初選擇名字時所欲表達出的特色。"Java"是在無數的建議中脫穎而出的,而"Java" 不是由幾個單字的首字所組成, 而是從許多程序設計師鍾愛的熱騰騰、香濃咖啡中 產生靈感的。

誰開發了Java?(Who) Java是美國SUN計算機公司Java發展小組開發的,早期的成員(綠色工程)是Patrick Naughton, James Gosling, & Mike Sheridan,而現在大家較為熟悉的成員是James Gosling。

在那裡開發了Java?(Where)

也就是問Java的出生地?答案是美國。

如何可以找到所需的Java信息?(How to)

在網路上,您可以連到Sun公司的Java WWW 網站,URL是http://java.sun.com/,或是 http://www.javasoft.com/。在那裡幾乎可以找到您所需要的所有Java信息,但是語 言多少是一個障礙, 至少對某些人而言;沒關系,目前國內已有很多個網站提供中文 Java信息。在清華和中科院的FTP站點上有不少有關資料。想像以後應會有更多的站點提供相關信息。

如何才能看到Java的效果?(How Do I)

首先您需要有含有Java解釋器的瀏覽器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava瀏覽器,對個人計算機使用者而言,操作 系統需是Windows 95或是Windows NT。

Java是因為撰寫C++語言程序時的困難而研製開的,起先,只是一個消費性電子產品 大計劃中的一部份,C++語言是當初被考慮採用的,但從一開始的編譯問題一直到最 後的一連串問題迫使得放棄C++語言,而有Java語言的產生。Sun是要Java成為一個簡 單(Simple)、面向對象的(Object Oriented)、 分布式的(Distributed)、解釋的(Interpreted)、健壯的(Robust)、安全的(Secure)、 結構中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多線程的(Multithreaded)、動態的(Dynamic)的程序語言(摘譯自 TheJava Language: A White Paper, 1995)。

在Sun的Java語言白皮書中明白地說明上述Java語言的技巧。若以木工為比喻,一個面 向對象的木工,他(她)最主要的重點是即將要做的木椅子,其次才是所需要的工具; 反之;一個以非面向對象的木工,他(她)所關心的只是工具。最近的即插即用(Plug and Play)亦是面向對象設計的重點。 分布式的(Distributed):Java有一個很周全的程薪錄JAVA介紹 。

一、

『Java』從1995年的暑假開始在計算機業界就受到了高度注意,特別是在Internet和 多媒體(Multimedia)相關產品類方面。Java為何有如此這么大的魅力?人作如此的比喻: Java在全球資訊網(World Wide Web, WWW )地位就如同電子表格(Spreadsheet)與個人計 算機TTP和FTP等TCP/IP通訊協定相配合。Java應用程序(Applications) 能在網路上開啟及連結使用物件,就如同透過URLs連結使用一個本地文件系統(Local File System)。 健壯的(Robust):由Java所編寫出的程序能在多種情況下執行而具有其穩定性。Java與 C/C++最大不同點是Java有一個指針模型(Pointer Model)來排除內存被覆蓋(Overwriting Memory)和毀損數據(Corrupting Data)的可能性。

安全的(Secure):Java是被設計用於網路及分布式的環境中,安全性自必是一個很 重要的考慮。Java擁有數個階層的互鎖(Interlocking)保護措施,能有效地防止病 毒的侵入和破壞行為的發生。

結構中立的(Architecture Neutral):一般而言,網路是由很多不同機型的機器所 組合而成的,CPU和作業系統體系結構均有所不同;因此,如何使一個應用程序可以 在每一種機器上執行,是一個難題。所幸,Java的編譯器產生一種結構中立的目標 文件格式(Object File Format);這使得編解碼得以在很多種處理器中執行。

可移植的(Portable):原始資料型式的大小是被指定的,例如"float"一直是表示一 個32位元IEEE 754浮點運算數字,因絕大多數的CPU都具有此共同特徵。程序庫屬於 系統的一部份,它定義了一些可移植的程序介面,Java本身具備有很好的可移植性。

解釋的(Interpreted):Java解釋器能直接地在任何機器上執行Java位元碼(Bytecodes), 因此在進行程序連結時,時間的節省,這對於縮短程序的開發過程,有極大的幫助。

高效能的(High Performance):Java位元碼迅速地能被轉換成機器碼(Machine Code), 從位元碼轉換到機器碼的效能幾乎與C與C++沒有分別。

多線程的(Multi threaded):Java語言具有多線程的功能,這對於交互回應能力及 即時執行行為是有幫助的。

動態的(Dynamic):Java比C或C++語言更具有動態性,更能適應時刻在變的環境, Java不會因程序庫的更新,而必須重新編譯程序。

此外,Hank Shiffman (Making Sense of Java)亦針一般對Java的錯誤看法及觀 念提出他的說明,特在此摘譯如下:

"Java是一種編寫Web Pages的一種語言,就如同HTML和VRML一樣" 事實上,Java並不像是HTML此一類的描述語言(Description Language),而是一種 編程語言(Programming Language)。描述語言標明內容和位置,而編程語言描述一 種產生結果的過程。

2. "Java語言容易學習和使用,不像C、C++和其它程序語言"

Java是一種編程語言。Java容易學嗎?Java或許是比C或C++容易學,但仍是一種編程語言,而不是一種描述語言。

3. "Java碼是可移植的,但C及C++不是"

Java原代碼(Source Code)是比C語言來得可移植一點,差別在於Java的目標碼。 Java碼在一種機器上進行編譯,而能在所有的機器上執行, 只要那部機器上有 Java解釋器。

4. "Java能被拓展而在機器上執行任何事情"

理論上,Java Applet (Java小應用程序)能做任何事情,如模擬3D VRML模型、播放電影、產生音頻....等。但事實上,一個小應用程序(Applet)僅能在那一頁上被執行,而無法在那一頁之外執行。同時,Java亦受限於程序庫的功能。

5. "Java是適合於建立大型的應用程序"

如果Java適合於大型程序,則Java就不適合應用於Web瀏覽器了。第一個商業 性的Java Applets (Applix's Java-Based Spreadsheet) 並不是全然使用Java, 它只使用Java作為用戶介面,而所有的處理工作, 是用CGI碼。

6. "Java是解釋執行的,Basic是解釋執行的,因此Java=Basic"

雖然Java的確是使用解釋器,但事實上,Java則與C或C++等完全編譯語言較為相近,但與Basic或APL等完全解譯語言較不相近。

7. "Java刪除了CGI命令稿(Scripts)和程序的需求"

Java Applets將會取代部份CGI的用途。在有些情況,Java Applets能夠取代一些伺服器端代碼(Server-Side Code),但大多數的情況,基於安全性理由或是效 能的考慮,Java仍無法全然取代CGI Scripts。

8. "Netscape's JavaScript是與Java有相關"

除了名稱之外,Java和JavaScript是有一點點相關。JavaScript是一種命令稿語 言,是可以在HTML頁中使用。Java碼並未出現在HTML中,而在HTML中通過一個鏈 結來鏈結編解碼組。Java和JavaScript之間的關系就如同C語言和C Shell一般。

8. 應用jsp編譯猜數字游戲 1到100內 使用者想數字由電腦來猜 使用者告訴電

【程序】
#include<stdio.h>
void main()
{ int n,g,l,h,i;
char c[256];
while ( 1 )
{ printf("請輸入一個數字: "); scanf("%d",n);
printf("請想一個1到%d的數字\n\n",n);
l=1; h=n; i=1;
while ( 1 )
{ g=(h-l)/2+l;
if ( i>1 ) printf("那麼");
printf("您想的數字是%d ? : ",g); scanf("%s",c);
if ( c[0]=='y' ) break;
else if ( c[0]=='l' ) { l=g; i++; }
else if ( c[0]=='h' ) { h=g; i++; }
}
printf("\n用了%d次猜出了您想的數字!!\n",i);
printf("\n要從新進行游戲么 ? Y?"); scanf("%s",c);
if ( c[0]!='y' ) break;
}
printf("\n再見!\n");
}

【運行結果】
請輸入一個數字: 100請想一個1到100的數字

您想的數字是50 ? : l
那麼您想的數字是75 ? : l
那麼您想的數字是87 ? : h
那麼您想的數字是81 ? : h
那麼您想的數字是78 ? : h
那麼您想的數字是76 ? : y

用了6次猜出了您想的數字!!

要從新進行游戲么 ? Y?y

請輸入一個數字: 50
請想一個1到50的數字

您想的數字是25 ? : h
那麼您想的數字是13 ? : y

用了2次猜出了您想的數字!!

要從新進行游戲么 ? Y?n

再見!

9. jsp編譯出錯,提示「i cannot be resolved」最後一個for循環處的i出錯 下面是這個頁面的部分源碼。。。

<%
for(int i=0;i<shop.size();i++)
{
//顯示購物車信息
改為
<%int i=0;
for( i=0;i<shop.size();i++)
{
//顯示購物車信息

10. jsp是什麼數字幣

javaWEB開發的一種view模式,在jsp文件內寫java代碼以及html代碼, tomcat等伺服器能夠直接將jsp文件轉化為.java文件並同時編譯成.class(HttpServlet類), 用來以java類為基礎..

閱讀全文

與jsp編譯數字塔相關的資料

熱點內容
php前補零 瀏覽:731
演算法推薦廣告倫理問題 瀏覽:921
亞馬遜雲伺服器的選擇 瀏覽:810
單片機頻率發生器 瀏覽:732
備份與加密 瀏覽:623
用什麼app可以看論壇 瀏覽:52
javajdbcmysql連接 瀏覽:473
製作linux交叉編譯工具鏈 瀏覽:751
編程負數除以正數 瀏覽:512
app和aso有什麼區別 瀏覽:326
手機vmap是什麼文件夾 瀏覽:36
塔科夫鎖服如何選擇伺服器 瀏覽:290
消費者生產者問題java 瀏覽:61
程序員筱柒顧默結婚的時候 瀏覽:578
安卓截長屏怎麼弄 瀏覽:475
優信辦理解壓手續怎麼那麼慢 瀏覽:605
私有雲伺服器一體機安全嗎 瀏覽:430
python的tk界面禁用滑鼠 瀏覽:186
怎麼看伺服器mac地址 瀏覽:291
安卓如何將圖鏡像翻轉 瀏覽:325