容器对路径的处理

1、什么是重定向

  服务器向浏览器发送一个302状态码及一个Location消息头(该消息头的值是一个地址,称之为重定向地址),浏览器收到后会立即向重定向地址发出请求

2、重定向原理

  1>访问AddEmp

  2>执行数据库插入操作

  3>执行结束后使用重定向代码发回一个数据包,里面包含302状态码和一个消息头Location

  4>浏览器收到后会立即向服务器的ListEmp发出请求

  注:3、4这个过程即重定向

3、如何重定向

  使用响应对象的API方法即可实现重定向的过程

    response.sendRedirect(String url)

4、重定向特点

  重定向的地址可以是任意的地址

  重定向之后,浏览器地址栏的地址会发生改变

  重定向的过中涉及到的Web组件并不会共享一个request和response对象

5、什么是请求资源路径

  在浏览器地址栏中输入的地址格式如下:

    http://ip:port/appName/xxx.html

    请求资源路径:appName/xxx.html

6、Web服务器对请求地址的处理

  在浏览器地址栏输入http://ip:port/appName/xx.html

    1>浏览器依据ip,port建立与Servlet容器之间的连接,然后将请求资源路径appName/xx.html发送过去给容器

    2>容器依据应用名"/appName"找到应用所在的文件夹,容器会默认请求的是一个Servlet,查找web.xml文件中所有的Servlet配置"<url-pattern>",看是否有匹配的Servlet

7、匹配Servlet规则—精确匹配

  通过将请求资源路径中的具体资源名称与web.xml文件中的"url-pattern"进行对比,严格匹配相等后找到对应资源并执行

    如:<url-pattern>abc.html</url-pattern>

  尽管应用中有abc.html这个具体的页面,也会去指定该url-pattern对应的Servlet,而不是返回具体的abc.html页面

8、匹配Servlet规则—通配符匹配

  使用"*"来匹配0个或多个字符

  如:<url-pattern>/*</url-pattern>

  代表输入任何不同的URL地址都将匹配成功

9、匹配Servlet规则—后缀匹配

  不能使用斜杠开头,使用"*."开头的任意多个字符

  如:<url-pattern>*.do</url-pattern>会匹配以".do"结尾的所有请求

10、无匹配的Servlet的处理

  如果精确匹配、通配符匹配、后缀匹配都没有匹配成功时,容器会查找相应的文件

  查找到相应文件则返回

  找不到文件则返回404

  注:优先级最高的是 精确匹配

11、为什么要将多Servlet合并

  一般情况下,Servlet的只要作用为充当控制器的角色,即接受请求并分发给不同的资源,这时只要有一个Servlet就可以完成分发的过程,所以需要将Servlet合并

  实现合并的步骤:

    使用后缀匹配模式修改web.xml文件

    获取请求资源路径,分析具体请求资源路径后,依据分析结果调用不同分支处理代码。

12、使用后缀匹配模式修改web.xml

  将配置的多个Servlet节点删除

  保留一对儿servlet、servlet-mapping

  修改url-pattern节点的内容为:".do"

13、分析请求资源后分发

  通过调用request、getRequestURI()方法获取请求资源路径

  分析对应资源后分发

时间: 2024-08-27 20:12:43

容器对路径的处理的相关文章

SERVLETJSP学习(三)—— 容器对路径的处理 、Servlet特性

1. Servlet开发要点 1.1. 重定向 1.1.1. 什么是重定向 在服务器为浏览器提供响应时,回传的数据包中的状态行里面是302状态码,同时在消息头内会增加一个键值对,名称为Location,值是一个新的URL地址.当这个响应到达浏览器的时候,这一次的请求响应过程并未结束,浏览器遇见302状态码之后,会立即按照Location头信息中指定的URL地址发送新的一个请求,这样一个在接到响应后又立即发出请求的过程叫做重定向.对于客户端用户来讲,中间的变化过程不会被察觉,因为这个过程是由浏览器

Tomcat容器虚拟路径设置

1.[官方文档]在tomcat\conf下server.xml中找到 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> 在其中添加: <Con

Docker修改容器的端口映射和挂载路径

原文:Docker修改容器的端口映射和挂载路径 有时候因为某些原因需要修改容器的配置,如端口映射和挂载路径,但是如果删除容器后再重新运行,那么之前在容器内所做的修改就丢失了,本文提供了两种方法,可以在保留修改的同时修改配置参数. 方法一:将容器保存为镜像 1.停止容器 docker stop CONTAINER 2.将容器保存为新的镜像 docker commit CONTAINER NEWIMAGE:TAG 3.启动新的镜像,此时可以重新指定参数 docker run --name CONTA

【容器技术】非常详细的 Docker 学习笔记

一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docker Hub Docker 使用客户端-服务器 (C/S) 架构模式.Docker 客户端会与 Docker 守护进程进行通信.Docker 守护进程会处理复杂繁重的任务,例如建立.运行.发布你的 Docker 容器.Docker 客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker

Docker容器技术05

Docker镜像操作 学完了一些最基本的操作,接下来我们来学习一些关于docker镜像的基本操作. 首先我们来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命令搜索镜像: 从图上可以看见我们从docker hub搜索到很多镜像,接着我们来学习镜像的拉取,使用docker pull命令将镜像从docker hub拉取到本地: 这样我们可以通过docker images命令来查看本地的镜像: 而我们下载到本地的镜像存放在/var/lib/docker

docker 创建容器的时候的坑

其实这个题目的话,对于我后面陈述的问题发生的本身并没有太多的联系,但是因为是在docker创建容器的操作之内发生的,所以记录以下 因为网上有些文章有些作者喜欢使用git的命令窗体,说实在的,公司里面用过linux,mac,以至于也习惯了它们的一些操作命令,但是windows的话还是稍微有那么一丢丢的不同的,所以为了适应,我也在我的电脑上选择了使用git的命令窗体来做操作,刚开始的时候任何命令都没有任何问题 但是就在我使用命令创建容器的时候,问题出现了,这里我使用两个例子,一个是postgres,

Docker配置本地镜像与容器的存储位置

默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" 指定镜像和容器存放路径的参数是–graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可. Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:

Linux修改docker镜像和容器数据存储位置

指定镜像和容器存放路径的参数是--graph=/var/lib/docker,其默认存储位置为/var/lib/docker, Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致, 1. 在 Ubuntu 中的位置是:/etc/default/docker, OPTIONS=--graph="/root/data/docker" -H fd://# 或者DOCKER_OPTS="-g /root/data/docker" 最后重新

docker安装nginx容器小记

前言: 使用docker安装了nginx容器,很久才成功跑起来,对安装过程做下记录 linux系统:centos7.4 docker安装不阐述,直接记录安装创建nginx容器的过程 1. 拉取nginx的镜像,此处拉取的最新版 docker pull nginx 2. 创建nginx容器之前需要先确认下要挂载的文件,进入到自己想要的放置挂载文件的目录下,此处我的为/usr/fordocker,并进入. 3. 创建容器 docker run -p 80:80 --name nginx -v $PW