互联网生活知识分享 互联资讯 币圈tomcat(币圈神鱼)

币圈tomcat(币圈神鱼)

币圈tomcat, 本文主要为网友分享币圈tomcat的知识,并将对币圈十大交易所进行更多讲解。如果你恰好解决了你现在面临的问题,记得关注这个网站!

Tomcat,你怎么让webshell后台

你什么意思,怎么会?

你想黑进那个网站?

现在的维修人员比以前勤快多了,每天都会巡视。

币圈神鱼

你怎么检查tomcat的启动文件?

在文章《上次看tomcat启动文件的时候做了什么?我们的结论是startup.bat文件的作用是找到catalina.bat文件,然后将参数传递给它。在startup.bat中,

The command calling catalina.bat calls "%executable file%" start% cmd _ line _ args%, where% executable file%' is the catalina.bat file.

这个命令至少向catalina.bat - start传递一个参数。

接下来看一下catalina.bat中的内容,很长:

View Code

第1行和第17行的内容在前一章已经解释过了,这里不再赘述。我对第18-85行的注释感兴趣:

复制代码

1 rem ---------------------------------------------------------------------------

2 rem Start/Stop Script for the CATALINA Server

3 rem

4 rem Environment Variable Prerequisites

5 rem

6 rem CATALINA_HOME May point at your Catalina 'build' directory.

7 rem

8 rem CATALINA_BASE (Optional) Base directory for resolving dynamic portions

9 rem of a Catalina installation. If not present, resolves to

10 rem the same directory that CATALINA_HOME points to.

11 rem

12 rem CATALINA_OPTS (Optional) Java runtime options used when the 'start',

13 rem or 'run' command is executed.

14 rem

15 rem CATALINA_TMPDIR (Optional) Directory path location of temporary directory

16 rem the JVM should use (java.io.tmpdir). Defaults to

17 rem %CATALINA_BASE%\temp.

18 rem

19 rem JAVA_HOME Must point at your Java Development Kit installation.

20 rem Required to run the with the 'debug' argument.

21 rem

22 rem JRE_HOME Must point at your Java Runtime installation.

23 rem Defaults to JAVA_HOME if empty.

24 rem

25 rem JAVA_OPTS (Optional) Java runtime options used when the 'start',

26 rem 'stop', or 'run' command is executed.

27 rem

28 rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

29 rem containing some jars in order to allow replacement of APIs

30 rem created outside of the JCP (i.e. DOM and SAX from W3C).

31 rem It can also be used to update the XML parser implementation.

32 rem Defaults to $CATALINA_HOME/endorsed.

33 rem

34 rem JPDA_TRANSPORT (Optional) JPDA transport used when the 'jpda start'

35 rem command is executed. The default is 'dt_socket'.

36 rem

37 rem JPDA_ADDRESS (Optional) Java runtime options used when the 'jpda start'

38 rem command is executed. The default is 8000.

39 rem

40 rem JPDA_SUSPEND (Optional) Java runtime options used when the 'jpda start'

41 rem command is executed. Specifies whether JVM should suspend

42 rem execution immediately after startup. Default is 'n'.

43 rem

44 rem JPDA_OPTS (Optional) Java runtime options used when the 'jpda start'

45 rem command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,

46 rem and JPDA_SUSPEND are ignored. Thus, all required jpda

47 rem options MUST be specified. The default is:

48 rem

49 rem -agentlib:jdwp=transport=%JPDA_TRANSPORT%,

50 rem address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

51 rem

52 rem LOGGING_CONFIG (Optional) Override Tomcat's logging config file

53 rem Example (all one line)

54 rem set LOGGING_CONFIG='-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties'

55 rem

56 rem LOGGING_MANAGER (Optional) Override Tomcat's logging manager

57 rem Example (all one line)

58 rem set LOGGING_MANAGER='-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager'

59 rem

60 rem TITLE (Optional) Specify the title of Tomcat window. The default

61 rem TITLE is Tomcat if it's not specified.

62 rem Example (all one line)

63 rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]

64 rem

65 rem

66 rem

67 rem $Id: catalina.bat 1040546 2010-11-30 14:47:34Z markt $

68 rem ---------------------------------------------------------------------------

复制代码

本段内容是解释启动和停止CATALINA服务器时需要的前提条件,CATALINA _ HOME——看到这里你可能会有一些疑问。

如果CATALINA_HOME变量没有在操作系统上设置,那么这个变量就不应该存在。

这是怎么回事?不是吗?还是用测试来说明问题吧:我在F:\apache-tomcat-7.0.8\bin目录下创建了一个test.bat文件,内容如下:

@echo off

set CURRENT_DIR=%cd%

test2.bat

意思很简单,只需要把%变量的值赋给CURRENT_DIR变量,然后调用test2.bat文件。test2.bat文件的内容如下:

echo %CURRENT_DIR%

只需输出%CURRENT_DIR%变量。让我们先运行test.bat文件,看看%CURRENT_DIR%变量是否可以正确输出:

结果显示正确,但是如果我们直接运行test2.bat文件会怎么样呢?

 

结果显示这是不正常的。这个测试表明,当test.bat调用test2.bat文件时,test.bat中定义的变量在test2.bat中是可见的,

即使CURRENT_DIR变量的生命周期范围不限于这个文件,也可以加深对setlocal方法的理解。回到catalina.bat本身,可能我们没有设置CATALINA_HOME环境变量的习惯。

但是回想上一节,我在startup.bat里说过,如果没有设置CATALINA_HOME变量,CATALINA_HOME变量会在startup.bat里赋值,

那么您仍然可以在catalina.bat中访问这个变量

这个注释写完之后,看一下第88行:

if not ''%1''==''run'' goto mainEntry

如果收到的第一个参数是run,那么转到:mainEntry节点。事实是,我们从startup.bat调用时传递的第一个参数无疑是start,所以要按顺序执行到第89行。这里有些人可能会有疑问。

那么第一个参数什么时候运行呢?事情是这样的,因为不是每个人都像我们一样直接使用startup.bat文件,因为startup.bat文件只是为了找到catalina.bat文件。

然后照常传递参数。其实有经验的人可以直接用catalina.bat文件启动tomcat。这是运行第一个参数时发生的情况。接下来,我们按顺序进行到第89行。

看看第89行的内容:

if ''%TEMP%''=='''' goto mainEntry

如果TEMP变量为空,那么转到mainEntry节点。这时候我们就需要看看有没有这个TEMP变量,还要做一个小测试,写一个小的test.bat文件。文件内容如下:

@echo off

echo %TEMP%

查看执行结果:

我记得上一节说过,变量%TEMP%是从环境变量中读取的,所以你也可以去环境变量看看有没有这个值来确定TEMP变量是否存在。

请问startup.bat和catalina.bat视图环境变量中没有设置TEMP变量:

因为TEMP存在,程序仍然需要按顺序执行到第90行,第90行的内容如下:

if exist '%TEMP%\%~nx0.run' goto mainEntry

至少这句话好像有点含糊,尤其是这个东西\% ~nx0.run .反正我第一眼看到的时候就想问,这是什么?~ nx0,我们来看看网上对%~nx0的解释:

%~nx0 contains the name of the running batch file (without the path)

它表示代表命令执行的文件的名称。我们用实验来证明吧。让我们也修改一下test.bat文件。-)

@echo off

echo '%TEMP%\%~nx0.run'

按照上面的解释,输出信息应该是C:\ users \ think \ appdata \ local \ temp \ test . bat . run,我们来看看运行结果:

哎,原来说法是对的,但是这个文件存在吗?我们去TEMP目录看看吧。不幸的是,在c:\ users \ think \ appdata \ local \ temp目录中没有找到这个文件,所以我们必须按顺序执行到第91行。

第91行的内容是:

echo Y'%TEMP%\%~nx0.run'

这似乎很简单。既然这个文件不存在,我就自己创建一个,同时写y。也许你不相信我,所以我给你举个例子,或者测试一下。bat:

@echo off

echo Y'%TEMP%\%~nx0.run'

文件test.bat.run是在目录C:\ users \ think \ appdata \ local \ temp下生成的,文件内容确实是y,至于生成文件的意义,后面再说。到现在,我突然觉得,

我很喜欢TOMCAT。我可以知道它做了什么。在接下来的一段时间里,我想写下我阅读TOMCAT源代码的感受。也和大家探讨一下TOMCAT的工作原理。有点远。拉回来。让我们看看第92行:

if not exist '%TEMP%\%~nx0.run' goto mainEntry

这个我一眼就能看出来。我们再来判断一下文件%~nx0.run是否存在。如果它仍然不存在,直接进入mainEntry节点。因为此时我们已经成功地创建了这个文件,所以我们将按顺序进行到第93行。

第93行的内容是:

echo Y'%TEMP%\%~nx0.Y'

这和91行命令是一样的,就不再强调了。顺序执行到92行。

第92行的内容是:

call '%~f0' %* '%TEMP%\%~nx0.Y'

看了之后,感觉还是一个圈。有两点需要大家掌握:%~f0,%*知道这两组符号是什么意思,就解决了。

%~f0:表示运行文件的完整路径。如果我在test.bat中写这个:

@echo off

@echo %%~f0 is %~f0

那么执行结果为:

OK。

%*:在batch file中,每一个命令的参数都以%1,%2,%3 .的形式展现,我们也可以使用%来代替所有的参数,下面看修改万能测试文件test.bat中的内容如下:

复制代码

@echo off

echo First argument: [%1]

echo Second argument: [%2]

echo Third argument: [%3]

echo Fourth argument: [%4]

echo Fifth argument: [%4]

echo Entire command line: [%*]

复制代码

查看运行结果:

意思就是将在catalina.bat文件中自己调用自己,传递参数Y,下面看一下测试,将test.bat中的内容改为:

@echo off

call '%~f0' %* '%TEMP%\%~nx0.Y'

查看运行结果,在程序运行了一段时间以后,得出如下结论:

很奇怪,奇怪亮点,为什么运行的时候会有停顿,第二,为什么会产生这个结果。下面解决这两个困惑,我觉得程序在运行的时候肯定是在后台运行什么操作了,所以我将test.bat中的内容改了一下:

call '%~f0' %* '%TEMP%\%~nx0.Y'

然后再次运行,得到结果:

原来程序在输出最终结果之前一直到在调用自己,所以会有一个停顿的感觉。

第二:为什么会产生这个结果:

下面看第96行的内容:

set RETVAL=%ERRORLEVEL%

在前面的的内容中可能给大家一种误解,所以在看到这句话的时候,不知道是不是也有人跟我似的直接去环境变量中找ERRORLEVEL的值,找不到之后觉得我在忽悠大家,下面我跟大家说说这个ERRORLEVEL。

不知道大家是不是了解在Linux中的$?这个结果返回值,其实ERRORLEVEL和$?差不多,都是用来表示上次执行结果的,如果返回0说明执行正确,如果不是0说明执行失败。

例如在test.bat中的内容:

call %ERRORLEVEL%

执行结果:

下面看97行的内容:

del /Q '%TEMP%\%~nx0.Y' NUL 21

这里面有/Q, NUL, 21需要跟大家解释一下:

/Q: 跟在del后面表示不需要交互式的删除。安静模式的意思。如在test.bat中的内容如下:

del /Q '%TEMP%\%~nx0.Y' NUL 21

然后运行结果为:

此时文件系统中的文件确实已经被删除,只是在删除的过程中没有显示删除的过程,下面我们重新创建此文件,然后把/Q标记去掉以后在尝试一次:

NUL 就是将输出输出到NUL中,这样有错误的情况下你什么都拿不到。

21:2是值错误输出,1是标准输出,意思就是将错误输出重定向到标准输出中

NUL 21的意思就是将错误输出重定向到标准输出,最后在重定向到NUL中,这样出现错误,你从表面上不会看出来。如果将test.bat中的删除操作执行多次,

@echo off

del /Q '%TEMP%\%~nx0.Y' NUL 21

看结果:

也不会显示异常,如果将NUL 21删除以后,再次执行:

@echo off

del /Q '%TEMP%\%~nx0.Y'

结果就会显示出异常:

下面看第98行的内容:

exit /B %RETVAL%

下面的mainEntry和gotHome节点的信息同前一节刚开始的内容一样,所有就不再说明,如果对此有什么疑问,请查看查看tomcat启动文件都干点啥一节。

在接下来的部分中我想把115-137行的内容放在一起说明,因为他们分为两部分,分别引入setenv.bat和setclasspath.bat并执行,

复制代码

:okHome

rem Ensure that any user defined CLASSPATH variables are not used on startup,

rem but allow them to be specified in setenv.bat, in rare case when it is needed.

set CLASSPATH=

rem Get standard environment variables

if '%CATALINA_BASE%'=='' goto gotSetenvHome

if exist '%CATALINA_BASE%\bin\setenv.bat' call '%CATALINA_BASE%\bin\setenv.bat'

goto gotSetenvBase

:gotSetenvHome

if exist '%CATALINA_HOME%\bin\setenv.bat' call '%CATALINA_HOME%\bin\setenv.bat'

:gotSetenvBase

rem Get standard Java environment variables

if exist '%CATALINA_HOME%\bin\setclasspath.bat' goto okSetclasspath

echo Cannot find '%CATALINA_HOME%\bin\setclasspath.bat'

echo This file is needed to run this program

goto end

:okSetclasspath

set 'BASEDIR=%CATALINA_HOME%'

call '%CATALINA_HOME%\bin\setclasspath.bat' %1

if errorlevel 1 goto end

复制代码

这部分的操作就是设置环境变量,由于在tomcat7.0.8版本中不存在setenv.bat所以就不说了,setclasspath.bat这个脚本很重要,浏览一下其中的内容:

View Code

其中就是关于JAVA环境的一些校验和变量的设置,重要性不言而喻,所以如果执行本步操作失败的情况下,程序将退出执行。

关于jsp项目在tomcat里运行的问题?

你编译好的class文件哪去啦?tomcat找不到,肯定报错啊

500是找不到class文件,jsp里面有page import要用到这些class文件的。

你直接在idea里面配置tomcat运行就可以了,他会自动打包的。

tomcat访问项目报404

Jsp的404错误多数有以下几种情况币圈tomcat,您试着检查一下吧:

首先404是地址跳转的错误,也就是没有找到指定的页面。

1.Tomcat未正常启动,因为在你修改过跳转地址时,有时Tomcat是没有更新源地址的,这是软件上的一个Bug,光光依靠重新部署可能无法解决,

你需要删除工程目录部署下(webapps内的工程和workCatalinalocalhost内的工程)的两个工程文件,重新部署即可。这是一个最常见的问题,也是最难排查的问题,

但年困惑币圈tomcat了我久.

2.跳转地址有误,很基础的错误,试着在浏览器地址栏中看看跳转地址有没有出现重复地址,多余的'/',以及是否正确使用'.'和'.'。对照修改即可。

3.跳转页面文件格式后缀有误,Jsp还是Html。很少见的马虎错误。

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。

由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。

因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,

可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,

所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,

另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。

Tomcat启动优化- 扫描TLD文件

开发的过程中,每次启动tomcat,日志中总会打印如下的警告。一直以来,都不影响项目的正常运行,所以,都置之不理。但是,昨天,在梳理日志打印内容的时候,币圈tomcat我强迫症又犯了,

就想对这个问题一探究竟。在网路上,一通搜索猛如虎,查到的答案都是二百五。实在是不能做种优雅的,把这个日志提示的问题解决掉。我就梳理总结一下,我自己的解决过程吧。

通读上面的警告信息,其中包含TLD 这样一个关键词,我们就从这里入手。然后,顺藤摸瓜,发现这一步是为JSP标签功能服务的。我们搜索是从知识上层往下层发现的过程。真正要掌握知识,

就需要从底层开始梳理,最后到达上层的应用。我就尝试通过这样一个逻辑来梳理一下。

翻译如下币圈tomcat:

Tomcat又是如何参与到JSP的运行中呢币圈tomcat?我们查下JSP原理,就可以知道:

JSP页面里包含了JSTL等这样的标签。我查了一圈,也没有看到对JSP标签有一个合理的解释。我理解一下,就是JSP标签就是把通用的、结构化的任务,比如迭代,条件判断,

XML文档操作等这些操作抽象为一些标签,方便开发者使用。我们就拿JSTL标签库来举例吧。

Tomcat为了解析这些标签,就要寻找TLD配置文件。寻找这些配置文件,就要像大海捞针一般,去扫描每一个jar包里的内容。在项目依赖日益庞大的情况下,这项扫描工作就变得异常耗时了。

请看原来的启动耗时:

对比一下,优化之后的耗时:

可以说启动性能有了大幅提高,也说明扫描真的很耗时。

好了,说明白了警告信息背后的原理,那么解决起来,应该说就是轻而易举了吧。我们按照警告日志的指示来做:

看完注释,那个心啊,我就想起了康师傅说的一句话:低头走路,也要时不时抬头看看方向。所以,我们完全可以直接配置jarsToScan即可。

写到这里,我在想,上面所有的知识,都是我通过中文互联网找到的二手消息。有没有直接从官网去找一手的,没有被别人咀嚼过的内容呢币圈tomcat?我想尝试一下。

这还是我在明确知道,我要找什么内容的情况下,不知道的话,真的是瞎子摸象了。这也是搜索引擎存在的意义了。

部分内容来自于:

币圈tomcat的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于币圈十大交易所、币圈tomcat的信息别忘了在本站进行查找喔。

币圈tomcat,以上就是本文为您收集整理的币圈tomcat最新内容,希望能帮到您!更多相关内容欢迎关注。

免责声明:文章内容来源于网络,不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,严禁浏览者根据内容形成判断与决定,浏览者所做的任何判断与决定与本文无关,本文也无任何商业盈利目的。
返回顶部