tomcat安装启动配置

服务器:

服务器的概念非常的广泛,它可以指代一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以指代用于部署网站的应用。我们这里说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,一个应用,通过软硬件的结合从而达到发布应用(工程)的作用,让用户可以通过浏览器访问我们的应用。

常见的应用服务器,请看下表:

  • 重量级:重量级服务器实现了所有的JavaEE规范
  • 轻量级:轻量级服务器实现了部分JavaEE规范
服务器名称说明
weblogic实现了javaEE规范,重量级服务器,又称为javaEE容器
websphereAS实现了javaEE规范,重量级服务器。
JBOSSAS实现了JavaEE规范,重量级服务器。免费的。
Tomcat实现了jsp/servlet规范,是一个轻量级服务器,开源免费。

Tomcat:

Tomcat是Apache软件基金会的一个核心项目,由Apache、Sun和其它公司共同开发而成的。由于有了Sun公司的参与支持,最新的Servlet、JSP规范总是能在Tomcat中得到体提现,因为Tomcat技术先进、性能稳定,而且免费,所以深受Java爱好者并得到了部分软件开发商的认可,已成为目前开发企业JavaWeb应用的最佳Servlet容器选择之一。

Tomcat各版本的技术支持:

Servlet SpecJSP SpecEL SpecWebSocket SpecAuthentication (JASIC) SpecApache Tomcat VersionLatest Released VersionSupported Java Versions
6.03.15.0TBDTBD10.1.x10.1.0-M6 (alpha)11 and later
5.03.04.02.02.010.0.x10.0.128 and later
4.02.33.01.11.19.0.x9.0.548 and later
3.12.33.01.11.18.5.x8.5.727 and later
3.12.33.01.1N/A8.0.x (superseded)8.0.53 (superseded)7 and later
3.02.22.21.1N/A7.0.x (archived)7.0.109 (archived)6 and later(7 and later for WebSocket)
2.52.12.1N/AN/A6.0.x (archived)6.0.53 (archived)5 and later
2.42.0N/AN/AN/A5.5.x (archived)5.5.36 (archived)1.4 and later
2.31.2N/AN/AN/A4.1.x (archived)4.1.40 (archived)1.3 and later
2.21.1N/AN/AN/A3.3.x (archived)3.3.2 (archived)1.1 and later

Mac版本下载:

下载地址:http://tomcat.apache.org/
在这里插入图片描述

启动Tomcat:

  • 下载好了解压到指定路径,并进到bin目录下
  • 打开终端,把bin目录拖到cd后面

启动:

  • Windows启动:startup.bat Windows
  • Linux/Mac启动:./startup.sh

停止:

  • Windows停止:shutdown.bat Windows
  • Linux/Mac停止:./shutdown.sh
# cd后面是你的tomcat路径
cd /Users/itzhuzhu/Desktop/Java/plug/apache-tomcat-10.0.2/bin# 启动tomcat
./startup.sh# 关闭Tomcat
./shutdown.sh

访问http://localhost:8080/可以看到这样的就说明启动了
自己部署项目的话就放在在webapps目录下浏览器访问对应的路径就可以了
为什么需要写8080才可以访问

  • 正常情况下访问一个网站都是只要输入域名就可以了,但是Tomcat提供的是http服务,而http的端口默认是80,所以为了和http的端口贴近,就默认是8080了,而且在Linux里不是root用户的话是不能使用1024以内的端口号的在这里插入图片描述

Linux版本下载与安装:

  • 下载Tomcat,和Mac版一样,用tar.gz的上传到Linux
  • 在crt上 使用 alt+p,将windows上的软件拖进去即可(root目录)
  1. 找个地方新建一个tomcat文件夹
mkdir tomcat
  1. 移动 tomcat…tar.gz 到 /usr/local/tomcat
mv apache-tomcat-8.5.32.tar.gz /usr/local/tomcat/
  1. 进入/usr/local/tomcat目录,解压Tomcat
cd /usr/local/tomcat tar -xvf apache-tomcat-8.5.32.tar.gz
  1. 进入 /usr/local/tomcat/apache-tomcat-8.5.32/bin
cd /usr/local/tomcat/apache-tomcat-8.5.32/bin
  1. 启动tomcat
./startup.sh
  1. 修改防火墙的规规则
# 放行8080 端口,修改配置文件
cd /etc/sysconfig
vi iptables
# 复制(yy , p)	-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# 改成
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
# 重启加载防火墙或者重启防火墙
service iptables reload  
# 或者
service iptables restart

Tomcat目录结构:

在这里插入图片描述

Tomcat异常:

启动问题:

  1. 启动一闪而过
  • 原因:没有配置环境变量。
  • 解决办法:配置上JAVA_HOME环境变量
  1. Address already in use : JVM_Bind
  • 原因:端口被占用
  • 解决办法:修改conf文件下的server.xml配置文件修改端口号,(修改69行的port=”8080″)修改完再启动
  1. 启动产生很多异常,但能正常启动
  • 原因:Tomcat中部署着很多项目,每次启动这些项目都会启动。而这些项目中有启动报异常的。
    解决办法:
  • 找到报异常的项目,就把它从发布目录中移除。
  • 不能确定报异常的项目,就重新解压一个新的Tomcat。
  1. 启动乱码
  • 原因:可能和你的控制台的字符集不匹配
    解决办法:
  • 打开conf下的logging.properties的配置文件,47行的UTF-8改成GBK,或者GBK改成UTF-8

IDEA集成Tomcat:

在这里插入图片描述
在这里插入图片描述

新建项目就可以使用Tomcat了在这里插入图片描述
创建完是这样的
在这里插入图片描述
URL:自己随便写,把下面两个改为更新和资源便于后续更新时不需要重启服务器
在这里插入图片描述
都配置完毕,就可以启动Tomcat了
在这里插入图片描述
Tomcat报错:java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
报错内容如下,

类型 异常报告消息 实例化Servlet类[org.springframework.web.servlet.DispatcherServlet]异常描述 服务器遇到一个意外的情况,阻止它完成请求。例外情况jakarta.servlet.ServletException: 实例化Servlet类[org.springframework.web.servlet.DispatcherServlet]异常org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:354)org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:383)org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:863)org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1682)org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.base/java.lang.Thread.run(Thread.java:834)
根本原因。java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletjava.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)java.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)java.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:354)org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:383)org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:863)org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1682)org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.base/java.lang.Thread.run(Thread.java:834)
根本原因。java.lang.ClassNotFoundException: javax.servlet.http.HttpServletorg.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1445)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)java.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)java.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)java.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2499)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:873)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1409)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:354)org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:383)org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:863)org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1682)org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.base/java.lang.Thread.run(Thread.java:834)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看

解决:
1、更换Tomcat版本,我是10版本换成了9就没问题了,不知道为什么。
2、网上说要加依赖,这个没试,

	<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>

Tomcat部署项目找不到war包:

在我们启动项目时发现tomcat配置里找不到war包,这个时候启动就会有问题。把下面的操作跟着做一遍即可。
在这里插入图片描述
1、首先找到项目结构
在这里插入图片描述

2、找到工件,点击添加
在这里插入图片描述

3、在工件中添加web应用程序,选择基于模块在这里插入图片描述
然后会弹出弹框,点击确定
在这里插入图片描述
4、这个时候的配置如图所示,点击确定即可
在这里插入图片描述
5、回到Tomat配置文件中,点击添加工件就会出现war包了
在这里插入图片描述
点击确定,到这里就配置好了
在这里插入图片描述

JavaWeb应用目录结构详解

Tomcat创建好以后会自动创建几个目录

  • src:存放源代码的
  • web:存在项目相关资源的(html、css、js、jsp、图片等)
  • WEB-INF:存放相关配置的(web.xml等),如果有web.xml或者.class文件时,该目录必须存在,且严格区分大小写。该目录下的资源,客户端是无法直接访问的。目录中内容如下:
  • classes:web应用的class文件(加载顺序:我们的class,lib目录中的jar包,tomcat的lib目录中的jar包。优先级依次降低)
  • lib:web应用所需的jar包(tomcat的lib目录下jar为所有应用共享)
  • web.xml:web应用的主配置文件

Tomcat启动报错:java.net.BindException

报错内容:没复制完,当时还有别的内容,反正一般起不来基本都是端口冲突的问题,改端口或者kill就行了。有时候是因为刚安装Tomcat然后启动访问8080测试,当时忘记关闭,然后又去IDEA集成Tomcat,就会遇到冲突的问题。

org.apache.catalina.LifecycleException: 协议处理程序初始化失败 at org.apache.catalina.connector.Connector.initInternal(Connector.java:1059) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:556) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1012) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:747) at org.apache.catalina.startup.Catalina.load(Catalina.java:769) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)

Tomcat更改端口号:

Tomcat服务器主配置文件中配置着访问端口,它在配置文件中写的值是:8080。但是它不是Tomcat的默认端口。我们此处说的默认端口是,当使用默认值的时候,端口号可以省略。Tomcat的默认端口是80

通过在主配置文件中添加标签实现,在conf的目录下有一个server.xml的配置文件,如果想改端口号就找到这个

<!-- 改成80端口号的话就不需要输入localhost:8080了,只需要输入localhost就可以发布正式项目的时候都是需要改为80端口号的
--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

Tomcat配置虚拟目录:

作用:可以发布任意目录下的项目

  1. 通过在主配置文件中添加标签实现。
    在server.xml的元素中加一个元素。
    ​ path:访问资源虚拟目录名称 。URL名称可以随便起,但是必须在前面加上一个/
    ​ docBase:项目真实存在的路径。
<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /><!-- 配置了这个就可以发布指定路径下的项目,但是一般还是都放在webapps下 --><Context path=”” docBase=”/Users/itzhuzhu/Desktop/Java”/></Host>
  1. 通过写一个独立配置文件实现。
    写一个独立的xml文件,该文件名可以随便起。在文件内写一个元素。该文件要放在Tomcat目录中的conf\Catalina\localhost\目录下。需要注意的是,在使用了独立的配置文件之后,访问资源URI就变成了/+文件的名称。而Context的path属性就失效了

Tomcat编辑虚拟主机:

编辑server.xml配置文件,找到在<Engine>元素在元素中添加一个

<!-- 会在localhost访问的时候,会到webapps下找到webdemo这个项目 --><Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"Context path ="" docBase="webdemo"></Host>

其中:

  • name:指定主机的名称
  • appBase:当前主机的应用发布目录
  • unparkWARs:true启动时是否自动解压war包
  • autoDeploy:是否自动发布
  • docBase:项目的名称

改完server.xml后还要修改电脑的hosts文件,加上host中name的值,如果是配置域名的话就把name的值改为域名地址,然后下面绑定域名就可以了

127.0.0.1 localhost

Tomcat Server处理一个http请求的过程:

假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp

  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得

  2. Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应

  3. Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host

  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)

  5. localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context

  6. Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)

  7. path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet

  8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类

  9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

  10. Context把执行完了之后的HttpServletResponse对象返回给Host

  11. Host把HttpServletResponse对象返回给Engine

  12. Engine把HttpServletResponse对象返回给Connector

  13. Connector把HttpServletResponse对象返回给客户browser

startup.bat详解:


if "%OS%" == "Windows_NT" setlocal //判断当前系统是否是window系统rem --------------------------------------------------------------------------- //rem 是注释(下同)rem Start script for the CATALINA Serverremrem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not definedset CURRENT_DIR=%cd% //设置当前目录if not "%CATALINA_HOME%" == "" gotogotHome //如果设置了CATALINA_HOME环境变量 ,就直接到下面的gotHome处set CATALINA_HOME=%CURRENT_DIR% //如果没有设置CATALINA_HOME,就设置CATALINA_HOME为当前目录(其实这里她假设你进入tomcat的安装目录)if exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome//判断一下catalina.bat是否找到了,找到了就直接到下面的gotHome处cd .. //这里他是假设你开始已经进入到了tomcat的bin目录,所以就退到上一级目录set CATALINA_HOME=%cd%//现在再设置CATALINA_HOME为tomcat的安装目录cd %CURRENT_DIR% //这里是进入dos的当前目录:gotHomeif exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome //再次判断catalina.bat是否找到了,找到了就直接到下面的okHome处,没有的话,就只能提示你啦!echo The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomeset EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat //设置要执行的文件rem Check that target executable existsif exist "%EXECUTABLE%" gotookExec //再次判断catalina.bat是否找到了,找到了就直接到下面的okExec处,没有的话,就提示。echo Cannot find %EXECUTABLE%echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS= //这里是设置参数:setArgsif ""%1""=="""" gotodoneSetArgs //判断参数是否加入完成set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //将参数组成一行,接在后面shiftgotosetArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS% //执行catalina.bat,最好将这行改为:echo "%EXECUTABLE%" start %CMD_LINE_ARGS% 以便阅读、理解本文件的作用:end//这个批处理文件,主要是正确的找到catalina.bat,并且执行。当把tomcat解压到一个地方时,通常是设置一个CATALINA_HOME的环境变量,执行这个文件时,就很容易找到 catalina.bat
如果没有设置CATALINA_HOME的环境变量,那么你需要在dos中进入tomcat的安装目录,或者bin...子目录,再执行这个文件,如果在其他目录,将会出现提示找不到文件。修改startup.bat,使其不依赖JAVA_HOM和CATALINA_HOME变量的方法:SET JAVA_HOME=JDK目录
SET CATALINA_HOME=解压后Tomcat的目录例如:set JAVA_HOME=D:\Program Files\java\jdk1.6.0_21set CATALINA_HOME=D:\Program Files\apache-tomcat-6.0.29

web.xml详解:

<web-app>    
<display-name></display-name>定义了WEB应用的名字    <description></description> 声明WEB应用的描述信息    <context-param></context-param> context-param元素声明应用范围内的初始化参数。    <filter></filter> 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。    
<filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。 <listener></listener>servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知.Listener元素指出事件监听程序类。    <servlet></servlet> 在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。    <servlet-mapping></servlet-mapping> 服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。    但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。    <session-config></session-config> 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。    可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。    <mime-mapping></mime-mapping>如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。<welcome-file-list></welcome-file-list> 指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件。  <error-page></error-page> 在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。    <taglib></taglib> 对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置,而不用编辑使用这些文件的JSP页面。  <resource-env-ref></resource-env-ref>声明与资源相关的一个管理对象。 <resource-ref></resource-ref> 声明一个资源工厂使用的外部资源。<security-constraint></security-constraint> 制定应该保护的URL。它与login-config元素联合使用   <login-config></login-config> 指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。  <security-role></security-role>给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。  <env-entry></env-entry>声明Web应用的环境项。 <ejb-ref></ejb-ref>声明一个EJB的主目录的引用。 < ejb-local-ref></ ejb-local-ref>声明一个EJB的本地主目录的应用。   </web-app>  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS在页面限制checkbox最大复选数

应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns"…

c语言 二维数组 文库,c语言二维数组练习题

c语言二维数组练习题 (3页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分完成下列程序代码完成下列程序代码1、 将二维数组(5 行 5 列)的右上半部分置零。 即&#xff1a;1234510000678910…

android陀螺仪轨迹,陀螺仪轨迹法长距离管道测量精度实测分析

陀螺仪轨迹法长距离管道测量精度实测分析陀螺仪轨迹法用于非开挖管道的精准坐标与位置测量已被电力与燃气等行业逐步了解与接受&#xff0c;近两年不断被引入到城市地下管线探测及电力与燃气管道验收标准中。由于管道埋于地下往往不能眼见为实&#xff0c;作为一种新的测量方式…

Spring IOC详解与配置

Spring&#xff1a; 框架&#xff1a; 具有一定功能的半成品软件&#xff0c;基于框架会节省开发成本 框架作用&#xff1a; 提高开发效率、复用性、编写规范、节约维护成本、解耦底层实现原理 Spring&#xff1a; Spring是分层的JavaSE/EE应用full-stack轻量级开源框架Sprin…

android8.0的蓝牙版本,android o 新特性详解 安卓8.0蓝牙音频增强以及更加可爱的表情包...

android 8.0什么时候推出&#xff1f;有哪些新特色&#xff1f;很多安卓用户非常想知道答案吧&#xff01;不用着急&#xff0c;下面是大麦子小编整理出来的安卓8.0新特性详解&#xff0c;希望可以帮到大家。有媒体近日曝光了有关谷歌Pixel XL 2手机会首发Android 8.0系统。现在…

DOM初级篇

DOM是什么、作用、与javascript&#xff1f; DOM是对HTML文档的访问和操作&#xff0c;对文档的增删改查。 DOM相当于是javascript一个类&#xff0c;这个类中提供了多种操作HTML的方法&#xff0c;也可以说DOM是依附在JavaScript上进行操作的。 一、标签的查找命令&#xff1b…

vs2019开发android应用,VS 2019开发APP(一)界面和代码

1.界面在Resources>layout>目录下的*.xml文件就是界面文件2.关联界面接下来&#xff0c;通过将支持代码插入到 MainActivity 类中来添加代码以关联用户界面。在 MainActivity 类中找到 OnCreate 方法&#xff0c;在其中添加关联按钮代码如下&#xff1a;protected overri…

oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...

本文将为您描述layui表格字段表格显示不全(自适应),具体操作方法:好记性不如烂笔头。本来就是没什么好记得东西&#xff0c;下次再用时已经想不起来了。问题如下&#x1f41f;使用layui表格&#xff0c;表格字段显示不全&#xff0c;如果超出分配的位置&#xff0c;就会显示省略…

使用 VSCode 编写 .NET Core 项目之初体验

注&#xff1a;本文在根据 微软官方文档指导下&#xff0c;根据自己的学习中整理&#xff0c;并不完全照搬文档&#xff0c;但也大体和文档学习路线相似&#xff0c;主要为记录学习过程。 官方学习地址&#xff1a; https://code.visualstudio.com/docs/other/dotnet https://d…

html模板安装到织梦,织梦网站安装教程 织梦模板通用安装图文教程

织梦模版怎么安装使用呢 下面就把我的经验分享给大家解压文件上传到服务器指定根目录输入主域名访问“例如&#xff1a;//www.jb51.net/install”步骤1&#xff1a;勾选同意协议&#xff0c;点击继续按钮。步骤2&#xff1a;检查系统环境和文件权限&#xff0c;确定权限正确才能…

金乡高考成绩查询2021,金乡一中举行2021届高三年级一模成绩分析暨表彰大会!现场颁奖...

集思广益查缺补漏&#xff0c;全力以赴保驾护航。为增强备考紧迫性&#xff0c;提高备考有效性&#xff0c;激发师生积极性&#xff0c;2021年3月22日晚&#xff0c;山东省金乡一中2021届高三年级一模成绩分析暨表彰大会&#xff0c;在文峰楼二楼报告厅召开&#xff0c;本次会议…

匿名类

一、匿名类&#xff1a;[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思&#xff0c;我匿了 在开发中&#xff0c;我们有时会像下面的代码一样声明一个匿名类&#xff1a;可以看出&#xff0c;在匿名类的语法中并没有为其命名&#xff0c;而是直接的一个new { }就完事了。从外部看来…

MySQL— 进阶

目录 一、视图二、触发器三、函数四、存储过程五、事务 一、视图 视图是一个虚拟表&#xff08;非真实存在&#xff09;&#xff0c;其本质是【根据SQL语句获取动态的数据集&#xff0c;并为其命名】&#xff0c;用户使用时只需使用【名称】即可获取结果集&#xff0c;并可以将…

HTML中del标记是什么意思,HTML del标记

本文概述HTML 标记用于表示已从文档中删除/删除的文本范围。它用作已删除内容的标记。浏览器通常通过在已删除的文本上打一行来呈现它, 尽管可以使用CSS属性更改它。注意&#xff1a;要标识已删除的文本和插入的文本, 请使用带有的标记, 该标记将在文档中显示已删除和插入的文本…

进制原码反码补码

进制&#xff1a; 概念&#xff1a; 进制&#xff1a;指进位制&#xff0c;是人们规定的一种进位方式&#xff0c;表示某一位置的数看&#xff0c;运算时是逢*进一位。十进制是逢十进一&#xff0c;二进制是逢二进一。以此类推。学习的目的就是为了数据运算过程理解的更加深刻…

什么是位运算符

位运算符&#xff1a; 概念&#xff1a; 位运算符指的是二进制位的运算&#xff0c;先将十进制数转成二进制后再进行运算。 在二进制位运算中&#xff0c;1表示true&#xff0c;0表示false。 <<有符号左移运算&#xff1a;&#xff0c;二进制位向左移动, 左边符号位丢弃…

鸿蒙开发工具下载设置Mac

下载工具&#xff1a; 首先到网站注册开发者身份及实名认证&#xff1a;https://www.harmonyos.com/cn/ 然后选择对应的系统下载开发工具 点击跳转下载 会自动下载一些开发语言环境&#xff0c;然后一路下一步就可以了 点击第一个 选择第二个带Java的 勾选Application Devic…

封装this关键字

封装&#xff1a; 封装概念&#xff1a;封装是面向对象三大特征之一&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff0c;目的就是隐藏实现细节&#xff0c;仅对外暴露公共的访问方式封装原则 将类的某些信息隐藏在类内部&#xff0c;不允许外部程序直接…

认识API

API&#xff1a; 概述&#xff1a; API (Application Programming Interface) &#xff1a;应用程序编程接口 例;&#xff1a;编写代码通过电脑控制挖掘机炒菜&#xff0c;那么挖掘机厂家就要提供一些控制挖掘机的接口类&#xff0c;这些类中定义好了操作挖掘机的动作&#xf…

计算机专业论文设计与实现,计算机专业论文 计算机网络的设计与实现.doc

计算机专业论文 计算机网络的设计与实现.doc文档编号&#xff1a;1385463文档页数&#xff1a;9上传时间&#xff1a; 2021-02-24文档级别&#xff1a;普通资源文档类型&#xff1a;doc文档大小&#xff1a;69.50KB黑龙江广播电视大学黑龙江广播电视大学 毕业设计(论文)毕业设计…