What is Java? Why Java?
大家学习Java有各自的理由,基本上Java是一个比较好的面向对象语言,api丰富
是当前比较主流的编程语言,J2SE/J2ME/J2EE在各个开发领域都发展良好
Java不会取代其他开发语言或开发平台,如c/c++/c#或Delphi/.NET
没有最好的语言,只有某种应用场合下相对合适的语言
JRE
Java 2 Runtime Environment, Java 运行时环境
包括Java虚拟机(JVM),和必须的类库
它是运行Java程序和网页Applet的必备环境
它被包含在j2sdk中,也可以单独下载(约10M)
下载地址: http://java.sun.com/getjava/download.html
JDK/SDK/J2SE
Java 2 Software Development Kit, Standard Edtion
是开发Java的必备环境,包括编译器等工具和大量类库,一般IDE中也会自带
下载地址:http://java.sun.com/j2se/downloads.html
J2EE
Java 2 Platform, Enterprise Edition
是Java在企业级应用的主要技术,也是目前Java最主要的应用场合
包括JAXP、JAXR、JAX-RPC、SAAJ、JAAS、JavaMail、JMS、JSF、JSP/Servlet等
开发J2EE,可以下载j2eesdk开发包,一般IDE中也会自带
相关链接:http://java.sun.com/j2ee
J2ME
Java 2 Platform, Macro Edition
是Java应用于嵌入式系统(如手机)的主要技术
相关链接:http://java.sun.com/j2me
开发方式
市面上的IDE(集成开发环境)可以极大的提高开发效率
但如果你初学Java,我们推荐用JDK+Editplus或UltraEdit
虽然简陋些,但却可以学的比较扎实
过早的依赖IDE只会让你对Java API蜻蜓点水,一知半解.
甚至都未能掌握Java的基本语法
掌握了扎实的基础后,再选择一款IDE进行开发是很容易的
学习或使用Java,多查javadoc是很重要的(推荐使用JavaDOCHelper,类似MSDN的界面)
版上的不少问题,其实稍微查查便不是问题
设置环境变量
安装了JDK以后,要配置环境变量
Windows 2000
我的电脑->属性->高级->环境变量
添加以下环境变量(假定你的java安装在d:/Java/j2sdk1.4.2)
变量名 值 说明
JAVA_HOME d:/Java/j2sdk1.4.2
CLASSPATH . .表示当前目录,即搜索当前目录
PATH ...;%JAVA_HOME%/bin ...表示原来的PATH值
新开一个dos窗口,键入java和javac测试一下
Linux
以下为RedHat,bash为例 不同发行版略有不同,环境变量的设置详见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
重新登陆,使这个设置生效,在终端输入java javac测试一下
简单测试程序
代码:--------------------------------
public class Test{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
-------------------------------------
用记事本等工具编写,保存成Test.java
注意,
如果你的windows设置'不显示已知扩展名'的话,
很有可能被保存成Test.java.txt
然后在命令行工具,cd到Test.java所在目录,执行
javac Test.java
java Test
关于Java的学习
入门Java,请看一本系统讲解Java的书籍
这方面的书,市面上很多,大同小异,无所谓挑那本
但尽量挑本面向高版本的讲解语法的书,千万不要选《VJ++入门到精通》之类
推荐的书籍如 Java in a Nutshell, Java大学教程,Java核心技术,Java编程思想等
系统学习Java的基本知识之余,一定要勤实践,自己给自己一些动手机会
适度的记住一些常用api,不要过分依赖IDE的代码提示
开发工具
JBuilder
业界最主流的IDE之一,是Java开发工具的大哥大
目前最新版本 JBuilder 2005
无论开发j2se、j2me、j2ee还是xml/webservice,都是一把利器
Foundation Edition可免费下载,但功能较少
网上有流传企业版,为避免不必要的麻烦,请谨慎使用(尤其在公司)
相关链接:http://www.borland.com/products/jbuilder
Eclipse
新兴的Java IDE,免费、开放源代码、跨平台、功能强大、运行速度快
同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加
入Tomcat服务器插件。
相关链接:http://www.eclipse.org
Ant
它是流行的Java build工具,"Everyone should use ant"
Ant不是一个IDE,但却可以做很多IDE的事,如编译/打包/部署/单元测试/CVS等
对于中等规模以上的项目,必定依赖很多类库和拥有复杂的包结构
使用Ant处理这些是极佳的选择
相关链接:http://ant.apache.org
JSP
Java Server Page,一种Java Web开发的一项技术,和javascript没有什么关系.
Servlet
先于jsp出现的动态网页技术,类似cgi,但使用多线程处理请求.
jsp/servlet与Java的关系
Servlet只是继承了HttpServlet的Java类,而jsp最终会被编译成Servlet并执行
很多在开发web时遇到的问题,其实和jsp/servlet本身没什么关系,而是普通的Java问
题。 一个合格的jsp/servlet程序员首先应该是合格的Java程序员。
建议在学习和使用jsp/servlet前,先打下坚实的Java基础
以下问题不属于jsp/servlet范畴
.常用API的使用,诸如"如何把int变为String" "如何得到当前时间" "如何创建线程"
.JDBC的使用和相关注意事项,诸如"如何访问MySQL" "为什么我插入数据是乱码"
.其他J2EE技术的使用,诸如"如何使用JavaMail" "如何访问EJB"
推荐书籍
如果可能,请阅读一本系统的书籍来指导你学习这项技术
笔者只看过"JSP高级编程"(机械工业2001年,廖若雪)
其他大型出版社出版的书都应该不错,如Wrox,O'Reilly,或者国内出版社
挑书的时候最好选用jsp 1.2,servlet 2.3规范以上的书籍
Tomcat
这个是个开放源代码的JSP/Servlet服务器,是jsp/servlet的参考实现,适合初学
主页http://jakarta.apache.org/tomcat/
Tomcat 4.1和Tomcat 5都是目前稳定版本,后者支持最新的jsp/servlet标准
建议下载zip版的,解压缩,运行bin/starup.bat即可出现服务器启动的界面
如果启动失败,请确定本机的Java环境已正确,参见JAVA_HOME和PATH的配置
conf目录里是服务器的配置,webapps是部署网站的目录
自己写的java class应该放哪里
假设你的index.jsp的位置是X:/test/index.jsp, X:/test是你的项目目录
Test.class的位置应该是X:/test/WEB-INF/classes/Test.class
项目中的lib应该放哪里
X:/test/WEB-INF/lib/myLib.jar
如何写个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");
}
}
编译这个类 javac -classpath servlet-api.jar FooServlet.java
其中这个jar可以从tomcat-5.0.19/common/lib/servlet-api.jar获得
编译后的class放在 X:/test/WEB-INF/classes/testservlet/FooServlet.class
其中testservlet你包的名字,应尽量写package,避免莫名其妙的麻烦
编译X:/test/WEB-INF/web.xml,修改为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>testservlet.FooServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test<ervlet-name>
<url-pattern>/foobar</url-pattern>
</servlet-mapping>
</web-app>
把这个程序部署到服务器上,比如把X:/test/*复制到tomcat/webapps/test/*
打开浏览器访问 http://localhost:8080/test/foobar,顺利的话会看到一行文字
jsp显示的是乱码怎么办
jsp的中文问题以下几种 //不包括jdbc读写数据库的中文问题
1. jsp中写了中文如<p>中文</p>, 却不能显示
解决方法 在jsp第一行加入
<%@ page contentType="text/html; charset=gb2312" %>
2. 表单中写了一个中文,如<input type="text" name="a" value="中文">
却不能接受到 <%System.out.println(request.getParameter("a"));%>
解决方法 在jsp或servlet中处理参数前加一条
request.setCharacterEncoding("GB2312");
3. http://host/a.jsp?name=中文 这样的url中的name取不到
解决方法 应该使用java.net.URLEncoder类把这个字符串转成ascii
怎样实现文件上传
常见的Java文件上传api有
Jakarta Commons FileUpload http://jakarta.apache.org/commons/fileupload/
COS
SmartUpload
下载相关的文件,里面一般有demo的
JSTL和EL
分别是Java Standard Tag Lib和Expression Language
可以大大简化常规的jsp开发,并让页面更简洁,而不是充斥着scriptlet
大家学习Java有各自的理由,基本上Java是一个比较好的面向对象语言,api丰富
是当前比较主流的编程语言,J2SE/J2ME/J2EE在各个开发领域都发展良好
Java不会取代其他开发语言或开发平台,如c/c++/c#或Delphi/.NET
没有最好的语言,只有某种应用场合下相对合适的语言
JRE
Java 2 Runtime Environment, Java 运行时环境
包括Java虚拟机(JVM),和必须的类库
它是运行Java程序和网页Applet的必备环境
它被包含在j2sdk中,也可以单独下载(约10M)
下载地址: http://java.sun.com/getjava/download.html
JDK/SDK/J2SE
Java 2 Software Development Kit, Standard Edtion
是开发Java的必备环境,包括编译器等工具和大量类库,一般IDE中也会自带
下载地址:http://java.sun.com/j2se/downloads.html
J2EE
Java 2 Platform, Enterprise Edition
是Java在企业级应用的主要技术,也是目前Java最主要的应用场合
包括JAXP、JAXR、JAX-RPC、SAAJ、JAAS、JavaMail、JMS、JSF、JSP/Servlet等
开发J2EE,可以下载j2eesdk开发包,一般IDE中也会自带
相关链接:http://java.sun.com/j2ee
J2ME
Java 2 Platform, Macro Edition
是Java应用于嵌入式系统(如手机)的主要技术
相关链接:http://java.sun.com/j2me
开发方式
市面上的IDE(集成开发环境)可以极大的提高开发效率
但如果你初学Java,我们推荐用JDK+Editplus或UltraEdit
虽然简陋些,但却可以学的比较扎实
过早的依赖IDE只会让你对Java API蜻蜓点水,一知半解.
甚至都未能掌握Java的基本语法
掌握了扎实的基础后,再选择一款IDE进行开发是很容易的
学习或使用Java,多查javadoc是很重要的(推荐使用JavaDOCHelper,类似MSDN的界面)
版上的不少问题,其实稍微查查便不是问题
设置环境变量
安装了JDK以后,要配置环境变量
Windows 2000
我的电脑->属性->高级->环境变量
添加以下环境变量(假定你的java安装在d:/Java/j2sdk1.4.2)
变量名 值 说明
JAVA_HOME d:/Java/j2sdk1.4.2
CLASSPATH . .表示当前目录,即搜索当前目录
PATH ...;%JAVA_HOME%/bin ...表示原来的PATH值
新开一个dos窗口,键入java和javac测试一下
Linux
以下为RedHat,bash为例 不同发行版略有不同,环境变量的设置详见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
重新登陆,使这个设置生效,在终端输入java javac测试一下
简单测试程序
代码:--------------------------------
public class Test{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
-------------------------------------
用记事本等工具编写,保存成Test.java
注意,
如果你的windows设置'不显示已知扩展名'的话,
很有可能被保存成Test.java.txt
然后在命令行工具,cd到Test.java所在目录,执行
javac Test.java
java Test
关于Java的学习
入门Java,请看一本系统讲解Java的书籍
这方面的书,市面上很多,大同小异,无所谓挑那本
但尽量挑本面向高版本的讲解语法的书,千万不要选《VJ++入门到精通》之类
推荐的书籍如 Java in a Nutshell, Java大学教程,Java核心技术,Java编程思想等
系统学习Java的基本知识之余,一定要勤实践,自己给自己一些动手机会
适度的记住一些常用api,不要过分依赖IDE的代码提示
开发工具
JBuilder
业界最主流的IDE之一,是Java开发工具的大哥大
目前最新版本 JBuilder 2005
无论开发j2se、j2me、j2ee还是xml/webservice,都是一把利器
Foundation Edition可免费下载,但功能较少
网上有流传企业版,为避免不必要的麻烦,请谨慎使用(尤其在公司)
相关链接:http://www.borland.com/products/jbuilder
Eclipse
新兴的Java IDE,免费、开放源代码、跨平台、功能强大、运行速度快
同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加
入Tomcat服务器插件。
相关链接:http://www.eclipse.org
Ant
它是流行的Java build工具,"Everyone should use ant"
Ant不是一个IDE,但却可以做很多IDE的事,如编译/打包/部署/单元测试/CVS等
对于中等规模以上的项目,必定依赖很多类库和拥有复杂的包结构
使用Ant处理这些是极佳的选择
相关链接:http://ant.apache.org
JSP
Java Server Page,一种Java Web开发的一项技术,和javascript没有什么关系.
Servlet
先于jsp出现的动态网页技术,类似cgi,但使用多线程处理请求.
jsp/servlet与Java的关系
Servlet只是继承了HttpServlet的Java类,而jsp最终会被编译成Servlet并执行
很多在开发web时遇到的问题,其实和jsp/servlet本身没什么关系,而是普通的Java问
题。 一个合格的jsp/servlet程序员首先应该是合格的Java程序员。
建议在学习和使用jsp/servlet前,先打下坚实的Java基础
以下问题不属于jsp/servlet范畴
.常用API的使用,诸如"如何把int变为String" "如何得到当前时间" "如何创建线程"
.JDBC的使用和相关注意事项,诸如"如何访问MySQL" "为什么我插入数据是乱码"
.其他J2EE技术的使用,诸如"如何使用JavaMail" "如何访问EJB"
推荐书籍
如果可能,请阅读一本系统的书籍来指导你学习这项技术
笔者只看过"JSP高级编程"(机械工业2001年,廖若雪)
其他大型出版社出版的书都应该不错,如Wrox,O'Reilly,或者国内出版社
挑书的时候最好选用jsp 1.2,servlet 2.3规范以上的书籍
Tomcat
这个是个开放源代码的JSP/Servlet服务器,是jsp/servlet的参考实现,适合初学
主页http://jakarta.apache.org/tomcat/
Tomcat 4.1和Tomcat 5都是目前稳定版本,后者支持最新的jsp/servlet标准
建议下载zip版的,解压缩,运行bin/starup.bat即可出现服务器启动的界面
如果启动失败,请确定本机的Java环境已正确,参见JAVA_HOME和PATH的配置
conf目录里是服务器的配置,webapps是部署网站的目录
自己写的java class应该放哪里
假设你的index.jsp的位置是X:/test/index.jsp, X:/test是你的项目目录
Test.class的位置应该是X:/test/WEB-INF/classes/Test.class
项目中的lib应该放哪里
X:/test/WEB-INF/lib/myLib.jar
如何写个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");
}
}
编译这个类 javac -classpath servlet-api.jar FooServlet.java
其中这个jar可以从tomcat-5.0.19/common/lib/servlet-api.jar获得
编译后的class放在 X:/test/WEB-INF/classes/testservlet/FooServlet.class
其中testservlet你包的名字,应尽量写package,避免莫名其妙的麻烦
编译X:/test/WEB-INF/web.xml,修改为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>testservlet.FooServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test<ervlet-name>
<url-pattern>/foobar</url-pattern>
</servlet-mapping>
</web-app>
把这个程序部署到服务器上,比如把X:/test/*复制到tomcat/webapps/test/*
打开浏览器访问 http://localhost:8080/test/foobar,顺利的话会看到一行文字
jsp显示的是乱码怎么办
jsp的中文问题以下几种 //不包括jdbc读写数据库的中文问题
1. jsp中写了中文如<p>中文</p>, 却不能显示
解决方法 在jsp第一行加入
<%@ page contentType="text/html; charset=gb2312" %>
2. 表单中写了一个中文,如<input type="text" name="a" value="中文">
却不能接受到 <%System.out.println(request.getParameter("a"));%>
解决方法 在jsp或servlet中处理参数前加一条
request.setCharacterEncoding("GB2312");
3. http://host/a.jsp?name=中文 这样的url中的name取不到
解决方法 应该使用java.net.URLEncoder类把这个字符串转成ascii
怎样实现文件上传
常见的Java文件上传api有
Jakarta Commons FileUpload http://jakarta.apache.org/commons/fileupload/
COS
SmartUpload
下载相关的文件,里面一般有demo的
JSTL和EL
分别是Java Standard Tag Lib和Expression Language
可以大大简化常规的jsp开发,并让页面更简洁,而不是充斥着scriptlet