servlet运行机制、Request内置对象和服务器端跳转
servlet运行机制:
当发送一个请求到服务器的时候,容器(Tomcat)会判断该路径属于哪一个 Servlet 进行处理,Servlet 有一个抽象父类“HttpServlet”,这个类是一个模板设计模式的类,其中service 方法是一个模板方法。当接受到请求之后容器会自动调用父类的 service() 方法。
一个servlet 需要继承“HttpServlet” ,这个类是一个抽象类但是没有抽象方法,当用户发送请求的时候容器调用对应的 servlet 的 servlce() 这个模板方法,在该法中判断用户的请求是什么类型,根据类型来确定调用对应的方法(doXXX()方法)。
HttpServlet 是一个模板类,该类中的方法都有默认的实现,如果子类有新的需求就可以选择性的覆写指定的方法即可,这就是一个典型的模板设计模式。
Request内置对象:
所谓的内置对象就是已经创建好的对象(容器创建的),我们可以直接使用的对象,那么在容器中如果接受到一个用户的请求则会自动创建一个对象来处理客户端发送的一些信息,这个对象就是内置对象,该对象的类型是“javax.servlet.http.HttpServletRequest”,名称就是request,其实在调用 service 方法的时候容器会自动传递该对象给方法。
既然该内置对象包含了用户发送的一些信息,则可以使用对应的方法将这些信息取得。
Cookie[ ] getCookies(); //取得客户传递的 cookie 信息
String getHeader(String var1); //取得请求头信息,根据请求头名称取得对应的值
Enumeration<String> getHeaderNames(); //按照枚举的方式取得所有的请求头信息
String getMethod(); //取得请求的方式
String getPathInfo(); //取得额外路径,在DEMO去解释
String getContextPath(); //取得当前项目的根路径
String getQueryString(); //取得 url 地址?后面的内容(参数)
String getRequestURI(); //取得 url 地址
String getServletPath(); //取得Servlet 的映射路径(就是在 web.xml 文件中配置的映射路径)
HttpSession getSession(); //取得sessionn 内置对象
服务器端跳转:
服务器端跳转又叫做服务器端转发还可以还可以叫做服务端重定向,在大部分的开发中从用户发送请求到看到数据会经历如下的过程:
1、用户发送请求到服务器。
2、服务器会将请求交给对应的控制器(目前是Servlet)处理,在控制器中调用业务层方法取得数据。
3、之后将取得数据保存到request 内置对象。
4、然后在跳转到页面将保存在 request 内置对象中的数据再次取出来之后显示到页面(用户看到信息)。
servlet运行机制、Request内置对象和服务器端跳转的更多相关文章
- request内置对象
request内置对象(JSP九大内置对象之一)简述:内置对象即已在容器内部创建完成,可以直接调用的对象.容器在接收到客户端的请求后会创建一个对象用于处理请求信息,该对象就是内置对象(属于“javax ...
- Servlet中获取JSP内置对象
方便自己查询,嫌低级的勿喷.... 1.request 在servlet的doGet和doPost的参数中就有HttpServletRequest req参数,而JSP内置request对象就是Htt ...
- Servlet中的jsp内置对象
Servlet和jsp本质相同,那么为什么还要使用jsp呢,原来的servlet又有什么不好的呢. Servlet和jsp可以做完全相同的事情,就要借助jsp的内置对象们,比如request,resp ...
- request内置对象在JSP
- JSP内置对象---request对象(用户登录页面(返回值和数组:gerParameter,getParameterValues))
创建两个jsp页面:reg.jsp 和 request.jsp reg.jsp: <%@ page language="java" import="java.uti ...
- JSP内置对象——out对象/request对象
在这个科技高速发展的时代,迫使我们的脚步一刻都不能停下. 在这个for循环语句当中,我们可以直接使用jsp内置对象中的out对象来给浏览器打印输出,那么这个out对象就是一个内置对象, 在这里,我们使 ...
- JSP内置对象---request 对象
request.jsp: <%@ page language="java" import="java.util.*" contentType=" ...
- JSP九个内置对象及指令、动作标签
一.JSP九大内置对象 (一)JSP中无需创建就可以使用的9个对象 输入输出对象 1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是s ...
- JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
什么是JSP内置对象 JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用.JSP技术的设计者为便于开发人员在编写JSP页面时获得这些w ...
随机推荐
- Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
问题: 首先出现这个bug的是在我的vs2017社区版的ide上,这两天使用了出现了一个非常神奇的问题,就是我程序中的nuget包总提示找不到源文件,并且我点击Nuget还原的话还一直提示着一 ...
- ThinkPHP5.1 + tufanbarisyildirim 解析apk
摘要 对于apk,我可以说只会安装,并不知道其中有什么内容需要记录下来.这次公司做一个关于电视机顶盒的项目.对于这个陌生的项目,刚开始真是一脸懵逼,完全不知道如何下手. 因为这类的项目完全没有接触过, ...
- dubbo 序列化机制之 hessian2序列化实现原理分析
对于远程通信,往往都会涉及到数据持久化传输问题.往大了说,就是,从A发出的信息,怎样能被B接收到相同信息内容!小点说就是,编码与解码问题! 而在dubbo或者说是java的远程通信中,编解码则往往伴随 ...
- 利用 vue-cli 构建一个 Vue 项目
一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...
- 【神经网络篇】--基于数据集cifa10的经典模型实例
一.前述 本文分享一篇基于数据集cifa10的经典模型架构和代码. 二.代码 import tensorflow as tf import numpy as np import math import ...
- 通过Jenkins定期清除为None的镜像
在代码持续交付过程中,依靠Jenkins生产Docker镜像时,会生成许多的名为None的中间镜像,这些镜像在整个项目生产过程完毕后意义不大,还占着空间,需要定期清理,通过手动方式实在是繁琐,也就有了 ...
- Entity Framework 查漏补缺 (二)
数据加载 如下这样的一个lamda查询语句,不会立马去查询数据库,只有当需要用时去调用(如取某行,取某个字段.聚合),才会去操作数据库,EF中本身的查询方法返回的都是IQueryable接口. 链接: ...
- Python:黑板课爬虫闯关第二关
第二关依然是非常的简单 地址:http://www.heibanke.com/lesson/crawler_ex01/ 随便输入昵称呢密码,点击提交,显示如下: 这样看来就很简单了,枚举密码循环 po ...
- 【Golang笔记】Golang工具包Cobra安装记录
0.环境信息 系统:Win10_x64 Go版本:go version go1.8.1 windows/amd64 Git版本:git version 2.17.0.windows.1 1.安装Go运 ...
- 要搞刷机!从它的尸体上踏过去!钢板云路由!WPR003N复活!成功启动OPENWRT
这是一个很鼓舞人心的标题,自从上一篇Aria2序之导言 00,成功的贴出两张开场图片,本来计划写它的开场引言 01,正好cp一个合格的导引(引导读起来有些奇怪),连续懒惰了好几天,突然想起了WPR00 ...