企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> 主要讲解Tomcat的 安装与使用,讲解ubuntu版本和windows。 ### 下载与安装: 1)到apache官网。www.apache.org [http://jakarta.apache.org](http://jakarta.apache.org)(产品的主页) 2) 安装版:window (exe、msi) linux(rmp) 压缩版:window(rar,zip) linux(tar,tar.gz)建议下载压缩版 3)下载压缩版,解压到本地 解压后的文件夹如下:windows和linux下都是一样的。 ![1](https://box.kancloud.cn/2016-04-13_570ded254312f.png "") ### 运行和关闭tomcat #### windows启动软件: 到/bin目录下找到startup.bat ,双击这个文件 弹出命令窗口,显示如下:表示运行正常 ![2](https://box.kancloud.cn/2016-04-13_570ded25594e9.png "") #### ubuntu下启动软件: 到/bin目录下打开终端,输入命令:./startup.sh 显示信息如下: ![3](https://box.kancloud.cn/2016-04-13_570ded257eaaa.png "") #### 打开浏览器,输出以下地址 [http://localhost:8080](http://localhost:8080) 显示如下 ![4](https://box.kancloud.cn/2016-04-13_570ded2598a3f.png "") #### 关闭软件 windows下到/bin目录下找到/shutdown.bat,双击这个文件即可! ubuntu下在终端输入(在bin目录下):./shutdown.sh ### Tomcat常见问题: #### 闪退问题    原因:tomcat软件是java语言开发的。 tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOME的变量。这个变量的作用找到tomcat启动所需的jvm。 windows下:    解决办法: 到环境变量中设置JAVA_HOME的变量    JAVA_HOME= C:\Program Files\Java\jdk1.6.0_30 (注意别配置到bin目录下) ubuntu下:    解决办法: ~~~ $ sudo gedit /etc/environment #在environment中修改PATH,追加JDK路径,添加CLASSPATH与JAVA_HOME后如下: export JAVA_HOME=/usr/lib/jvm/jdk8 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib PATH="/usr/lib/jvm/jdk8/bin:/usr/local/sbin:/usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" ~~~ #### 端口占用的错误    原因: tomcat启动所需的端口被其他软件占用了!    解决办法:    a)关闭其他软件程序,释放所需端口    b)修改tomcat软件所需端口    c)找到并修改/conf/server.xml文件 ~~~ <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ~~~ ### Tomcat的目录结构: ~~~ |-bin: 存放tomcat的命令。 catalina.bat(sh) 命令: startup.bat(sh) -> catalina.bat(sh) start shutdown.bat - > catalina.bat(sh) stop |- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。 |-lib:支持tomcat软件运行的jar包。其中还有技术支持包,如servlet,jsp |-logs:运行过程的日志信息 |-temp: 临时目录 |-webapps: 共享资源目录。web应用目录。(注意不能以单独的文件进行共享) |-work: tomcat的运行目录。jsp运行时产生的临时文件就存放在这里 ~~~ ### 配置文件的修改: #### server.xml的修改 **端口,和编码的修改:** ~~~ <Connector port="8080" #这里修改端口 protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" #解决大多数中文编码问题/> ~~~ **修改host主机** ~~~ <Host name="localhost"#默认的主机名,这里修改后,还需修改系统的host文件 appBase="webapps"#默认存放工程的文件夹 unpackWARs="true" autoDeploy="true"> ~~~ **修改访问工程的路径**不建议修改: 打开server.xml,在这个主机中增加一个Context即可 即可以完成项目发布,之后通过?localhost:8080/hello就可以访问该目录 ![5](https://box.kancloud.cn/2016-04-13_570ded25bed03.png "") Context表示访问的虚拟路径,path表示要访问的网页下文路径,docBase表示要访问的文件夹所在路径,reloadable表示是否在修改之后进行重新启动,如果使用eclipse开发建议设置为false,因为在eclipse中会通过debug进行启动。 #### web.xml的修改 **主页的修改** ~~~ <welcome-file-list> <welcome-file>index.html</welcome-file>#一般创建web项目时默认的主页是index.html index.jsp <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file>#;你可以修改成你的将你的主页放置在工程根目录就行; <welcome-file>hello.jsp</welcome-file>#比如加一个你自己的主页; </welcome-file-list> ~~~ **是否列出列表** listings表示是否在显示页面时打开文件列表,建议在调试时打开,方便查询一些特殊的网页文件,比如文件名太长的等; ~~~ <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value>#将此去改为true </init-param> <load-on-startup>1</load-on-startup> </servlet> ~~~ 修改后例子: ![61](https://box.kancloud.cn/2016-04-13_570ded25d23e3.png "") ### web应用和目录结构: ~~~ |- WebRoot : web应用的根目录 |- 静态资源(html+css+js+image+vedio) |- WEB-INF : 固定写法。 |-classes: (可选)固定写法。存放class字节码文件 |-lib: (可选)固定写法。存放jar包文件。 |-web.xml 注意: 1)WEB-INF目录里面的资源不能通过浏览器直接访问 2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中。 ~~~ ### URL简介: ~~~ URL全名叫统一资源定位符,用于定位互联网的资源。 问题: http://localhost:8080/examples/hello.html http:// 协议。http协议。 localhost 域名。为了找到IP地址。 本地域名: localhost 外部域名:www.baidu.com 8080: tomcat默认的端口 3306:mysql数据库的端口 1521: orace数据库的端口。 /examples: web应用的名称。默认情况下,在webapps目录下找 /hello.html : 资源名称。 ~~~ ### 手动开发动态资源(web) #### 最简单的例子: 在Tomcat文件下的webapps/examples 文件下建立一个html的文件,比如我建立了hello.html: ~~~ I am peace this is test ~~~ 运行Tomcat,在浏览器里面输入[http://localhost:8080/examples/hello.html](http://localhost:8080/examples/hello.html).显示如下: ![6](https://box.kancloud.cn/2016-04-13_570ded25ec9b3.png "") #### 手动servlet的例子: Servlet : 用java语言来编写动态资源的开发技术。 Servlet类只能交给tomcat服务器运行!(开发者自己不能运行) Servlet手动编写步骤: 1. 导入servlet的jar包:在Tomcat目录的lib文件下: ![7](https://box.kancloud.cn/2016-04-13_570ded260dc78.png "") 2. 编写一个类,继承HttpServlet并覆盖doGet的方法:如下: ~~~ package com.rlovep.servlet; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Hander extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解决中文乱码问题 resp.setContentType("text/html;charset=utf-8"); //向浏览器输出时间 resp.getWriter().write("这是第一个servlet程序。当前时间为:"+new Date()); } } ~~~ 1. 在工程目录下找到build文件,将对应类class的字节码(包括包文件)拷贝到:apache-tomcat-8.0.26/webapps/examples/WEB-INF/classes下 ![8](https://box.kancloud.cn/2016-04-13_570ded2626e51.png "") 1. 修改/examples/WEB-INF/web.xml的文件: 增加如下内容: ~~~ <!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>HelloServlet</servlet-name> <!-- servlet类名: 包名+简单类名--> <servlet-class>com.rlovep.servlet.Hander</servlet-class> </servlet> <servlet-mapping> <!-- servlet的内部名称,和上面的名称保持一致!!!--> <servlet-name>HelloServlet</servlet-name> <!-- servlet的访问名称: /名称 --> <url-pattern>/hello</url-pattern> </servlet-mapping> ~~~ 1. 在浏览器中输入:[http://localhost:8080/examples/hello](http://localhost:8080/examples/hello).显示如下: ![9](https://box.kancloud.cn/2016-04-13_570ded26420be.png "") 建立成功 ### 工具开发动态资源 1. 创建web project (javaweb工程)ubuntu下是建立Dynamic web project 2.在WebRoot下建立静态资源文件:index.html 3.在src下建立动态资源文件 3.1 new -> Servlet( servlet的代码生成器) 3.2 写pacakge -> class名 -> 修改mapping url ![10](https://box.kancloud.cn/2016-04-13_570ded265ab12.png "") 1. 启动tomcat服务器 1. 访问servlet 主页:[http://localhost:8080/HttpProtocl](http://localhost:8080/HttpProtocl) ![11](https://box.kancloud.cn/2016-04-13_570ded267a7f1.png "") servlet:[http://localhost:8080/HttpProtocl/Auto](http://localhost:8080/HttpProtocl/Auto) ![12](https://box.kancloud.cn/2016-04-13_570ded268dd6e.png "") 程序下载地址 [点击这里](https://github.com/wpeace1212/javaBlog/tree/master/HttpProtocl/src) 来自一条小鲨鱼(rlovep.com)