精华内容
下载资源
问答
  • 解决方法由于使用jar包方式,无法使用为tomcat配置虚拟目录的方式,需为springboot内置tomcat设置虚拟目录。实现import org.springframework.context.annotation.Configuration;import org.springfra...

    需求

    项目使用springboot开发,以jar包方式部署。项目中文件上传均保存到D判断下的upload目录下。

    ff540afff1dde279102f764caa66307f.png

    解决方法

    由于使用jar包方式,无法使用为tomcat配置虚拟目录的方式,需为springboot内置tomcat设置虚拟目录。

    实现

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

    @Configuration

    public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

    registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/");

    }

    }

    d89a5d63ff8c7a9b403ce80b5de7ea6b.png

    上面的例子中拦截器拦截的请求和文件上传目录均是写死的,可将其放置application.properties配置文件 中, 便于修改。修改后代码如下所示:

    application.properties

    server.port=8080

    #静态资源对外暴露的访问路径

    file.staticAccessPath=/upload/**

    #文件上传目录

    file.uploadFolder=D:\\upload

    FileUploadProperteis.java

    import org.springframework.boot.context.properties.ConfigurationProperties;

    import org.springframework.stereotype.Component;

    /**

    * 文件上传相关属性

    * @create 2018-04-22 13:58

    **/

    @Component

    @ConfigurationProperties(prefix = "file")

    public class FileUploadProperteis {

    //静态资源对外暴露的访问路径

    private String staticAccessPath;

    //文件上传目录

    private String uploadFolder ;

    public String getStaticAccessPath() {

    return staticAccessPath;

    }

    public void setStaticAccessPath(String staticAccessPath) {

    this.staticAccessPath = staticAccessPath;

    }

    public String getUploadFolder() {

    return uploadFolder;

    }

    public void setUploadFolder(String uploadFolder) {

    this.uploadFolder = uploadFolder;

    }

    }

    WebMvcConfig.java

    import com.lnjecit.springboothelloworld.properties.FileUploadProperteis;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

    @Configuration

    public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Autowired

    private FileUploadProperteis fileUploadProperteis;

    @Override

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

    registry.addResourceHandler(fileUploadProperteis.getStaticAccessPath()).addResourceLocations("file:" + fileUploadProperteis.getUploadFolder() + "/");

    }

    }

    参考资料

    Spring boot内置Tomcat的临时目录被删除导致文件上传不了-问题解析

    目录 1.问题 2.1. 为什么需要使用这个/tmp/tomcat*? 2.2.那个 /tmp/tomcat* 目录为什么不存在? 三.解决办法 修改 springboot 配置,不要在/tmp 下创 ...

    springboot禁用内置Tomcat的不安全请求方法

    起因:安全组针对接口测试提出的要求,需要关闭不安全的请求方法,例如put.delete等方法,防止服务端资源被恶意篡改. 用过springMvc都知道可以使用@PostMapping.@GetMapp ...

    模拟Springboot二:内置tomcat

    既然要将tomcat内置到项目中,并且能够成功的启动项目就要知道 tomcat  做了哪些事情 ,那么就必须先搞明白 一个 普通的web项目是如何被我们本地配置的tomcat启动并运行的 (1). 先 ...

    Tomcat设置虚拟目录的方法, 不修改server.xm

    所在小组使用的就是这样的形式开发,这样切换开发环境,测试环境,正式环境就只需要修改project.xml文件就行了.project.xml命名是随意的,访问的时候就使用这个名字来访问. 在tomcat ...

    springboot让内置tomcat失效

    一.POM(去除内嵌tomcat后,需要添加servlet依赖) org.springframework.boot

    springboot内置tomcat配置虚拟路径

    在Springboot中默认的静态资源路径有:classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classp ...

    如何优雅的使用springboot项目内置tomcat

    问题:以前,我们在使用SSM框架的时候,都是通过外置的tomcat进行部署,如果想访问文件,直接拖到项目的根目录下面即可.假如我们需要放一个apk文件,然后让别人下载,只需将apk放到项目根目录下面, ...

    tomcat设置虚拟目录开启文件下载在服务

    因为平时一直在eclipse里运行tomcat,所以改的文件在eclipse里的server 在server.xml里找到,并在

    Spring Boot2.0之 原理—创建内置Tomcat容器

    前面所述的https://www.cnblogs.com/toov5/p/9823728.html 中的第一条先不赘述了,就是玩了maven 重点介绍后两条 首先内置Tomcat: SpringBoo ...

    随机推荐

    完善DriveInfoEx源代码 获取计算机硬盘序列号

    概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...

    nginx配置 php 单入口

    location / {            root   html;            index  index.html index.htm index.php; if (!-e $requ ...

    【HTML+CSS】浅谈:相对定位与绝对定位

    相对定位和绝对定位 ·定位标签:position  ·包括属性:relative(相对) absolute(绝对) 1.position:relative; 假设对一个元素进行相对定位.首先它将出如今 ...

    python assert的作用

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

    [Swift]LeetCode29. 两数相除 | Divide Two Integers

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

    #WEB安全基础 : HTTP协议 | 文章索引

    本系列讲解WEB安全所需要的HTTP协议 #WEB安全基础 : HTTP协议 | 0x0 TCP/IP四层结构 #WEB安全基础 : HTTP协议 | 0x1 TCP/IP通信 #WEB安全基础 : ...

    TP5在lnmp环境中不能重写的问题

    说到坑,这个问题困扰了我一两天时间,本地可以,线上环境检查了好久. 基本检查的地方有几个了,首先就是nginx下面的重写配置,这个大家在网上都能搜到,至于定义的变量和配置路径,修改一下即可. 还有就是 ...

    iOSAFNetworking 网络请求

    前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...

    opencv3——ANN算法的使用

    最近刚转用opencv3,使用ANN算法时遇到了一些问题,记录下来. 训练神经网络的代码如下: //创建ANN Ptr bp = ANN_MLP::create(); 设 ...

    PAT Battle Over Cities [未作]

    1013 Battle Over Cities (25)(25 分) It is vitally important to have all the cities connected by highw ...

    展开全文
  • 目录结构用途目录用途bin包含启动/关闭脚本conf包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xmldoc包含各种Tomcat文档lib包含Tomcat使用的jar...

    目录结构及用途

    目录

    用途

    bin

    包含启动/关闭脚本

    conf

    包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xml

    doc

    包含各种Tomcat文档

    lib

    包含Tomcat使用的jar文件.unix平台此目录下的任何文件都被加到Tomcat的classpath中

    Logs

    存放Tomcat的日志文件

    /server

    包含3个子目录:classes、lib和webapps

    src

    ServletAPI源文件.先别高兴,这些只有些必须在Servlet容器内实现的空接口和抽象类

    webapp

    包含web项目示例,当发布web应用时,默认情况下把web文件夹放于此目录下

    work

    Tomcat自动生成,放置Tomcat运行时的临时文件(如编译后的JSP文件).如在Tomcat运行时删除此目录.JSP页面将不能运行.[ jsp生成的sevlet放在此目录下]

    classes

    你可以创建此目录来添加一些附加的类到类路径中.任何你加到此目录中的类都可在Tomcat的类路径中找到自身.

    Common/bin

    存在Tomcat服务器及所有的web应用程序可以访问的JAR文件

    Server/bin

    存在Tomcat服务器运行所需的各种JAR文件。

    Share/Bin

    存在所有的web应用程序可以访问的JAR文件(不能被tomcat访问)

    /server/webapps

    存放tomcat两个自带Web应用 admin应用和manager应用

    从表2 中可以看到,Server/bin,Share/Bin,Common/bin目录下都可以放JAR,他们的区别在于:

    在Server/bin目录下的JAR文件只能被Tomcat服务器访问。

    在Share/Bin,目录下的JAR文件可以被所有的web应用程序访问,但不能被Tomcat服务器访问。

    在Common/bin目录下的JAR文件可以被Tomcat服务器和所有的web应用程序访问。

    此外,对于后面介绍Java Web应用程序,在它的WEB-INF目录下,也可以建立lib子目录,在lib子目录下可以存放各种JAR文件,这些JAR文件只能被当前WEB应用程序所访问。

    Java Web应用由一组静态HTML页、Servlet、JSP和其他相关的class组成。每种组件在Web应用中都有固定的存放目录。Web应用的配置信息存放在web.xml文件中。在发布某些组件(如Servlet)时,必须在web.xml文件中添加相应的配置信息。

    在Tomcat应用服务器上发布Web应用程序,应该在/webapps目录下创建这个Web应用的目录结构。

    Web应用的目录结构

    目  录

    描  述

    /helloapp

    Web应用的根目录,所有的JSP和HTML文件都存放于此目录下

    /helloapp/WEB-INF

    存放Web应用的发布描述文件web.xml

    /helloapp/WEB-INF/classes

    存放各种class文件,Servlet类文件也放于此目录下

    /helloapp/WEB-INF/lib

    存放Web应用所需的各种JAR文件。例如,在这个目录下,可以存放JDBC驱动程序的JAR文件。

    注:在classes以及lib子目录下,都可以存放Java类文件。在运行过程中,Tomcat的类装载器先装载classes目录下的类,再装载lib.

    Tomcat的配置文件

    Tomcat的配置基于两个配置文件:

    1.server.xml - Tomcat的全局配置文件               2.web.xml - 在Tomcat中配置不同的关系环境

    server.xml

    server.xml是Tomcat的主配置文件.完成两个目标:

    1 提供Tomcat组件的初始配置.

    2 说明Tomcat的结构,含义,使得Tomcat通过实例化组件完成起动及构建自身, 如在server.xml所指定的

    server.xml种的重要元素:

    元素及其描述

    Server

    server.xml文件中最重要的元素.Server定义了一个Tomcat服务器.一般你不用对他担心太多.Server元素能包含Logger和ContextManager元素类型

    Logger

    此元素定义一个Logger对象,每个Logger都有一个名字去标识,也有一个纪录Logger的输出和冗余级别(描述此日志级别)和包含日志文件的路径.通常有servlet的Logger(ServletContext.log()处),JSP和Tomcat运行时的Logger.

    ContextManager

    ContextManager说明一套ContextInterceptor, RequestInterceptor , Context和他们的Connectors的配置及结构.ContextManager有几个随同提供的特性:

    1. 用来纪录调试信息的调试级别

    2. webapps/,conf/,logs/和所有已定义的环境的基本位置.用来使Tomcat可以在TOMCAT_HOME外的其他目录启动.

    3. 工作目录的名字

    ContextInterceptor&RequestInterceptor

    这些侦听器(interceptors)侦听具体发生在ContextManager中的事件.例如,ContextInterceptor侦听 Tomcat的启动及终止事件,RequestInterceptor监视在它服务过程中用户请求需要通过的不同阶段.Tomcat的管理员不必知道太多关于侦听器的知识;另外,开发者应该知道这是如何在Tomcat中实现一个”全局”型的操作(例如安全性及每个请求日志)

    Connector

    Connector表示一个到用户的联接,不管是通过web服务器或直接到用户浏览器(在一个独立配置中).Connector负责管理Tomcat的工作线程和读/写 连接到不同用户的端口的请求/响应.Connector的配置包含如下信息:

    1.句柄类

    2.句柄监听的TCP/IP端口

    3.句柄服务器端口的TCP/IP的backlog.

    Context

    每个Context提供一个指向你放置你Web项目的Tomcat的下属目录。每个Context包含如下配置:

    1. Context放置的路径,可以是与ContextManager主目录相关的路径.

    2.纪录调试信息的调试级别

    3.可重载的标志.开发Servlet时,重载更改后的Servlet,这是一个非常便利的特性,你可以调试或用Tomcat测试新代码而不用停止或重新启动Tomcat.要打开重载,把reloadable设为真即可.这虽花费时间但可检测所发生的变化;更重要的事,鉴于,在一个装载类对象装入一个新的 servlet时,类装载触发器可能会掷出一些错误.为避免这些问题,你可以设置可重载为假,这将停止重载功能.

    web.xml

    Tomcat可以让用户通过将缺省的web.xml放入conf目录中来定义所有关系环境的web.xml的缺省值.建立一个新的关系环境时, Tomcat使用缺省的web.xml文件作为基本设置和应用项目特定的web.xml(放在应用项目的WEB-INF/web.xml文件)来覆盖这些缺省值.

    展开全文
  • 我在项目中有一个文件夹myFolder,放在和tomcat同级目录下面。我要使用里面的文档资源,在server.xml中的host节点下面配置起作用,但是不想在server.xml中配置,想在单独的Context.xml中配置,但相同的配置却不起作用...

    我在项目中有一个文件夹myFolder,放在和tomcat同级目录下面。我要使用里面的文档资源,在server.xml中的host节点下面配置

    起作用,但是不想在server.xml中配置,想在单独的Context.xml中配置,但相同的配置却不起作用,求指导~

    JAVA区就是热闹,都要沉了…… 自己顶下先~

    1,把webapps目录下的所有文件夹删掉;

    2,修改conf文件夹下的web.xml:

    listings

    false

    改为:

    listings

    true

    3,修改conf文件夹下的server.xml:

    在Host节点中加入你的工程目录,比如:

    –>

    不想启动的工程给注释掉,工程目录中最好不要带中文。

    不知道你想要什么样的效果

    首先谢谢你~

    我现在的情况是这样的,在项目中有个地方上传附件,附件我们都处理成链接下载的方式,然后客户要求图片附件要直接在页面显示,但当时放附件文件的地方不在tomcat里面,有个upload文件夹是和tomcat在同一个目录下面,然后img的src属性里面找不到那个路径,所以想用context来找这个路径,从站点根目录找上去正好是向上两级到tomcat文件夹所在的地方,在sercice.xml里面配置context就找到了,但是启动tomcat的时候会报警告,而且我不想让每个开发人员都去改tomcat配置,想直接把context.xml放在项目里,现在问题就出来了,把内容是

    的context.xml 放在META-INF下面不起作用,我试了试把tomcat里面,conf文件夹下的context.xml内容换成这样还是不行,我对这个不熟悉,不明白问什么同样的配置放在sercice.xml的host节点下面有用,单独拿出来就有问题……  不知道这样描述清楚不? 哪位解决过同样的问题麻烦给点提示~~~

    引用 2 楼  的回复:

    1,把webapps目录下的所有文件夹删掉;

    2,修改conf文件夹下的web.xml:

    listings

    false

    改为:

    listings

    ……

    40分

    1. 修改conf文件夹下的server.xml:

    假设tomcat的安装目录为:D:\Program Files\Tomcat 6.0,在Host节点中配置upload目录的虚拟路径:

    2, 假设upload目录下有123.jpg这个图片文件,修改img的src属性或链接的href属性:

    或者

    打开图片

    3, 启动服务器,在浏览器中访问你的页面,只要文件存在并且路径正确,就OK了

    需要注意的是,路径一定要写全,

    下载文件最好用response的输出流,用链接会直接在浏览器打开文件,而达不到下载的效果

    我已经在自己的电脑上测试过了,木有问题

    嗯。非常感谢,但这样做的话,我是不是就需要对客户那边还有每个开发人员的tomcat都进行设置?

    我希望用另一种方法,就是把context配置放在项目里面,我在网上查到可以在站点下面的META-INF文件夹里面放个context.xml文件也可以实现这样的功能,能不能实现呢?我是没能达到想实现的效果……这是为什么??

    引用 5 楼  的回复:

    1. 修改conf文件夹下的server.xml:

    假设tomcat的安装目录为:D:\Program Files\Tomcat 6.0,在Host节点中配置upload目录的虚拟路径:

    2, 假设upload目录下有123.j……

    这个我没试过,

    我以前有个项目,是用apache + tomcat部署的,apache中指定了静态资源的路径,不加载class文件,就好比你那个upload目录了, tomcat中运行的才是项目.

    两个服务器一起开, 貌似也就能达到你想要的效果。

    但是配置apache是比较繁琐的,只能给你一个思路吧。

    嗯,好的,非常感谢你!

    引用 8 楼  的回复:

    这个我没试过,

    我以前有个项目,是用apache + tomcat部署的,apache中指定了静态资源的路径,不加载class文件,就好比你那个upload目录了, tomcat中运行的才是项目.

    两个服务器一起开, 貌似也就能达到你想要的效果。

    但是配置apache是比较繁琐的,只能给你一个思路吧。

    经过一些验证,基本弄明白了使用方法,之前设想的方式虽然好,但是不能实现,悲剧。

    原谅我挖坟,我也遇到这个问题了,tomcat6.0.X的webapps\项目\META-INF\context.xml虽然会自动被拷贝到conf\Catalina\localhost\项目.xml里,但是根本不起作用,看来需要解读tomcat的源码才能知晓真正原因了。

    引用 11 楼 ymwcwee 的回复:

    原谅我挖坟,我也遇到这个问题了,tomcat6.0.X的webapps\项目\META-INF\context.xml虽然会自动被拷贝到conf\Catalina\localhost\项目.xml里,但是根本不起作用,看来需要解读tomcat的源码才能知晓真正原因了。

    这是真的吗? 我的也是不起作用, 数据源,会话都没法使

    展开全文
  • 目录 一、Tomcat架构 1.基本架构图 2.核心组件架构图 3.Container内部流程架构图 二、主要类组成 1.基本架构类图 2.模块功能实现类图 三、源码分析 一、Tomcat架构 研究Tomcat的架构以及流程是基于Springboot内嵌的...

    目录 
    一、Tomcat架构 
    1.基本架构图 
    2.核心组件架构图 
    3.Container内部流程架构图 
    二、主要类组成 
    1.基本架构类图 
    2.模块功能实现类图 
    三、源码分析 
    一、Tomcat架构 
    研究Tomcat的架构以及流程是基于Springboot内嵌的Tomcat进行的,Springboot版本为2.1.6.RELEASE,内嵌的Tomcat版本为9.0。 
    1.基本架构图 
    基本架构图如下: 


     
    可以把这个架构图大致分为六个部分: 
    1、Tomcat服务器本身:开发者接触的部分,包括配置、启动和关闭等开关;

    2、Server服务器:一个Tomcat只有一个Server服务器,这个服务器便是运行在Tomcat中的实例,它控制着Tomcat的运行生命周期;

    3、Service服务:在Server服务器中会有多个Service服务,用于提供主要的对外服务。其主要作用是将Connector和Container组合在一起运行,可以看成是Connector和Container的运行环境,当然,除了这两个主要角色还有其它的模块组件;

    4、Connector核心组件:用户处理连接相关事情,并提供Socket、request和response相关的转换,Springboot设置的port便是设置Connector中的port,而不是Tomcat对象的port;

    5、Container核心组件:用于封装和管理Servlet,以及具体处理Request并返回Response。这里需要注意的Container实际上是类似树状的结构,所有的子类如Engine、Host和Context等都实现了Container接口,一个Container可能包含0-N个子Container,只是最顶层是个Container,因此可以把这部分只当成一个Container;

    6、其它模块组件: 
     1、 Jasper:JSP编译器,负责JSP页面的解析及JSP属性的验证,并将JSP页面动态转换成JAVA代码并编译成class文件;

    2、Naming:属性映射组件,绑定配置文件配置的属性及标签名字,并最终放入Context中;

    3、Session:Tomcat为了实现Http会话而实现对应的组件,用于存放请求的会话信息;

    4、Loging:Tomcat官方日志,默认使用JUL日志系统,用于打印Tomcat启动及运行日志;

    5、JMX:全名为Java Manager Extension,主要负责系统管理和监控,也可以动态监控和修改内存中的变量。
    2.核心组件架构图 
    Tomcat运行架构流程如下: 


     
    架构组件说明: 
    1、ProtocalHandler:处理不同的连接类型,具体表现为Http 11 Protocal使用普通的socket连接的,而Http 11 NioProtocal是使用NioSocket连接的,还有Websocket也是用NioSocket处理的,只是后续处理和普通的Http请求有点不一样;

    2、Endpoint:用来处理底层的Socket网络,因此其是用来实现TCP/IP协议的;

    3、Processor:用来处理诸如Http和WebSocket这种建立在TCP/IP协议之上的更高级别协议;

    4、Adapter:将请求适配到具体的Servlet容器进行处理;

    5、Engine:Tomcat引擎,用来管理多个站点(或者虚拟主机),一个service只能有一个

    6、Host:代表一个虚拟主机,具体表现为默认的localhost代表ip的名字;

    7、Context:代表一个应用,也是Servlet运行的上下文;

    8、Wrapper:每个都封装着一个Servlet(当然只局限于普通的Http请求)。
    3.Container内部流程架构图 
    我们根据前面可以知道Container内部的Host、Engine和Context这些都是一层包着一层的,但在这里面他们是如何进行数据交换以及传递的呢?其内部流程架构图大致如下: 


     
    可以看到在Container中Host、Engine和Context这些组件之间的通信并不是直接调用的,而是通过Pipeline管道对象中的Valve阀门对象来调用的,可以理解成各个组件有个通信管道连接着这几个主要组件,其中管道的末尾有个阀门控制,调用进下一个组件必须经过这个组件的阀门。示意图如下: 


     
    需要注意的是,此时在Valve中的request和response参数都是org.apache.catalina.connector包下的对象,而不是我们熟知的RequestFacade和ResponseFacade,转变成这两个是在最后的Valve中StandardWrapperValve转换的。 
    二、主要类组成 
    1.基本架构类图 
    基本架构类图如下: 


     
    看到这个错综复杂的类关系估计人要晕了,但是没关系,我们慢慢来看。这个类图是提取了一些关键的接口及实现类,因此总体上而言并不算很多。还是根据前面两个架构图,我们把这个类图分为三部分: 
    1、Tomcat基本组成部分:这部分包含了基本架构图中的Tomcat、Server和Service及其实现类。这部分的主要功能职责便是Tomcat暴露在外运行启动的地方;

    2、核心组件Container部分:这部分如核心组件架构图中的Container一样,包含了Engine、Host、Context和Wrapper。这部分的功能职责便是初始化并保留执行具体请求的处理类,如Servlet的初始化以及运行就是在这里面完成的;处理上下文初始化调用的某些接口,如读过XML集成Spring熟知的ServletContextListener接口便是在在这个流程执行的;

    3、核心组件Connector部分:这部分如核心组件架构图中的Connector,包含了ProtocolHandler和Endpoint以及processor等,除了组件架构图展示的那几个,还包括了SocketChannel以及Executor接口及实现类。主要职责便是注册Nio轮询类以及线程池,轮询实际请求,并由Adapter接口实现类完成不同请求交给不同处理类的操作,处理实际请求的方法便是IO多路复用,使用Poller、PollerEvent和Selector来提高Tomcat的吞吐率。
    2.模块功能实现类图 
    Container中通道结构类图: 


     
    可以看到这个图相较于Tomcat的基本类图来说就更加清晰明了了,没有那么多复杂的关系。从其类图就可以看出来其大致分为三个部分: 
    1、通道(Pipeline)和阀门(Valve)部分:由Valve接口、Pipeline接口及其六个实现子类组成,即图中中间到最下方的这些类。主要功能便是完成Container组件间的通信,这些阈值对象和主要对象的绑定就是在主要对象初始化时绑定的;

    2、通信参数:即图中左上角的request和response部分。org.apache.catalina.connector包下的request和response里面都封装了javax.servlet.http包下response和request的实现类,同样也封装了host、context以及wrapper等对象,因此只需要处理完request和response后直接往下传就OK了,处理模式和责任链模式很像;

    3、过滤器和Servlet:即图中最右边的四个类。其主要功能便是从StandardWrapperValve调用到过滤器,过滤器最后再调用进Servlet,将收到请求、调用进Container、Valve链调用、过滤器链调用和Servlet整个流程串联起来,形成整个通路。
    三、源码分析 
    Tomcat的源码流程分析根据前面的架构图也分为三个部分: 
     1、Tomcat基础架构和核心组件Container的初始化和执行流程)

    2、Tomcat架构及运行原理之Container源码分析; 

    3、Tomcat核心组件Connector的初始化和执行流程

    4、Tomcat架构及运行原理之Connector源码分析;

    5、 收到请求后Valve和过滤器等的串联流程

    6、Tomcat架构及运行原理之请求处理,里面的处理代码逻辑没有很多,只有Adapter里面的逻辑需要稍微注意一下。

    展开全文
  • 目录下存放着普通用户的命令/dev 系统的设备文件,即设备的驱动程序/home 用户主目录的基点/lost-found 这个目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里/misc 储存着一些特殊的...
  • 例如nginx + tomcat中,可以将动态资源交给tomcat,而静态资源则交给Nginx,这样可以减轻tomcat的负担,增加效率。 2. 反向代理 3. 负载均衡 4. 正向代理 二、HTTP 服务器 Nginx本身也是一个静态资源的...
  • 了解了Servlet、JSP等这些模块的使用,学会了这些模块的使用,了解了MVC的基本架构之后总感觉哪里还少了点儿东西,没错,就是原理,我们的Web程序是运行在Tomcat上的,我们只知道该按照什么规范创建什么类型的文件,...
  • Tomcat

    2020-12-18 11:54:20
    一,tomcat 基础 1. 常见的 web 服务器 1.1 概念 服务器:安装了服务器软件的计算机 服务器软件:接收用户的请求,处理请求,做出响应 web服务器软件:接收用户的请求,处理请求,做出响应。 在web服务器软件中,...
  • Tomcat概述

    2021-06-10 10:24:57
    (3)Tomcat处理请求过程(4)Tomcat中的连接器(5)Tomcat目录(6)Tomcat常见日志三、部署Tomcat(1)实验环境(2)实验目的(3)实验步骤(4)扩展—安装mariadb数据库配置Tomcat的manager管理界面
  • Apache Tomcat自1999年第一个版本发布至今,已经成为一款成熟的轻量级的Java应用服务器,它深受Java研发人员喜爱。虽然它已经更新到10.x的版本,但是大部分人依然使用jdk8和9.0.x因此本文基于tomcat-9.0.x(官网下载...
  • 01java web(xml、tomcat)

    2021-11-16 13:31:31
    文章目录Tomcat 简介Tomcat的安装和启动子目录简介另一种方式访问Tomcat诊断配置JAVA_HOME环境变量具体步骤 Tomcat 简介 Tomcat是Apache组织的Jakarta项目中的一个重要子项目,它是Sun公司(已被Oracle收购)推荐的...
  • Tomcat一、Tomcat简介二、Tomcat安装三、tomcat配置文件四、主配置文件Server.xml详解五、tomcat端口介绍六、搭建jpress网站七、部署zrlog八、zabbix监控tomcat九、tomcat多实例反向代理十、tomcat集群配置十一、...
  • 文章目录一、什么是tomcat1.1 tomcat简介1.2 tomcat核心组件1.3 tomcat处理请求的过程二、tomcat安装部署步骤2.1 下载并安装JDK2.2 安装并启动tomcat2.3 tomcat常用文件三、配置虚拟主机3.1 基于端口3.2 基于域名 ...
  • Tomcat内部结构解析

    2021-05-10 05:19:58
    导读Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。Tomcat的组织结构Tomcat是一个基于组件的服务器,它的构成组件都是可配置的...
  • Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写...
  • 1、web 称为互联网以及应用于网络上的各种设备、协议、规范技术。JavaWeb就是基于Java语言来开发符合JavaEE规范要求的网络应用程序(B/S,也包括C/S)。 2、web包含两种资源,一种是静态资源,不会发生变化,HTML...
  • 最近在做一个小项目,用到了图片上传服务器,以前尝试过实现这个功能Demo,虽然基本功能没有问题,但是很不完善,当时也有在博客记录,地址如下:由于当时写这个图片上传服务器的功能只是为了练练手,简单的实现后便...
  • Tomcat的原理架构

    2021-01-01 19:42:56
    俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以...
  • Tomcat内存溢出的原因在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:1....
  • tomcat源码阅读

    2021-02-26 17:34:24
    tomcat的源码的时候,我建议和官方的User Guide一起阅读,明白tomcat做某件事情的目的之后,看源码会容易一点。另外,debug当然是一个非常重要的工具。源码上了规模之后,如果单纯静态地看,基本是看不出什么来的...
  • 1、基本概念 1.1 web开发: web就是页面 静态web html + css 提供给所有人看的数据始终不会发生变化! 动态web 所有网站都在用 提供给所有人看的数据始终会发生变化,大数据推送 技术栈:servlet/...
  • 作为一个开发,使用Spring Boot 时,和传统的Tomcat 部署相比,我们只需要关注业务的开发,项目的启动和部署变的十分简单, 那么它背后是怎么实现的, 隐藏着什么? 本文先从一个嵌入式Tomcat的应用开发,再到Spring ...
  • tomcat

    2021-01-10 12:45:12
    web服务 ...安装tomcat前要先安装jdk环境 准备一台虚拟机,拖入相关的软件包 [root@localhost ~]# java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) Ope
  • 1 目录结构 /bin:脚本文件目录。 /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载)。 /conf:存放配置文件,最重要的是server.xml。 /logs:存放日志文件。 /server/webapps:来管理...
  • B/S 架构 Tomcat

    2021-08-08 05:36:35
    动态 Web 执行流程直接用图片展示动态 Web ...以 Tomcat 为例讲解下 web 项目执行流程,URL 为http://localhost:8080/weba/hello.html,通过 localhost 找到服务器主机,8080 找到对应的 tomcat 容器,然后 tomcat ...
  • 文章目录Tomcat和Http协议一. 企业开发简介1. JavaEE规范2. Web概述3.... Tomcat基本使用2.1 Tomcat启动和停止问题分析解决1). 启动和停止2)启动问题2.2 IDEA集成Tomcat服务器2.3 Linux系统安装T

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,846
精华内容 20,338
关键字:

tomcat的基本目录及作用