精华内容
下载资源
问答
  • 做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了几个资料最终确定是tomcat的一...

    做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了几个资料最终确定是tomcat的一个问题(个人觉得也是一个缺陷)

    问题的由来

    Tomcat根据rfc的规范Url中不能有类似|,{,}等不安全字符串,但在实际的操作中有时为了数据完整性和加密的方式都需要有|,{,}出现,这样的话Tomcat会直接告诉客户端Bad Request.

    对于这个问题,很多人也提出很多不同的看法:https://bz.apache.org/bugzilla/show_bug.cgi?id=60594,经过修改,最终Tomcat把权限开放出来,通过tomcat.util.http.parser.HttpParser. requestTargetAllow这个配置选项,允许不安全字符的出现。Tomcat详细配置

    解决方法

    经过几次探索,有以下几个方法能够解决这个问题:

    1. 把请求的Url进行编码,这个对源头进行处理,来规避这个问题,如果是第三方来调用的url就无能无力。
    2. 修改Tomcat的配置文件(Tomcatconfcatalina.properties),适用tomcat 7以上的版本
     tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

    3.使用其它服务器进行中转,比如IIS和Apache

    9051537d618072fb3acb6738187691c1.png

    (本文完)

    点击右上角关注作者,加关注不迷路,欢迎交流

    展开全文
  • 来源 |...Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?从感性上来说,我们一般需要把Web应用打成WAR包部署...

    b03a41c3155580142867738c7b6b591b.png

    来源 |http://www.jianshu.com/p/dce1ee01fb90

    Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!

    Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?

    从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat 中,在我们的 Web应用中,我们要指明URL被哪个类的哪个方法所处理「不论是原始的Servlet 开发,还是现在流行的Spring MVC都必须指明」。

    由于我们的Web应用是运行在Tomcat中,请求必定是先到达Tomcat的。Tomcat 对于请求实际上会进行如下的处理。

    第一,提供Socket服务

    Tomcat的启动,必然是Socket服务,只不过它支持HTTP协议而已!

    这里其实可以扩展思考下,Tomcat既然是基于Socket,那么是基于BIO or NIO or AIO 呢?

    第二,进行请求的分发

    要知道一个Tomcat可以为多个Web应用提供服务,很显然,Tomcat可以把URL下发到不同的Web应用。

    第三,需要把请求和响应封装成request/response

    我们在Web应用这一层,可从来没有封装过request/response 的,我们都是直接使用的,这就是因为Tomcat已经为你做好了!

    话不多说,先来看一眼工程截图。

    212ba3ec00eb010ce0c19ca8e892fef3.png

    一、封装请求对象

    67e4c2fa298dea2ac20e9333bf0990d0.png
    这里可以清楚的看到,通过输入流,对HTTP 协议进行解析,拿到了HTTP请求头的方法以及URL。

    二、封装响应对象

    ac88f51928ddb9444a70394358cf37bb.png
    基于HTTP协议的格式进行输出写入。

    三、Servlet 请求处理基类

    e6e82ac24ed153ba36cb760b054b31b2.png
    前文说Tomcat是满足Servlet规范的容器,那么自然Tomcat需要提供API。这里看到了Servlet常见的doGet/doPost/service方法。

    四、Servlet 实现类

    1d9317505c77623e56ca906ca1d14c24.png

    ce2dc44955aefbe7aa9d64e7463509ff.png
    提供这2个具体的Servlet实现,只是为了后续的测试!

    五、Servlet 配置

    5e489a73eb7dbf1a5232f27405ae4aba.png

    8b65ac4e53e3f1eb4d53e29b52491aec.png

    你应该有些感觉了吧?在servlet开发中,会在web.xml中通过<servlet>和<servlet-mapping>来进行指定哪个URL交给哪个servlet进行处理。

    六、启动类

    40cb0bdd8eb2547c75aa68e12980d213.png

    0da9b727275ddbb8ccd21b576608a503.png

    b3b9da66fe14915ec3cf7d56a99bfe12.png

    这里,你能够看到Tomcat的处理流程,即把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应对象,利用反射实例化具体的Servlet进行处理即可。

    七、测试

    80b6657766f8212ee11d4aebe82a2531.png

    实现一个简易版的Tomcat就这么7大步搞定,大家都来动手实现一下吧,代码最好不要复制,自己动手一个个敲,这样实现之后,对Tomcat就没那么陌生了。

    展开全文
  • 我们在servlet开发中,会在web.xml中通过和来进行指定哪个URL交给哪个servlet进行处理。 2.5 MyTomcat start 方法 这里,你能够看到Tomcat的处理流程:把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应...
    • 前言
    • Write MyTomcat
      • 2.1 MyRequest
      • 2.2 MyResponse
      • 2.3 MyServlet
      • 2.4 ServletMapping 和 ServletMappingConfig
      • 2.5 MyTomcat
      • 2.6 Test MyTomcat

    • 《Netty 实现原理与源码解析 —— 精品合集》
    • 《Spring 实现原理与源码解析 —— 精品合集》
    • 《MyBatis 实现原理与源码解析 —— 精品合集》
    • 《Spring MVC 实现原理与源码解析 —— 精品合集》
    • 《Spring Boot 实现原理与源码解析 —— 精品合集》
    • 《数据库实体设计合集》
    • 《Java 面试题 —— 精品合集》
    • 《Java 学习指南 —— 精品合集》

    前言

    Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!

    3c18ffcd04bec7394bae6fa1cf36af25.png

    Write MyTomcat

    Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?
    从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat中,在我们的Web应用中,我们要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是现在流行的Spring MVC都必须指明)。
    由于我们的Web应用是运行在Tomcat中,那么显然,请求必定是先到达Tomcat的。Tomcat对于请求实际上会进行下面的处理:第一:提供Socket服务Tomcat的启动,必然是Socket服务,只不过它支持HTTP协议而已!这里其实可以扩展思考下,Tomcat既然是基于Socket,那么是基于BIO or NIO or AIO呢?第二:进行请求的分发要知道一个Tomcat可以为多个Web应用提供服务,那么很显然,Tomcat可以把URL下发到不同的Web应用。第三:需要把请求和响应封装成request/response我们在Web应用这一层,可从来没有封装过request/response的,我们都是直接使用的,这就是因为Tomcat已经为你做好了!

    话不多说,先来看一眼工程截图:

    a7e3c29d3e9b92c3ac594ae7f61e2539.png

    2.1 MyRequest

    07eab8213972e1d70f9d476fae476096.png
    这里,你可以清楚的看到,我们通过输入流,对HTTP协议进行解析,拿到了HTTP请求头的方法以及URL。

    2.2 MyResponse

    6dc0b5eddb61b59ba8db6609c191d3ce.png

    封装响应对象

    基于HTTP协议的格式进行输出写入。

    2.3 MyServlet

    af142812ae8ee40364b37b81393b826f.png
    前文说Tomcat是满足Servlet规范的容器,那么自然Tomcat需要提供API。这里你看到了Servlet常见的doGet/doPost/service方法。

    FindGirlServlet和HelloWorldServlet

    71095dc3b79aeeeaee14facc44a7ee7a.png

    d6e202ea1c053d4b38a0dc68479cd0c0.png
    提供这2个具体的Servlet实现,只是为了后续的测试!

    2.4 ServletMapping 和 ServletMappingConfig

    1801a7de6440c342ddb3094df22bb8fc.png

    1826dceb7d011c558c1ec4380ed57d9a.png
    你应该有些感觉了吧?我们在servlet开发中,会在web.xml中通过和来进行指定哪个URL交给哪个servlet进行处理。

    2.5 MyTomcat

    731414050231ba3ce362fca3a69dcd0a.png

    start 方法

    2141a9af7d6c7bc3eaba4e96a85ebf38.png

    fc3c7b90d742142c4cdc9bdd5920ffe7.png
    这里,你能够看到Tomcat的处理流程:把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应对象,利用反射实例化具体的Servlet进行处理即可。

    2.6 Test MyTomcat

    2d3f47f4b3af8799c96e72c49c51e232.png

    Ok,MyTomcat is so urgly,but i like it!

    good night!

    来源:http://t.cn/EfQhj2t

    展开全文
  • 来源 |...Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?从感性上来说,我们一般需要把Web应用打成WAR包部署到...

    463d59963afb6a8aadb4ed4f6cfb3898.png

    来源 | www.jianshu.com/p/dce1ee01fb90

    Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!

    Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?

    从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat 中,在我们的 Web应用中,我们要指明URL被哪个类的哪个方法所处理「不论是原始的Servlet 开发,还是现在流行的Spring MVC都必须指明」。

    由于我们的Web应用是运行在Tomcat中,请求必定是先到达Tomcat的。Tomcat 对于请求实际上会进行如下的处理。

    第一,提供Socket服务

    Tomcat的启动,必然是Socket服务,只不过它支持HTTP协议而已!

    这里其实可以扩展思考下,Tomcat既然是基于Socket,那么是基于BIO or NIO or AIO 呢?

    第二,进行请求的分发

    要知道一个Tomcat可以为多个Web应用提供服务,很显然,Tomcat可以把URL下发到不同的Web应用。

    第三,需要把请求和响应封装成request/response

    我们在Web应用这一层,可从来没有封装过request/response 的,我们都是直接使用的,这就是因为Tomcat已经为你做好了!

    话不多说,先来看一眼工程截图。

    868d56b190b39231cbc0dcfd3dc56769.png

    一、封装请求对象

    4f0e749332c38dc1dd5d2106ad8dc3cd.png

    这里可以清楚的看到,通过输入流,对HTTP 协议进行解析,拿到了HTTP请求头的方法以及URL。

    二、封装响应对象

    997a98f93dcd759beda5b4560b0b8961.png

    基于HTTP协议的格式进行输出写入。

    三、Servlet 请求处理基类

    a1c41f8b76f0f6c36533b605a4090583.png

    前文说Tomcat是满足Servlet规范的容器,那么自然Tomcat需要提供API。这里看到了Servlet常见的doGet/doPost/service方法。

    四、Servlet 实现类

    d164660081b305724fa40bbf29cc6051.png

    aa5d1a5a7f15d47dc56c33a5585aae5e.png

    提供这2个具体的Servlet实现,只是为了后续的测试!

    五、Servlet 配置

    5884d0ac2caf4c21a39c7b8fd1333020.png

    460ab87f66049725f5fd7edc30b4de87.png

    你应该有些感觉了吧?在servlet开发中,会在web.xml中通过和来进行指定哪个URL交给哪个servlet进行处理。

    六、启动类

    243e13b0e2f6decae83aee12e30c7ee5.png

    716df0b2609038e9d05808dc7a1bf7fb.png

    6959e2ca22e7abbebbc95a381ea234d8.png

    这里,你能够看到Tomcat的处理流程,即把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应对象,利用反射实例化具体的Servlet进行处理即可。

    七、测试

    a1d82c1a55ddeeab3a79e3f40f14c27f.png

    实现一个简易版的Tomcat就这么7大步搞定,大家都来动手实现一下吧,代码最好不要复制,自己动手一个个敲,这样实现之后,对Tomcat就没那么陌生了。

    最近热文阅读:1、今天写出一个十分弱智的bug!2、Redis10亿数据量只需要100MB内存,为什么这么牛?3、为什么用了索引,查询还是慢?4、Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的5、java中double类型精度丢失问题及解决方法6、14 款牛逼的 IDEA 插件,让你开发速度飞起来!7、JVM 发生 OOM 的 8 种原因、及解决办法8、我把SpringBoot项目从18.18M瘦身到0.18M,部署起来真省事!9、面试必问的一致性Hash在负载均衡中的应用10、Java开发必须掌握的 20+ 种 Spring 常用注解fbf9053dda76f313e15d4feec67a8f72.png关注公众号,你想要的Java都在这里

    展开全文
  • 上一篇文章 介绍了作为程序猿必备的 Tomcat 基础知识,这一篇咱们就来说说,如果我想自己写一个简易版的 Servlet 服务器应该怎么做?一、实现梳理这个阶段我们要大致把任务进行一下拆分,以便于后面更好的去发现问题...
  • 1、过滤器 (Filter) 过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法。 init() :该方法在容器启动初始化过滤器时被调用,它在 ...
  • 1、过滤器 (Filter) 过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法。 init() :该方法在容器启动初始化过滤器时被调用,它在 ...
  • tomcat url中文参数问题

    2008-05-27 17:29:59
    Tomcat url中文参数问题参考: [url]http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042[/url] 大概了解到,参数传递有两种方式,取决于request请求的方式:get/post。 对于post,只要request.set...
  • 修改Tomcat的webapps/ROOT/index.html自动跳转到指定url即可 自动跳转到指定页面,不改变URL 实现代码 &amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;gt; &amp;amp;amp;lt;html lang=&amp;amp;
  • tomcat启动时,url地址是http://localhost:8080/jenkins,但是在job里获取到的build url等信息还是http://localhost:8080 xxx ...解决方式:系统配置--Jenkins Location--Jenkins URL指定url即可...
  • tomcat url 中文参数问题 Tomcat url中文参数问题参考: http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042 大概了解到,参数传递有两种方式,取决于request请求的方式:get/post。 对于post...
  • 昨天在开发前端程序的时候,需要在...Tomcat下默认的编码使用ISO8859-1,而我的页面指定了UTF8编码,这样造成了中文乱码。 解决办法有2种: 1.【推荐】修改Tomcat的server.xml文件,在如下位置增加 URIEncoding
  • tomcat指定编码是UTF-8,而url编码是gbk,这样的话,我在程序中对从request.getParameter中获取到的参数不管怎样都是乱码的,因为数据在经过tomcat的时候已经被以utf-8的编码进行解码,等应用程序获取的参数已经是...
  • Tomcat发布到指定目录

    2011-01-11 13:48:25
    Tomcat其它配置(去掉URL中的 :8080、多域名绑定、虚拟目录指定等等)网上很多,搜索下一大把,不在此细说   但有个配置要记录下,以防以后回来查阅。   使用MyEclipse开发web项目时,有个项目目录文件,但同时...
  • 我们让tomcat不扫描指定的jar包

    千次阅读 2017-08-22 17:16:37
    [url]http://www.dailibu.com/ruby-rails/2016062422.html[/url] tomcat servlet 3 扫描 排除jar [url]http://www.cnblogs.com/penzz/p/3241870.html[/url] [color=red][b]tomcat启动报错too low setting...
  • Tomcat

    2019-04-01 22:36:00
    Tomcat Tomcat运行在JVM之上,它和... 将URL映射到指定的Servlet进行处理; 与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletRequest/Response对象并传递给Servlet进行处理,将Servlet中的HttpServ...
  • 我们现有的是apache负载均衡到了6个不同的tomcat上面,今天遇到了需要将某一些指定URL转发向指定的3个tomcat上的要求,肯定就是需要修改rewrite rule规则了,网上查了半天,都没有好的解决办法,后来偶然遇到...
  • 1、修改背景: A、通常我们访问我们的web应用格式为: ... 例如: ... B、如果想直接输入“本地ip”直接进入...如下面URL: http://127.0.0.1 2、修改tomcat默认端口号、默认项目(应用)名称: A、先将tomcat的默...
  • tomcat常见错误跳转到指定页面

    千次阅读 2017-11-02 18:08:17
    通过URL访问tomcat中资源,有许多常见的错误,比如说404呀,500呀什么的,如果不加设置,浏览器页面会直接显示这些错误,用户感受当然是相当不好的了,那么如何解决这个问题呢? 其实很简单,只需要在项目的web.xml...
  • 今天配置springmvc 的DispatcherServlet的时候,url-pattern配置成了/*,同时访问对应servlet需要跳转jsp界面,结果总是404,查阅了好多资料,明白了原因。 首先所有的请求进入tomcat,都会流经servlet,如果是jsp...
  • tomcat目录下的server.xml文件的host标签内添加如下配置 url访问:http://localhost:8080/photoAlbum/player_1223.json 其中path: Host的虚拟目录。 docBase: 映射的物理目录的地址,可指定相对路径,相对...
  • url="jdbc:mysql://10.24.23.241:3306/report_data?characterEncoding=utf-8" type="javax.sql.DataSource" username="root" password="1234" driv
  • 下面是在网上找到的两个思路分别是使用隐性urltomcat配置,推荐第二种。 使用隐性url 隐性url的教程参考链接 优点:使用隐性url的优点是能够,直接转发到一个新的网址,尤其是可以指定新的端口号,注意这里的网址...
  • 指定载入URL 失败 ?

    2014-12-25 15:16:38
    TOMCAT 容器是从STS 中打开的,SPRING MVC 自带浏览器中可以显示 DIV 元素指定的图片,但是桌面浏览器就加载不进来,报错:指定载入URL 失败 。什么意思呢?
  • Tomcat映射java web应用的目录到url上有多种方法。 其中一种方法是:  $CATALINA_BASE/conf/[enginename]/[hostname]/  以上目录可以为 Tomcat的根目录/conf/Catalina/localhost/ 1.在上面的目录新建一个 demo....
  •  我们知道,将javaWeb项目部署到tomcat后,访问该项目的url路径构成是:  网路协议+"://"+ip地址+":"+tomcat设定的端口+发布项目的项目名称。  如上图所示,访问具体的项目即可。  我们把项目去掉,只访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542
精华内容 216
关键字:

tomcat指定url