servlet的运行机制,转发和重定向

时间:2022-11-03 10:54:40

一、当发送一个请求到服务器端的时候,容器(tomcat)会判断该路径属于哪一个servlet进行处理,servlet有一个抽象父类“httpservlet”,这个类是一个模板设计模式的类,其中service是一个模板方法。当接受到请求之后容器会自动调用父类的service()方法;一个servlet需要继承“httpservlet”,这个类是一个抽象类却没有抽象方法,当用户发送请求的时候容器会调用相应的servlet的service方法()这个模板方法,在方法中判断该用户的请求是什么类型,根据类型来确定调用对应的钩子方法(doxxx()方法)

二、request内置对象

所谓内置对象就是已经创建好的对象(由容器创建),我们可以直接使用的对象,那么在容器中如果接受到了一个用户的请求这会自动创建一个对象来处理客户端发送的一些信息,这个对象就是内置对象,该对象的类型是“javax。servlet。http。httpservletrequest”,名称就是request,在调用service方法的时候容器会自动传递该对象给方法;既然该内置对象包含了用户发送的一些信息,则可以使用对应的方法将这些信息取得。

request.getpathinfo()  //取得额外路径

request.getquerystring()  //取得传递的参数

request.getparameter("参数名")  //取得指定的参数

其他方法  request.setattribute("键","值") //再转发getrequestdispatcher("path").forward(req,resp);

三、细谈getRequestDispatcher()与sendRedirect()的区别(原文https://blog.csdn.net/mr_li13/article/details/50373972)

(1)request.getRequestDispatcher()是请求转发,前后页面共享一个request ; 这个是在服务端运行的,对浏览器来说是透明的。
(2)response.sendRedirect()是重新定向,前后页面不是一个request。而这个是在浏览器端运行的。

1) redirect 方式
   response.sendRedirect("/a.jsp");
   页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:
   response.sendRedirect("URL");
   跳转后浏览器地址栏变化。
   这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来 传递。所以该方式只适用于无传值跳转
  2) forward方式
   request.getRequestDispatcher("/路径(可以是jsp路径也可以是servlet)") .forward(request, response);

如:

request.getRequestDispatcher("/2.jsp)") .forward(request, response);

request.getRequestDispatcher("/servlet/HomeServlet)") .forward(request, response);
  Servlet页面跳转的路径是相对路径。forward方式只能跳转到本web应用中的页面上。
  跳转后浏览器地址栏不会变化。
  使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute

servlet的运行机制,转发和重定向的更多相关文章

  1. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

  2. Servlet(四):转发与重定向、路径问题

    在上次的小案例中用到了转发的技术,今天来仔细聊聊转发和重定向的问题,以及一些小知识的汇总. 一.转发 1.转发的概念 转发主要是将浏览器的请求交给另外一个servlet或jsp来处理,借助reques ...

  3. servlet中的转发和重定向问题

    重定向和请求转发在学习servlet的时候很容易混淆,故在此特意记录. 1. 重定向---------sendRedirect()方法 Servlet响应请求有两种方式,一个是重定向,返回一个页面给客 ...

  4. servlet的转发与重定向

    转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别. 1.转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletR ...

  5. servlet运行机制、Request内置对象和服务器端跳转

    servlet运行机制: 当发送一个请求到服务器的时候,容器(Tomcat)会判断该路径属于哪一个 Servlet 进行处理,Servlet 有一个抽象父类“HttpServlet”,这个类是一个模板 ...

  6. Servlet中的转发与重定向

    Sevlet 的转发与重定向都可以使得浏览器指向另一个资源文件,但它们的运行机制不相同. 一.Servlet的转发 有两种方式获得转发对象(RequestDispathcer): HttpServle ...

  7. javaweb之Servlet,http协议以及请求转发和重定向

    本文是作者原创,版权归作者所有.若要转载,请注明出处. 一直用的框架开发,快连Servlet都忘了,此文旨在帮自己和大家回忆一下Servlet主要知识点.话不多说开始吧 用idea构建Servlet项 ...

  8. Servlet中转发和重定向的区别

    Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...

  9. Servlet转发和重定向的区别

    附上视频教学的一张图: 区别: 1.转发产生一次请求,一次响应: 重定向产生2次请求 两次响应 2.转发客户端不可见的: 重定向客户端是可以察觉的. 3.转发时候url不变: 重定向URL会改变 案例 ...

随机推荐

  1. VMware“该虚拟机似乎正在使用中”问题

    在用VMware虚拟机的时候,有时会发现打开虚拟机时提示“该虚拟机似乎正在使用中.如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权.否则,请按“取消(C)”按钮以防损坏.配置文件: D ...

  2. 基于AgileEAS.NET企业应用开发平台的分布式解决方案

    开篇 分布式应用 AgileEAS.NET基于Microsoft .Net构件技术而构建,Microsoft .Net最吸引人的莫过于分布式应用技术,基已经提供了XML WebService. .Ne ...

  3. 安卓开发44:解决 INSTALL_FAILED_UID_CHANGED 等问题

    apk无法卸载,一般可以下面的方法试一下: 1. 删除/data/app/(filename) 文件夹下的apk包 2. 删除/system/app/(filename) 文件夹下的apk包 3. 将 ...

  4. java 文件字符输入、输出流

    Example10_6.java import java.io.*; public class Example10_6 { public static void main(String args[]) ...

  5. 微信公众号开发C#系列-4、获取接口调用凭证

    概述 获取接口调用凭证实质就是获取access_token.在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒 ...

  6. (四) Keras Dropout和正则化的使用

    视频学习来源 https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553 笔记 使用drop ...

  7. 给Ionic写一个cordova(PhoneGap)插件

    给Ionic写一个cordova(PhoneGap)插件 之前由javaWeb转html5开发,由于面临新技术,遂在适应的过程中极为挣扎,不过还好~,这个过程也极为短暂:现如今面临一些较为复杂的需求还 ...

  8. ArcGIS案例教程-通过点坐标生成圆

    ArcGIS案例教程-通过点坐标生成圆 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:以点坐标为中心,通过指定半径,生成圆 成果形式:绿色工具,免安装,不限版 ...

  9. Hadoop2.7.6_02_HDFS常用操作

    1. HDFS常用操作 1.1. 查询 1.1.1.  浏览器查询 1.1.2. 命令行查询 [yun@mini04 bin]$ hadoop fs -ls / 1.2. 上传文件 [yun@mini ...

  10. Python学习总结 05 pandas

     pandas官方网址 : http://pandas.pydata.org/ . pandas的安装比较复杂,如果想开箱即用,可以考虑下载WinPython.WinPython的官方地址是: htt ...