一、当发送一个请求到服务器端的时候,容器(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. 截取所有的winform runtime error

    https://stackify.com/csharp-catch-all-exceptions/ AppDomain.CurrentDomain.FirstChanceException += (s ...

  2. 尝试ipad编程 以失败告终

    浏览器选择: safari,iOS内置浏览器,好用,不过有些限制 iPad上的 safari可以把网页保存为pdf,比iphone上的功能强大多了 qq浏览器用来下载文件,之后文件还可以复制到文件管理 ...

  3. 【java高级编程】JDK和CGLIB动态代理区别

    转载:https://blog.csdn.net/yhl_jxy/article/details/80635012 前言 JDK动态代理实现原理(jdk8):https://blog.csdn.net ...

  4. 使用windows任务计划程序自动清除C盘缓存文件

    背景 由于应用程序会不断的产生各种临时文件和缓存文件,我们的C盘有时候不知不觉就被填满了,因此,配置一个自动清除缓存文件的脚本势在必行了. 功能 自动删除C盘的缓存和临时文件 隐藏执行时的CMD窗口 ...

  5. Spring Boot的日志配置

    一.配置logback日志 Spring Boot默认使用logback打印日志 需要增加依赖 <groupId>org.springframework.boot</groupId& ...

  6. SparkStream:4)foreachRDD详解

    转载自:http://blog.csdn.net/jiangpeng59/article/details/53318761 foreachRDD通常用来把SparkStream运行得到的结果保存到外部 ...

  7. PowerShell ISE:Windows Server 2008 R2默认不安装

    PowerShell ISE:Windows Server 2008 R2默认不安装,需要手动安装,在PowerShell运行如下两段脚本: Import-Module ServerManager A ...

  8. Python 模块源

    1.官方:https://pypi.org/ 2.LFD UCI :https://www.lfd.uci.edu/~gohlke/pythonlibs/ 4.清华源:https://pypi.tun ...

  9. Windos下pip配置豆瓣源

    C:\Users\liche\pip 下创建pip.ini文件 pip.ini [global] index-url = http://pypi.douban.com/simple [install] ...

  10. mysql 设置初始密码

    mysqladmin -uroot password "123" 设置初始密码 由于原密码为空,因此-p可以不用 mysqladmin -uroot -p"123&quo ...