分别在Linux和windows系统下实现Tomcat的安装和配置。
在Linux系统下安装、配置Tomcat
步骤0:安装JDK及配置JAVA_HOME、PATH等环境变量
到Oracle官方网站下载JDK的Linux专用安装程序后,执行安装,假定安装路径为“usr/local/jdk1.7”。安装结束后配置环境变量的过程如图-1所示,在终端中输入“gedit /home/soft01/.bashrc”,其代表的含义是使用gedit编辑soft01这个用户下的环境变量。
/
图– 1
在文件中输入图-2所示的第9,10,11行代码
/
图 - 2
其含义为:
具体完整代码为:
export JAVA_HOME=/usr/local/jdk1.7 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/ tools.jar:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
在终端中输入“java –version“,查看是否配置成功,结果如图-3所示:
/
图 - 3
步骤一:下载及解压Tomcat
在tomcat.apache.org网站下载Tomcat7.0程序的安装包。Linux系统选择tar.gz格式。如图-4所示:
图 -4
下载后的文件如图-5所示:
图– 5
将此文档解压到“/home/soft01/”或其子目录下,假定本次解压位置为“/home/soft01/java”,如图-6所示:
图–6
解压后的结果如图-7所示,保证tomcat-apache-7.0.6文件夹下面包含Tomcat文件。
图 -7
步骤二:启动Tomcat
在终端中输入如下命令:“cd /home/soft01/java/apache-tomcat-7.0.6/bin”进入到tomcat的安装目录的bin下面。如图-8所示,可以通过“pwd”命令查看当前位置是否正确。
图– 8
继续在终端中输入“sh startup.sh”命令,如图-9所示:
图– 9
为检验Tomcat的确已经启动成功,打开浏览器输入http://localhost:8080查看结果。如图-10所示为启动成功。
图 - 10
步骤三:关闭Tomcat
在终端中输入“sh shutdown.sh”命令,停止Tomcat服务。如图-11:
图– 11
再次在浏览器中输入“http://localhost:8080”查看页面效果,则显示“该页无法显示”的提示。
在Windows系统下安装、配置Tomcat
步骤0:安装JDK及配置JAVA_HOME、PATH等环境变量
到Oracle官方网站下载JDK的Windows专用安装程序后,执行安装,假定安装路径为“d:\java\jdk1.7”,则配置环境变量过程如下:
“我的电脑”右键“属性”(高级系统设置(环境变量。如图-12,图-13,图-14所示:
图 - 12
图 -13
图– 14
对“系统变量”做以下三个操作:
新建系统变量,变量名为“JAVA_HOME”,变量值为“D:\java\jdk1.7”。即JDK的安装路径的根路径。如图-15所示:
图– 15
新建系统变量,变量名为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib;%JAVA_HOME\
lib\tools.jar”。第一个为“.”点,代表当前路径,即在当前路径下寻找类,后面为安装的jdk中的jar文件的路径,中间用“;“分号隔开(Linux系统用”:“冒号分隔)如图-16所示。
图– 16
修改原有系统变量“Path“,将光标移动到变量值的最前面(注意,一定不要删除原有的变量值),添加”%JAVA_HOME%\bin;”。一定要以分号结束,作为与原有值的分隔标识。安装的Tomcat的bin目录下有很多可执行程序和命令,记录这个地址后,不管在任何目录下输入java和javac命令,系统都能找到对应的命令并执行。
图– 17
通过以上三个环境变量的设置以后,为了验证JDK是否配置成功,则通过在命令行中输入命令来检测。在“运行”窗口中输入“cmd”进入到命令行界面,输入“java -version”查看输出结果,如果提示“java version 1.7.X_XX”则代表配置成功。如图-18所示。
图 - 18
步骤一:下载及解压Tomcat
在apache网站的指定下载页面,选择适合Windows操作系统的Tomcat版本后下载。如图-19所示。
图 - 19
将下载的文件解压缩到指定路径。假定本次解压路径为“d:\java\tomcat7”,结果如图-20所示。注意“tomcat7”下面不再包含子文件夹,直接包含tomcat的各文件。
图 -20
步骤二:启动Tomcat
使用命令行工具,输入“d:”切换到D盘,再输入“cd d:\java\tomcat7\bin“进入到tomcat文件夹中的bin目录下,输入“startup”命令即可启动Tomcat。如图-21,22所示。
图– 21
图 - 22
打开浏览器输入”http://localhost:8080“验证启动成功。如图-23。
图 - 23
步骤三:关闭Tomcat
在命令行中输入“shutdown”命令可以关闭Tomcat。如图-24所示。
图 - 24
使用文本编辑工具开发第一个Servlet程序。
开发Servlet程序的步骤如下
不管是在Linux还是Windows系统下,按照以上五步即可完成Web程序的开发,区别只在于系统不同则实现对应步骤的命令不同。
Linux下开发第一个Web程序
步骤一:编写源文件
新建一个HelloServlet.java的文件,假定保存路径为“/home/soft01/java”。如图-25.
图– 25
文件的代码如图-26所示:
图 - 26
步骤二:编译HelloServlet.java文件
进入终端,输入“cd /home/soft01/java”命令,切换当前目录到HelloServlet.java文件所在的位置;输入“javac –d . HelloServlet.java”命令进行编译,-d参数代表编译结果的保存位置,“.”点符号代表当前目录,中间都有空格隔开,即编译HelloServlet.java文件,并将结果保存在当前目录;由于java源文件中使用了javax.servlet.*以及javax.servlet.http.*这两个包中的类,而这些类存在于我们解压的Tomcat目录中lib下的servlet-api.jar文件中,因此为了能够正确编译,需要在javac命令中添加“-cp”参数,说明一下这个servlet-api.jar文件所在的位置,所以javac命令调整为如下内容:
“javac –cp /home/soft01/java/apache-tomcat-7.0.6/lib/serlvet-api.jar –d . HelloServlet.java”
查看编译结果,会发现在当前目录中多了一个名字叫web的文件夹(源代码中有package web这句代码)及文件夹下的HelloServlet.class文件。
编译过程及结果如图-27,图-28所示:
图– 27
图– 28
步骤三:打包
打包即将工程各组件、文件以规定的目录结构进行整理。首先是在“/home/soft01/java”目录下创建整个应用的一个文件夹,暂定名称叫firstweb(可变),firstweb内包含一个叫做“WEB-INF”的文件夹,且名字不可变,“WEB-INF”下面包含一个叫做“classes”的文件夹,将刚刚编译好包含HelloServlet.class的web文件夹整体拷贝到“classes”文件夹下;同时,在“WEB-INF“文件夹下与“classes”同级别,添加一个名字叫做“web.xml”(名称不可变)的文件。具备了“WEB-INF”、“classes”、“web.xml”之后,打包步骤基本完成。生成的目录结构如图-29所示。
图– 29
编写web.xml文件时,内容可以参考tomcat安装目录下webapps/examples/WEB-INF
/web.xml文件。拷贝文件第一行,<web-app>、<servlet>、<servlet-mapping>节点即可,修改文件内容,与图-30保持一致。其中,两个servlet-name的名字要一致,servlet-class填写的是编译后的HelloServlet这个类的完整名称,带上包名。url-pattern内的值一定更要以斜杠“/”开头。
图 - 30
步骤四:部署
部署工程就是将整个应用拷贝到tomcat的webapps这个文件夹下面。拷贝完的结果如图-31所示。
图 - 31
步骤五:启动容器,访问Servlet查看结果
在终端中,输入“cd /home/soft01/java/apache-tomcat-7.0.6/bin”命令,切换到tomcat的bin目录;再输入“sh startup.sh”命令,启动Tomcat。
打开浏览器,输入“http://localhost:8080/firstweb/hello”回车,查看页面输出效果图-32所示。
图– 32
Windows下开发第一个Web程序
步骤一:编写源文件
新建java源文件,假定保存路径为“d:\java”,内容如图-33所示。
图 - 33
步骤二:编译HelloServlet.java文件
进入到命令行工具,输入命令“d:”切换盘符,输入命令“cd java”进入到HelloServlet.java源文件所在的目录,输入命令“javac –cp d:\java\tomcat7\lib\servlet-api.jar –d . HelloServlet.java”编译java文件到当前目录下。命令及输出结果如图-34,图-35所示。
图– 34
图– 35
步骤三:打包
按照如下结构进行整理应用的目录结构。
图– 36
详细结构可以参考图-29。web.xml文件内容参考图-30。
步骤四:部署
将整个firstweb文件夹拷贝到tomcat安装路径下的webapps文件夹下。如图-37所示。
图 - 37
步骤五:启动容器,访问Servlet查看结果
进入到命令行工具,输入“d:”切换盘符,输入“cd java\tomcat7\bin”进入到tomcat的工具目录,输入“startup”回车,启动tomcat。如图-38,图-39所示。
图– 38
图– 39
打开浏览器,输入“http://localhost:8080/firstweb/hello”查看运行结果。
图 - 40
本案例的完整代码如下所示:
HelloServlet.java代码:
package web; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HelloServlet extends HttpServlet{ public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>Hello Servlet</h1>"); out.close(); } }
web.xml文件代码:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>web.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
使用MyEclipse进行Web应用的开发。
在第一次使用MyEclipse进行Web应用的开发之前,需要将MyEclipse与解压后的Tomcat进行关联,也就是完成服务器的配置。
步骤一:为MyEclipse添加服务器配置
依据图-41至图-45所示步骤完成服务器配置
图– 41
图– 42
图– 43
图– 44
图– 45
配置成功后结果如图-46所示。
图– 46
可以通过点击“Start”按钮启动关联到的Tomcat,观察Console输出窗口会出现“Server startup in XXXX ms”的提示信息,代表服务器配置成功并能够正确启动。通过点击“Stop Server”按钮可以停止服务。
步骤二:新建Web工程
通过点击菜单“File”(“New”(“Web Project”新建一个Web工程,填写工程名信息如图-47后点击确定,生成工程。
图 - 47
步骤三:创建java类
在工程文件的“src”上右键,new一个class文件,填写包名“web”,填写类名“HelloServlet”后点击“Finish”,如图-48所示。
图– 48
类文件内容参考图-33。
步骤四:配置web.xml文件
点击工程中“WEB-INF”节点下的web.xml文件,点击屏幕下方的“Source”按钮切换编辑视图,改写文件内容如图-49所示。
图– 49
步骤五:部署工程到Tomcat
点击工具栏中的/图标进入到部署工程的界面,按照图-50至图-52所示顺序依次选择要部署的项目、部署到哪个服务器之后点击OK按钮完成部署。
图– 50
图– 51
图– 52
步骤六:启动服务器查看运行结果
点击工具栏中的/服务器图标下面“Tomcat7.X”对应的“Start”按钮启动服务器,观察控制台输出窗口中显示成功启动的信息后,打开浏览器,输入“http://localhost:8080/firstweb/hello“,查看运行结果。同图-40显示一样。
与“手动开发第一个Web项目“的完整代码相同。
使用MyEclipse开发Web项目的过程与手动编写完成的步骤是一样的,只是将一些步骤变成了自动完成,如编译、打包
获取请求数据包中的消息头中各键值对的名称和值,提交方式,协议,请求资源路径等信息,并输出到控制台中。
客户端发来的请求数据包到达服务器端以后会被解释为HttpServletRequest类型的对象,数据包中的数据会被存储到该类型的对象之中,所以借助于该对象提供的getHeaderNames(),getHeader(),getMethod(),getRequestURI()等方法即可获取这些信息。
实现此案例按如下步骤进行。
步骤一:新建web工程
点击菜单“文件”(“新建”(“Web Project”,填写信息如图-53所示,一般填写完工程名以后其他信息默认不用修改,部署的应用名会与工程名保持一致,但如果修改了部署名称以后,那么部署之后访问时注意资源路径要与修改后的名称保持一致。
图 - 53
步骤二:新建类RequestInfo.java
新建一个位于web包下面的RequestInfo.java的类,使得该类继承自HttpServlet抽象类,重写service()方法,代码如下。
package web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RequestInfo extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ } }
步骤三:调用request对象的方法获取消息头信息
package web; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ReqInfoServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //获取所有消息头的名称 Enumeration e = request.getHeaderNames(); while(e.hasMoreElements()){ //遍历Enumeration获取每一个消息头的名称 String headerName = e.nextElement().toString(); //输出消息头的名-值对儿信息 System.out.println(headerName+":"+request.getHeader(headerName)); } System.out.println("请求方式:"+request.getMethod()); System.out.println("请求的协议种类:"+request.getProtocol()); System.out.println("请求资源路径:"+request.getRequestURI()); System.out.println("请求的路径信息:"+request.getRequestURL()); System.out.println("请求的Servlet路径:"+request.getServletPath()); } }
步骤四:修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>reqInfoServlet</servlet-name> <!-- 类名要写完整,包含包名,注意大小写 --> <servlet-class>web.ReqInfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>reqInfoServlet</servlet-name> <url-pattern>/reqInfo</url-pattern> </servlet-mapping> </web-app>
步骤五:部署
点击工具栏上的“部署”图标,选择要部署的工程及“Add”按钮,选择要部署到的目标服务器后点击Finish。如图-54:
图– 54
提示部署成功后点击OK,如图-55:
图– 55
步骤六:启动服务,访问应用
通过点击工具栏中服务器图标,选择Tomcat7.X,点击Start启动服务器。打开浏览器在地址栏中输入“http://localhost:8080/servlet01/reqInfo”查看结果。如图-56:
图 - 56
ReqInfoServlet.java完整代码如下:
package web; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ReqInfoServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //获取所有消息头的名称 Enumeration e = request.getHeaderNames(); while(e.hasMoreElements()){ //遍历Enumeration获取每一个消息头的名称 String headerName = e.nextElement().toString(); //输出消息头的名-值对儿信息 System.out.println(headerName+":"+request.getHeader(headerName)); } System.out.println("请求方式:"+request.getMethod()); System.out.println("请求的协议种类:"+request.getProtocol()); System.out.println("请求资源路径:"+request.getRequestURI()); System.out.println("请求的路径信息:"+request.getRequestURL()); System.out.println("请求的Servlet路径:"+request.getServletPath()); } }
web.xml文件完成代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>reqInfoServlet</servlet-name> <!-- 类名要写完整,包含包名,注意大小写 --> <servlet-class>web.ReqInfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>reqInfoServlet</servlet-name> <url-pattern>/reqInfo</url-pattern> </servlet-mapping> </web-app>
实现访问Servlet之后,服务器端能够返回带有中文信息的页面。
通过response对象修改响应数据包中“content-type”消息头,从而设置浏览器的解码方式为支持中文信息的方式。
步骤一:新建类ResInfoServlet.java
在web包下新建类ResInfoServlet.java,在service方法中添加设置响应头的代码。如下所示:
package web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResInfoServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.print("能够输出中文信息的Servlet"); out.close(); } }
步骤二:修改web.xml,配置Servlet
在web.xml文件中增加对ResInfoServlet的配置。代码如下所示:
<servlet> <servlet-name>resInfoServlet</servlet-name> <servlet-class>web.ResInfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>resInfoServlet</servlet-name> <url-pattern>/resInfo</url-pattern> </servlet-mapping>
步骤三:重新部署工程,访问应用
重新部署工程后,在浏览器中输入合法地址查看页面结果如下:
图 - 57
ResInfoServlet.java文件的完整代码如下:
package web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResInfoServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.print("能够输出中文信息的Servlet"); out.close(); } }
web.xml文件的完整代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>reqInfoServlet</servlet-name> <!-- 类名要写完整,包含包名,注意大小写 --> <servlet-class>web.ReqInfoServlet</servlet-class> </servlet> <servlet> <servlet-name>resInfoServlet</servlet-name> <servlet-class>web.ResInfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>reqInfoServlet</servlet-name> <url-pattern>/reqInfo</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>resInfoServlet</servlet-name> <url-pattern>/resInfo</url-pattern> </servlet-mapping> </web-app>