安装完成后,还要进行 Java 环境的配置,才能正常使用,步骤如下:
(1)在我的电脑点击右键——〉选择属性,
(2)在弹出界面上:选择高级——〉环境变量
(3)点击环境变量界面的系统变量栏的“新建”按钮
变量名
变量值
第一种
JAVA_HOME(必须大写)
C:\Program Files\Java\jdk1.6.0_10
Path
%JAVA_HOME%\bin
classpath
.;
%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar
第二种
Path
C:\Program Files\Java\jdk1.6.0_10\bin
注意:第一种,JDK1.4以后的版本可以暂时不配置。
(4) “开始”->;“运行”,键入“cmd”;
(5) 键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;输入set还可
以查看系统所有变量的配置。
那么为何要设置这些环境变量呢?
JAVA_HOME:配置到 JDK 安装路径。注意:变量名必须书写正确,全部大写,中间用下划线。有以下好处:
? 为了方便引用。比如,JDK安装在C:\Program Files\Java\jdk1.6.0_10 目录里,则设置 JAVA_HOME 为该目录路径, 那么以后要使用这个路径的时候,只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串。
? 归一原则。当JDK路径被迫改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK,后果是可想而知。
?为第三方软件服务。基于 Java 的第三方软件会引用约定好的JAVA_HOME变量,那么它们能够找到 JDK 的位置,不然, 将不能正常使用该软件。如果某个软件不能正常使用,不妨想想是不是这个问题。
PATH:设置命令的搜索路径,在执行命令时,操作系统就会在PATH设置的路径去查找命令的可执行文件,提供给操作系统寻找到 Java 命令工具的路径。通常是配置到: JDK 安装路径\bin。完成配置以后,使用编译器和解释器就会很方便,可以在任何路径下使用bin目录下的Java 命 令 , 而 不 需 要 写 出 完 整 的 路 径 : C:\Program Files\Java\jdk1.6.0_10 \bin\java 。
CLASSPATH:系统搜索字节码(类文件.class)文件的搜索路径。提供程序在运行期寻找所需资源的路径,比如:.class类文件、文件、图片等等。在 windows环境下配置“.”代表当前路径,那么在执行java命令时,就会先到当前路径寻找class类文件。这个配置对于Java初学者比较难理解,我们在后面的Java运行过程中,再详细体会。
注意:在 windows 操作系统上,最好在 CLASSPATH 的配置里面,始终在前面保持“.;”的配置。通过在windows窗口设置环境变量,可以永久更改系统环境变量。也可以在 dos命令行窗口,通过dos命令的方式修改环境变量,具体命令如下:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10;
set path=%JAVA_HOME%\bin;
set classpath=.;
但通过这种方式修改的环境变量只在当前的dos命令行窗口有效,对于其他的dos命令行窗口则无效。
注意:如果更改了系统环境变量的配置,必须重新打开 dos 窗口,就是打开一个新的 dos 窗口,环境变量的新配置才会有效,否则,dos 窗口就还应用旧的环境变量的旧配置。
1.1.2 JDK、JRE、JVM的区别v JDK:(Java Development Kit), java开发包,它包含了java的编译,调试,运行整个环境和包含了整个类库的软件包
v JRE:(Java Runtime Environment), java运行环境, jre是jdk的子集,在一套完整的jdk中就包含了jre, jre只负责运行一个编译好的java程序(字节码文件bytecode), 而jdk可以去编译,调试,运行整个操作过程都支持
Java运行环境的三项主要功能:
加载代码:由class loader 完成;
校验代码:由bytecode verifier 完成;
执行代码:由 runtime interpreter完成。
v JVM: (Java Virtual Machine),在jre内部有一个软件组件jvm就是java虚拟机
1.1.3 JDK的结构简介各目录含义
bin
(binary 二进制),jdk的基本应用程序都在这里,如javac、java、javadoc等
domo/sample
java自带的一些例子程序
include
用于编译本地方法的文件,即Java调用C、C++语言的头文件,用于扩展Java的功能
jre
java运行时的环境在这里
lib
(libary 库)java的常用类库
src.zip
Java开放的部分源代码,常用类库的源代码
bin目录( java开发调试的命令, exe文件,连接库文件,编译器等等 )
名称
解释
appletviewer
小程序浏览器,一种执行HTML文件上的java小程序java的浏览器
java
java解释器,运行一个字节码文件,直接从类文件执行java应用程序字节代码
javac
java编译器,编译一个java文件,将java源代码转换成字节码
javadoc
根据java源码级说明语句生成HTML文档,Javadoc解析Java源文件中的声明和文档注释,并产生相应的HTML页面,描述公有类、保护类、内部类、接口、构造函数、方法。在实现时,javadoc要求且依赖于Java编译器完成其工作。
javah
蝉声可以调用java过程的C过程,或建立能被java程序调用的C过程头文件
javap
java的反汇编器,将class反编译成Java bytecodes。显示编译类文件中的可访问功能和数据,同时显示字节代码含义
jar
可将多个文件合并为单个JAR文件,jar是个多用途的压缩工具,它基于ZIP和ZLIB压缩格式的
jdb
java调试器, java的debug工具,可以逐行执行程序,设置断点和检查变量
jps
查看JVM进程信息用的
keytool
生成keystore文件
native2ascii
将中文unicode码转换成ascii码的,-reverse参数可以将ascii码转换回来
1.2 linux下安装
1. 从www.oracle.com下载最新的Java SE Development Kit 7 jdk-7-linux-i586.rpm
2. 将JDK安装文件jdk-7-linux-i586.rpm拷贝到Redhat任意目录下。例如:/opt/jdk(目录jdk需要手动新建)
3. 执行 rpm -ivh jdk-1_5_0_17-linux-i586.rpm
此时,系统会开始安装JDK。安装结束后可以在/usr目录下发现新增了一个名为java的文件夹。该文件夹就是安装好的JDK目录。
4. 设置环境变量
a. 进入/etc文件夹,找到文件profile并打开(命令为:#vi profile)。
b. 找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,修改为下面的形式(按i让编辑器处于插入状态):
vi /etc/profile
export JAVA_HOME='/usr/java/jdk1.8.0_05'
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按ESC退出编辑模式,在文件末尾输入:wq回车 保存并退出vi
5. 设置完毕后,保存文件。重启Redhat后(或者使用 source /etc/profile 使配置文件立即生效)登录控制终端,键入:java -version;
如果出现java version “1.7.0”等字样,说明您的JDK已经安装成功了!
如果不能正常显示版本号可能是由于系统自带的是jdk1.4.2
需要卸载后才能使用java -version看到正确的版本号
rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115.i386
source /etc/profile
java -version
就可以看到正确的版本号了
6.测试配置环境 写个简单的HelloWorld来测试一下 [root@esprit java]# vi HelloWorld.java 文件中输入:
public class HelloWorld {
public static void main(String args[]) {
System.out.println( " Hello World in Linux!! " );
}
}
:wq 保存退出 [root@esprit java]# javac HelloWorld.java 没有错误,接着 [root@esprit java]# java HelloWorld shell下输出:Hello World in Linux!!
第二章 Tomcat简介
2.1 Tomcat 背景
自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持 Servlet,这样Tomcat就诞生了。Tomcat 是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的 servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的 喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。
2.2 Tomcat目录
1. bin :存放各种平台下启动和关闭Tomcat的脚本文件。其中有个档是catalina.bat,打开这个windos配置文件,在非注释行加入JDK路径,例如 : SET JAVA_HOME=C:j2sdk1.4.2_06 保存后,就配置好tomcat环境了。 startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件。
2. conf :存放不同的配置文件(server.xml和web.xml);tomcat启动的时候需要读取的配置文件:server.xml(tomcat主要配置文件)、web.xml和tomcatat-users.xml、catalina.policy(安全策略文件)等。修改了以后需要重启tomcat才能生效.最重要的是 server.xml;配置tomcat组件的XML文件server.XML其中包括
I.顶层类元素[Top Level Elements]: 位于整个配置文件的顶层, 包括和;
II.连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果;
II.容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:
IV.嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:等
一个包含一个或多个,一个包含唯一一个和一个或多个,多个共享一个;一个包含多个,每个定义一个虚拟主机,包含一个或多个web应用; 元素是代表一个在虚拟主机上运行的Web应用。标签的描述
3. Doc:存放 Tomcat文档;
4. Common:存放Tomcat运行需要的库文件(JARS);
5. logs:存放Tomcat执行时的LOG文件(日志文件);
6. src: 存放Tomcat的源代码;(这个要看你下载的是何种tomcat啦)
7. webapps:Tomcat的主要Web发布目录(包括应用程序示例);
8. work:存放jsp编译后产生的class文件;
9. temp : 临时活页夹,Tomcat运行时候存放临时文件用的。
2.3 Tomcat 类加载
Bootstrap($JAVA_HOME/jre/lib/ext/*.jar) 其实直接双击该jar也会使得tomcat运行起来。
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
&Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar)
加载类和资源的顺序为:
1、/Web-INF/classes
2、/Web-INF/lib/*.jar
3、Bootstrap
4、System
5、$CATALINA_HOME/common/classes
6、$CATALINA_HOME/common/endores/*.jar
7、$CATALINA_HOME/common/lib/*.jar
8、$CATALINA_HOME/shared/classes
9、$CATALINA_HOME/shared/lib/*.jar
2.4 server.xml配置简介:
下面讲述这个文件中的基本配置信息,更具体的配置信息请参考tomcat的文档:
server:
1、port 指定一个端口,这个端口负责监听关闭tomcat的请求
2、shutdown 指定向端口发送的命令字符串
service:
1、name 指定service的名字
Connector (表示客户端和service之间的连接):
1、port 指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
2、minProcessors 服务器启动时创建的处理请求的线程数
3、maxProcessors 最大可以创建的处理请求的线程数
4、enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
5、redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
6、acceptCount 指定当所 有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
7、connectionTimeout 指定超时的时间数(以毫秒为单位)
Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求):
1、defaultHost 指定缺省 的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context (表示一个web应用程序):
1、docBase 应用程序的路径或 者是WAR文件存放的路径
2、path 表示此web应用程序的url的 前缀,这样请求的url为
http://localhost:8080/path/****
3、reloadable 这个属性非常重要,如果为true, 则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目 录的变化,自动装载新的应用程序,我们可
以在不重起tomcat的情况下改变应用程序
host (表示一个虚拟主机):
1、name 指定主机名
2、appBase 应用程序基本目 录,即存放应用程序的目录
3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文 件中运行应用程序。
Logger (表示日志,调试和错误信息):
1、className 指定logger使用的类名,此类必须 实现org.apache.catalina.Logger 接口。
2、prefix 指定log文件的前缀
3、suffix 指定log文件的后缀
4、timestamp 如果为true,则log文件名中要加入时间,如下
例:localhost_log.2001-10-04.txt
Realm (表示存放用户名,密码及role的数据库):
1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口。
Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve
类可以记录应用程序的访问信息
directory(指定log文件存放的位置):
1、pattern 有两个值,common方式记录远程主机名或ip地 址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多。
2.5 web.xml配置简介:
?1、默认(欢迎)文件的设置
? 在tomcat4\conf\web.xml中,与IIS中的默认文件意思相同。
? ?
??? index.html
??? index.htm
??? index.jsp
??
?2、报错文件的设置
??
???404
???/notFileFound.jsp
??
??
???java.lang.NullPointerException
???/null.jsp
??
??如果某文件资源没有找到,服务器要报404错 误,按上述配置则会调用\webapps\ROOT\notFileFound.jsp。
??如果执行的某个JSP文 件产生NullPointException ,则会调用\webapps\ROOT\null.jsp
?3、会话超时的设置
??设置session 的过期时间,单 位是分钟;
??
???30
??
?4、过滤器的设置
??
???FilterSource
???project4. FilterSource
??
??
???FilterSource
???/WwwServlet
???(/haha/*)
??
??过滤:
??1) 身份验证的过滤Authentication Filters
??2) 日志和审核的过滤Logging and Auditing Filters
??3) 图片转化的过滤Image conversion Filters
??4) 数据压缩的过滤Data compression Filters
??5) 加密过滤Encryption Filters
??6) Tokenizing Filters
??7) 资源访问事件触发的过滤Filters that trigger resource access events XSL/T 过滤XSL/T filters
??9) 内容类型的过滤Mime-type chain Filter 注意监听器的顺序,如:先安全过滤,然后资源,
然后内容类型等,这个顺序可以自己定。
2.6 管理
1、用户配置
在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。
打开conf目录下的tomcat-users.xml文 件,在相应的位置添加下面一行:
lhr" password="lhr" roles="standard,manager"/>
然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户
名和密码即可。
name="lhr" password="lhr" roles="admin-gui,manager-gui"/>
2、应用程序列表
在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:
OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0
上面显示的信息分别为:应用程序的路径、当前状态、连接这个程序的session数
3、重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:
OK - Reloaded application at context path /examples
这表示example应用程序装载成功, 如果我们将server.xml的Context元素的reloadable属性设为true, 则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。
4、显示session信息
在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:
OK - Session information for application at context path /examples Default maximum session inactive
interval 30 minutes
5、启动和关闭应用程序
在浏览器中输入http://localhost:8080/manager/start?path=/examples和
http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。
2.7 Tomcat 整理 2.7.1 apr
许多朋友可能在启动tomcat的时候都会看到类似这样的信息:
引用
org.apache.catalina.core.AprLifecycleListener init 信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Java\jre\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS
出现这种情况是这表示没有找到APR 简要解决办法:去http://tomcat.heanet.ie/native/ 下载编译好的tcnative-1.dll文件,目前最新为1.1.14,拷贝至jdk\bin下,再启动就可以成功加载APR了。
引用
org.apache.catalina.core.AprLifecycleListener init 信息: Loaded Apache Tomcat Native library 1.1.14. org.apache.catalina.core.AprLifecycleListener init 信息: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], random [true].
2.7.2 URIEncoding有时候在做开发的时候经常发现文本框输入的中文到了程序中成了乱码,其实是因为在端口监听部分缺少编码。
Xml代码
1 URIEncoding="UTF-8"
解决方法如下: 原始部分 8080端口上
Xml代码
2