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…

Mysql基础语法DDL、DML、DQL

DDL&#xff1a; DDL(Data Definition Language)数据定义语言用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等。关键字&#xff1a;create, drop,alter 等 DML语句操作关键字添加INSERT INTO 表名 (字段名) VALUES (值);修改UPDATE 表名 SET 字段名新的值…

UVA 12716 GCD XOR(数论+枚举+打表)

&#xfeff;&#xfeff;题意&#xff1a;给你一个N&#xff0c;让你求有多少组A,B, 满足1< B < A < N, 且 gcd(A,B) A XOR B。思路&#xff1a;首先我们能够得出两个结论&#xff1a; A-B > A%B > gcd(A, B) A xor B > A-B 所以说A xor B > A-B > …

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

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

codeforces 558E A Simple Task 线段树

题目链接 题意较为简单。思路&#xff1a; 由于仅仅有26个字母&#xff0c;所以用26棵线段树维护就好了&#xff0c;比較easy。 #include <iostream> #include <string> #include <vector> #include <cstring> #include <cstdio> #include <m…

android新建多个java,Java-如何在Android的警报对话框中添加多项选...

我已经在Android应用程序中创建了“同步”菜单.当我们单击“同步”警报时,打开4个复选框的布局.我想要的是让它们起作用,例如,当我单击15分钟,然后自动取消单击其他选项时.Overridepublic boolean onCreateOptionsMenu(Menu menu){MenuInflater inflater getMenuInflater();in…

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系统。现在…

操作系统介绍

操作系统&#xff1a; 操作系统(Operation System, OS)&#xff0c;是管理计算机硬件与软件资源的计算机程序&#xff0c;同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基…

DOM初级篇

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

Activiti工作流的简单介绍

1.概念 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息 或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的实现。” 2.…

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

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

关于AM335X移植SDIO WIFI的简易教程(转)

最近应一个朋友邀请&#xff0c;帮他移植了SDIO WIFI到3.2版本内核。因为之前已经成功移植了3.14内核&#xff0c;所以整个过程花了一个下午就完成了。话不多说&#xff0c;先交待一下平台&#xff1a; CPU&#xff1a;TI AM3352 600MOS&#xff1a;ubuntu core 12.04 for armS…

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载入hta文件,HTA文件去除html控件认证和接收命令行参数

一是利用hta 去掉htm的控件验证hta1的代码如下&#xff1a;sample html application oneactivexcontrol.htm代码如下&#xff1a;dim filesystem creates the filesystemobjectset filesystem createobject("scripting.filesystemobject")这样就可以去掉htm的本地验…

sql 同一字段合并

select a.* from (select id,Detail,partId(select cast(partId as char(36)), from (select * from table) as b where b.ida.id for xml path()) ,code from table a group by id,Detail,code) a 转载于:https://www.cnblogs.com/chang1/p/6952715.html

android个人日记本论文,手机app移动开发论文-个人心情日记本的设计实现 毕设论文.doc...

手机app移动开发论文-个人心情日记本的设计实现 毕设论文毕业设计(论文)题 目 个人心情日记本的设计与实现专 业 计算机网络技术班 级 网络学 号姓 名指导教师2016 年 1 月 14 日个人心情日记本【摘要】据准确数据调查&#xff0c;全球人口已超过65亿&#xff0c;其中&#xff…

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

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