大家學(xué)習(xí)Java有各自的理由,基本上Java是一個(gè)比較好的面向?qū)ο笳Z(yǔ)言,api豐富
是當(dāng)前比較主流的編程語(yǔ)言,J2SE/J2ME/J2EE在各個(gè)開(kāi)發(fā)領(lǐng)域都發(fā)展良好
Java不會(huì)取代其他開(kāi)發(fā)語(yǔ)言或開(kāi)發(fā)平臺(tái),如c/c++/c#或Delphi/.NET
沒(méi)有最好的語(yǔ)言,只有某種應(yīng)用場(chǎng)合下相對(duì)合適的語(yǔ)言
JRE
Java 2 Runtime Environment, Java 運(yùn)行時(shí)環(huán)境
包括Java虛擬機(jī)(JVM),和必須的類庫(kù)
它是運(yùn)行Java程序和網(wǎng)頁(yè)Applet的必備環(huán)境
它被包含在j2sdk中,也可以單獨(dú)下載(約10M)
下載地址: http://java.sun.com/getjava/download.html
JDK/SDK/J2SE
Java 2 Software Development Kit, Standard Edtion
是開(kāi)發(fā)Java的必備環(huán)境,包括編譯器等工具和大量類庫(kù),一般IDE中也會(huì)自帶
下載地址:http://java.sun.com/j2se/downloads.html
J2EE
Java 2 Platform, Enterprise Edition
是Java在企業(yè)級(jí)應(yīng)用的主要技術(shù),也是目前Java最主要的應(yīng)用場(chǎng)合
包括JAXP、JAXR、JAX-RPC、SAAJ、JAAS、JavaMail、JMS、JSF、JSP/Servlet等
開(kāi)發(fā)J2EE,可以下載j2eesdk開(kāi)發(fā)包,一般IDE中也會(huì)自帶
相關(guān)鏈接:http://java.sun.com/j2ee
J2ME
Java 2 Platform, Macro Edition
是Java應(yīng)用于嵌入式系統(tǒng)(如手機(jī))的主要技術(shù)
相關(guān)鏈接:http://java.sun.com/j2me
開(kāi)發(fā)方式
市面上的IDE(集成開(kāi)發(fā)環(huán)境)可以極大的提高開(kāi)發(fā)效率
但如果你初學(xué)Java,我們推薦用JDK+Editplus或UltraEdit
雖然簡(jiǎn)陋些,但卻可以學(xué)的比較扎實(shí)
過(guò)早的依賴IDE只會(huì)讓你對(duì)Java API蜻蜓點(diǎn)水,一知半解.
甚至都未能掌握J(rèn)ava的基本語(yǔ)法
掌握了扎實(shí)的基礎(chǔ)后,再選擇一款I(lǐng)DE進(jìn)行開(kāi)發(fā)是很容易的
學(xué)習(xí)或使用Java,多查javadoc是很重要的(推薦使用JavaDOCHelper,類似MSDN的界面)
版上的不少問(wèn)題,其實(shí)稍微查查便不是問(wèn)題
設(shè)置環(huán)境變量
安裝了JDK以后,要配置環(huán)境變量
Windows 2000
我的電腦->屬性->高級(jí)->環(huán)境變量
添加以下環(huán)境變量(假定你的java安裝在d:/Java/j2sdk1.4.2)
變量名 值 說(shuō)明
JAVA_HOME d:/Java/j2sdk1.4.2
CLASSPATH . .表示當(dāng)前目錄,即搜索當(dāng)前目錄
PATH ...;%JAVA_HOME%/bin ...表示原來(lái)的PATH值
新開(kāi)一個(gè)dos窗口,鍵入java和javac測(cè)試一下
Linux
以下為RedHat,bash為例 不同發(fā)行版略有不同,環(huán)境變量的設(shè)置詳見(jiàn)Unix/Linux版
修改用戶目錄下的.bash_profile,如vi ~/.bash_profile
JAVA_HOME=/usr/local/java/j2sdk1.4.2
CLASSPATH=.
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH
重新登陸,使這個(gè)設(shè)置生效,在終端輸入java javac測(cè)試一下
簡(jiǎn)單測(cè)試程序
代碼:--------------------------------
public class Test{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
-------------------------------------
用記事本等工具編寫,保存成Test.java
注意,
如果你的windows設(shè)置'不顯示已知擴(kuò)展名'的話,
很有可能被保存成Test.java.txt
然后在命令行工具,cd到Test.java所在目錄,執(zhí)行
javac Test.java
java Test
關(guān)于Java的學(xué)習(xí)
入門Java,請(qǐng)看一本系統(tǒng)講解Java的書(shū)籍
這方面的書(shū),市面上很多,大同小異,無(wú)所謂挑那本
但盡量挑本面向高版本的講解語(yǔ)法的書(shū),千萬(wàn)不要選《VJ++入門到精通》之類
推薦的書(shū)籍如 Java in a Nutshell, Java大學(xué)教程,Java核心技術(shù),Java編程思想等
系統(tǒng)學(xué)習(xí)Java的基本知識(shí)之余,一定要勤實(shí)踐,自己給自己一些動(dòng)手機(jī)會(huì)
適度的記住一些常用api,不要過(guò)分依賴IDE的代碼提示
開(kāi)發(fā)工具
JBuilder
業(yè)界最主流的IDE之一,是Java開(kāi)發(fā)工具的大哥大
目前最新版本 JBuilder 2005
無(wú)論開(kāi)發(fā)j2se、j2me、j2ee還是xml/webservice,都是一把利器
Foundation Edition可免費(fèi)下載,但功能較少
網(wǎng)上有流傳企業(yè)版,為避免不必要的麻煩,請(qǐng)謹(jǐn)慎使用(尤其在公司)
相關(guān)鏈接:http://www.borland.com/products/jbuilder
Eclipse
新興的Java IDE,免費(fèi)、開(kāi)放源代碼、跨平臺(tái)、功能強(qiáng)大、運(yùn)行速度快
同時(shí)可以通過(guò)開(kāi)發(fā)新的插件擴(kuò)展現(xiàn)有插件的功能,比如在現(xiàn)有的Java開(kāi)發(fā)環(huán)境中加
入Tomcat服務(wù)器插件。
相關(guān)鏈接:http://www.eclipse.org
Ant
它是流行的Java build工具,"Everyone should use ant"
Ant不是一個(gè)IDE,但卻可以做很多IDE的事,如編譯/打包/部署/單元測(cè)試/CVS等
對(duì)于中等規(guī)模以上的項(xiàng)目,必定依賴很多類庫(kù)和擁有復(fù)雜的包結(jié)構(gòu)
使用Ant處理這些是極佳的選擇
相關(guān)鏈接:http://ant.apache.org
JSP
Java Server Page,一種Java Web開(kāi)發(fā)的一項(xiàng)技術(shù),和javascript沒(méi)有什么關(guān)系.
Servlet
先于jsp出現(xiàn)的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),類似cgi,但使用多線程處理請(qǐng)求.
jsp/servlet與Java的關(guān)系
Servlet只是繼承了HttpServlet的Java類,而jsp最終會(huì)被編譯成Servlet并執(zhí)行
很多在開(kāi)發(fā)web時(shí)遇到的問(wèn)題,其實(shí)和jsp/servlet本身沒(méi)什么關(guān)系,而是普通的Java問(wèn)
題。 一個(gè)合格的jsp/servlet程序員首先應(yīng)該是合格的Java程序員。
建議在學(xué)習(xí)和使用jsp/servlet前,先打下堅(jiān)實(shí)的Java基礎(chǔ)
以下問(wèn)題不屬于jsp/servlet范疇
.常用API的使用,諸如"如何把int變?yōu)镾tring" "如何得到當(dāng)前時(shí)間" "如何創(chuàng)建線程"
.JDBC的使用和相關(guān)注意事項(xiàng),諸如"如何訪問(wèn)MySQL" "為什么我插入數(shù)據(jù)是亂碼"
.其他J2EE技術(shù)的使用,諸如"如何使用JavaMail" "如何訪問(wèn)EJB"
推薦書(shū)籍
如果可能,請(qǐng)閱讀一本系統(tǒng)的書(shū)籍來(lái)指導(dǎo)你學(xué)習(xí)這項(xiàng)技術(shù)
筆者只看過(guò)"JSP高級(jí)編程"(機(jī)械工業(yè)2001年,廖若雪)
其他大型出版社出版的書(shū)都應(yīng)該不錯(cuò),如Wrox,O'Reilly,或者國(guó)內(nèi)出版社
挑書(shū)的時(shí)候最好選用jsp 1.2,servlet 2.3規(guī)范以上的書(shū)籍
Tomcat
這個(gè)是個(gè)開(kāi)放源代碼的JSP/Servlet服務(wù)器,是jsp/servlet的參考實(shí)現(xiàn),適合初學(xué)
主頁(yè)http://jakarta.apache.org/tomcat/
Tomcat 4.1和Tomcat 5都是目前穩(wěn)定版本,后者支持最新的jsp/servlet標(biāo)準(zhǔn)
建議下載zip版的,解壓縮,運(yùn)行bin/starup.bat即可出現(xiàn)服務(wù)器啟動(dòng)的界面
如果啟動(dòng)失敗,請(qǐng)確定本機(jī)的Java環(huán)境已正確,參見(jiàn)JAVA_HOME和PATH的配置
conf目錄里是服務(wù)器的配置,webapps是部署網(wǎng)站的目錄
自己寫的java class應(yīng)該放哪里
假設(shè)你的index.jsp的位置是X:/test/index.jsp, X:/test是你的項(xiàng)目目錄
Test.class的位置應(yīng)該是X:/test/WEB-INF/classes/Test.class
項(xiàng)目中的lib應(yīng)該放哪里
X:/test/WEB-INF/lib/myLib.jar
如何寫個(gè)servlet
package testservlet;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class FooServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().println("hi, I'm a servlet");
}
}
編譯這個(gè)類 javac -classpath servlet-api.jar FooServlet.java
其中這個(gè)jar可以從tomcat-5.0.19/common/lib/servlet-api.jar獲得
編譯后的class放在 X:/test/WEB-INF/classes/testservlet/FooServlet.class
其中testservlet你包的名字,應(yīng)盡量寫package,避免莫名其妙的麻煩
編譯X:/test/WEB-INF/web.xml,修改為
把這個(gè)程序部署到服務(wù)器上,比如把X:/test/*復(fù)制到tomcat/webapps/test/*
打開(kāi)瀏覽器訪問(wèn) http://localhost:8080/test/foobar,順利的話會(huì)看到一行文字
jsp顯示的是亂碼怎么辦
jsp的中文問(wèn)題以下幾種 //不包括jdbc讀寫數(shù)據(jù)庫(kù)的中文問(wèn)題
1. jsp中寫了中文如
中文
, 卻不能顯示解決方法 在jsp第一行加入
<%@ page contentType="text/html; charset=gb2312" %>
2. 表單中寫了一個(gè)中文,如
卻不能接受到 <%System.out.println(request.getParameter("a"));%>
解決方法 在jsp或servlet中處理參數(shù)前加一條
request.setCharacterEncoding("GB2312");
3. http://host/a.jsp?name=中文 這樣的url中的name取不到
解決方法 應(yīng)該使用java.net.URLEncoder類把這個(gè)字符串轉(zhuǎn)成ascii
怎樣實(shí)現(xiàn)文件上傳
常見(jiàn)的Java文件上傳api有
Jakarta Commons FileUpload http://jakarta.apache.org/commons/fileupload/
COS
SmartUpload
下載相關(guān)的文件,里面一般有demo的
JSTL和EL
分別是Java Standard Tag Lib和Expression Language
可以大大簡(jiǎn)化常規(guī)的jsp開(kāi)發(fā),并讓頁(yè)面更簡(jiǎn)潔,而不是充斥著scriptlet