目录
- WEB服务器介绍
- Tomcat服务器介绍
- Tomcat下载、安装、启动
- 端口修改
- 手动创建静态web应用
- Eclipse配置Tomcat
- 使用eclipse开发Javaweb项目
- 注意:eclipse部署项目后,项目文件并不在tomcat中的webapps文件夹下
- tomcat加入项目后首次启动报错:
Java项目启动时候报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 解决办法:Java项目启动时候报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 解决办法 - 大象无形01 - 博客园
一.WEB服务器介绍
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。
注意:web服务器、Servlet引擎/JSP引擎等于Servlet/JSP容器
- Tomcat是常见的免费的web服务器,是一个Servlet/JSP容器.(Web服务器是可以向发出请求的浏览器提供文档的程序)。
- JSP引擎与JSP容器指的是同样的东西,是用来管理和运行Web应用程序的软件,而安装了JSP引擎/Servlet引擎的计算机就是Web服务器。
- Servlet容器是运行Servlet、jsp、filter等的软件环境。主要任务是创建Servlet、管理servlet的生命周期
- Jsp经编译后就变成了Servlet。(Jsp的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将Jsp的代码编译成JVM能够识别的java类)
二.Tomcat服务器介绍
一.概念
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此许多WEB服务器都是采用Tomcat。
二.程序管理
- Tomcat是常见的免费的web服务器.(file:d:/test.html与http://12306.com/index.html 这样的形式的差别就是应为web服务器的差别)
- Tomcat提供另一个管理程序:manager,用于部署到Tomcat服务器中的web应用程序。
- 要访问manager web应用程序,需要添加具有管理员权限的账号,编辑conf目录下的Tomcat-users.xml文件,添加manager角色,设置用户名和密码
三.目录结构
tomcat logs 目录下各日志文件的解析
tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份。可以帮助我们更好的找出错误。
几个重要文件说明:
- catalina.out:linux下所有的日志都在catalina.out中
- catalina.日期.log
主要是记录tomcat启动时候的信息;
启动的JVM参数以及操作系统等日志信息; - host-manager.日期.log
估计是放tomcat的自带的manager项目的日志信息的,也没有看到有什么重要的日志信息。 - localhost.日期.log
类似于catalina日志,可是信息没有catalina全; - localhost_access_log.日期.txt
存放访问tomcat的请求的所有地址以及请求的路径、时间,请求协议以及返回码等信息(重要) - manager.日志.log
估计也是manager项目专有的日志文件,看不出有什么重要的信息。
四.web程序结构
说明:
- 一个web应用程序是由一组Servlet,HTML页面,类,以及其他的资源组成的运行在web服务器上的完整的应用程序,以一种结构画的层次的目录形式存在
- 组成web应用程序的这些文件要部署在相应的目录层次中,根目录代表整个web应用程序的“根”
- 通常将web应用程序的目录放在tomcat/webapps目录下,在webapps目录下的每一个子目录都是一个独立的web应用程序,子目录的名字就是web应用程序的名字,也即是web应用程序的“根”。用户通过web应用程序的“根”来访问应用程序的资源。
三.Tomcat下载、安装、启动
- 官网下载
- 安装
注意有安装版和解压版,本人使用的解压版 - 解压后,双击bin/startup启动
- 成功启动Tomcat后,通过访问http://localhost:8080/便可以使用Tomcat自带的一些web应用了。假如一切顺利的话,应该能够看到以下的页面:
- 点击Manager App,可以看到发布的项目,需要设置密码,具体步骤linux下安装tomcat-8.5_yiguang_820的博客-CSDN博客_linux安装tomcat8.5
四.端口修改
端口大全:TCP/UDP常见端口
tomcat默认的端口号是8080,可以通过配置把端口号修改成80
- tomcat的端口配置相关信息在 Tomcat安装目录\conf\server.xml中
server.xml 记录了非常多的tomcat配置信息,其中就包括端口 - 重启tomcat,80端口就是web服务默认的端口号,所以就不需要显式写这个端口号了。
- 端口被占用
- 方法一:可以修改端口
- 方法二:找到端口被占用的程序是哪一个 ,然后再关闭对应的程序即可
- 步骤 1 : 查看80端口被哪些程序占用了
使用命令 netstat -ano|findstr "80" ,查看 端口号包含"80"的占用情况
查询结果找到 80,8009,8005 (这三个都包含80)。
对应的pid(process id) 进程id 是182 - 步骤2:根据pid(进程id) 查询对应的应用程序
使用命令: tasklist|findstr "1828",1828根据上一步找到的对应的pid
发现是一个java.exe程序占用了80端口 - 步骤3:根据名称 结束该程序
最后使用 taskkill /f /t /im java.exe,结束java.exe
结束成功会提示:
成功: 已终止 。。。
- 步骤 1 : 查看80端口被哪些程序占用了
五.手动创建静态web应用
详细步骤:
- 在eclipse新建一个Java project
- 在Java项目下创建web开发的目录结构
- 将servlet-api.jar包放在lib目录下,并导入。(servlet-api.jar在 apache-tomcat-8.5.39\lib 目录下)
- 在src下新建test包,创建一个TestServlet类
package test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class TestServlet implements Servlet{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { String name=request.getParameter("username"); String password=request.getParameter("pwd"); response.setContentType("text/html"); response.setCharacterEncoding("utf8"); PrintWriter out=response.getWriter(); out.println("<html><head></head>"); out.println("<body>"); out.println("<h1>使用get方法读取数据</h1><p>用户名:"+name+"</p><p>密码:"+password+"</p>"); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } }
- 需要的将TestServlet类编译后的class文件(含包)复制到classes的目录下
- 方法一:手动复制
- 先复制一份servlet-api.jar放在TestServlet.java文件的同一目录下
- 在命令行编译的时候带上classpath的路径如下:
javac -classpath servlet-api.jar TestServlet.java - 然后将编译后的class文件放在classes目录下(需要带上包)
- 方法二:使用Eclipse可以如下操作
步骤:
项目右键->properties->Java Build Path->Source->右下角的 Brower-> 指定位置是 helloServelt1/helloServlet/WEB-INF/classes。
为什么要有这一步? 在ecilpse中默认输出的class是在bin目录下,但是tomcat启动之后,在默认情况下,不会去bin目录找这些class文件,而是到WEB-INF/classes这个目录下去寻找。 所以通过这一步的配置,使得eclipse的class文件输出到WEB-INF/classes目录下,那么这样就和tomcat兼容了。
- 方法一:手动复制
- 在WebContent目录下新建一个login.html文件:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录页面</title> </head> <body> <form action="login"> 用户名:<input type="text" name="username"/></br> 密码:<input type="password" name="pwd"/></br> <input type="submit" value="登录"/> </form> </body> </html>
- 配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>Servlet1</servlet-name> <servlet-class>test.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.html</welcome-file> <welcome-file>login.xhtml</welcome-file> <welcome-file>login.htm</welcome-file> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>
- 把helloServlet目录(注意不是helloServlet1项目)复制到Tomcat的webapps目录下
- 在浏览器的地址栏中输入:http://localhost:8080/helloServlet/login.html
六.Eclipse配置Tomcat
- 使用javaee版的eclipse开发动态的web工程(Javaweb项目)
- 把开发选项切换到Javaee
- 可以在window -> show view 中找到package Explorer,并把其拖到开发取得左边
- 将Eclipse关联安装的Tomcat
File ->new -> other -> server (选择安装的版本号,然后关联到Tomcat安装的目录) - 在Window ——> show view —>控制台中servers—>tomcat可以关闭、开启、修改
- 完成
七.使用eclipse开发Javaweb项目
- 新建一个Dynamic Web Project
- 将web.xml放在WEB-INF目录下
- 在WebContent目录下创建一个hello.jsp文件,添加一行如下代码:
<b>hello world</b>
- 项目结构
- 可以通过run on server来运行web项目(如果控制台server->tomcat是关闭的,运行项目的时候会自动开启)
- 同样可以将此项目复制到Tomcat安装目录下/webapps下访问
八.eclipse部署项目后,项目文件并不在tomcat中的webapps文件夹下
一、发现问题
在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没有出现所建立的工程名字。
二、验证
很明显项目并没有自动部署到Tomcat的Webapps中而是部署在了别的容器中。在内置浏览器中输入http://localhost:8080/webDemo/login.jsp可正常打开。但在外部浏览器上打开http://localhost:8080时确没有出现所期望的小猫画面。
三、原因
eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下的.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps中,tmp1文件夹里面存放着该项目的信息。
四、修改
为了使项目默认部署到tomcat安装目录下的webapps中,show view—>servers—>找到需要修改的tomcat—>右击
- 停止eclipse内的Tomcat服务器(stop)
- 删除该容器中部署的项目(add and remove)
- 清除该容器相关数据(clean)
- 打开tomcat的修改界面(open)
- 找到servers location,选择第二个(User tomcat Installation)
- 修改deploy path为webapps
- 保存关闭
需要说明的是①②③必须操作,否则下面的步骤会被置灰无法操作。
九.tomcat加入项目后首次启动报错
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
这种情况了,
解决办法:
首先查看环境变量:
vim /etc/profile
找到JAVA_HOME
把路径记录下,编辑文件/usr/local/tomcat/bin/catalina.sh (有可能你的路径和我的不一样,按照自己的路径来修改)
添加到文件中的第二行