Servlet(三)
重定向
服务器向浏览器发送一个302状态码以及一个Location消息头(该消息头的值是一个地址,称之为重定向地址),浏览器收到后会立即向重定向的地址发出请求,使用相应对象的API方法实现(response.sendRedirect(String url)).
一般应用场景:
- 解决互联网上2个网站之间的跳转问题
- 一个项目中2个独立的组件之间的跳转问题
- 增删改后重定向到查询
重定向的特点
- 重定向的地址可以是任意的地址
- 重定向后浏览器的地址栏会改变
- 重定向过程中涉及到的web组件并不会共享同一个request和response对象
转发
一个web组件(Servlet/jsp)将未完成的处理通过容器转交给另外一个web组件继续完成
转发的步骤:
1.绑定数据到request对象
绑定 request.setAttribute(String name,Object obj)
读取 request.getAttribute(String name)
namme:绑定名 Obj:绑定值,读取的时候如果绑定名对应的值不存在,返回Null2.获得转发器
RequestDispatcher rd = request.getRequestDispatcher(String uri);
uri:转发的目标地址3.转发
rd.forward(request,response);
转发的特点
- 转发之后地址栏地址不会变,因为转发是在服务器内部进行的,浏览器并不知道
- 转发所涉及的各个web组件会共享同一个request和response对象
- 转发的目的地必须是同一个应用内部的某个地址
重定向和转发的区别
- 重定向是浏览器发送请求并收到响应以后再次向一个新地址发送请求,地址栏地址会发生改变;转发是服务器收到请求后为了完成响应转到一个新的地址,地址栏地址不会变。
- 重定向的新地址可以是任意地址,转发的新地址必须是同一个应用内的某地址
- 重定向有两次请求对象,互相不共享数据,转发只产生一次请求对象且在组件间共享数据
Servlet 生命周期
1.实例化
容器调用Servlet构造器,创建一个Servlet对象
2.初始化
容器在创建好Servlet对象之后,会立即调用该对象的init方法,init方法只会执行一次
3.处理业务请求
容器收到请求之后调用Servlet对象的service()来处理请求
4.销毁
容器调用destroy()方法,然后删除Servlet对象。只会执行一次 ,当应用程序卸载时一定会调用destroy方法。
Servlet Context
容器启动之后会为每一个web应用创建唯一的一个符合Servlet Context接口要求的对象,该对象被称之为Servlet上下文。具有唯一性和持久性(只要容器不关闭应用没有被卸载删除)。
获取上下文的几种方式
- 通过GenericServlet提供的 getServletContext()
- 通过ServletConfig提供的 getServletContext()
- 通过HttpSession提供的 getServletContext()
- 通过FilterConfig提供的 getServletContext()
作用及特点
- 使用setAttribute绑定数据
- 使用removeAttribute移除绑定数据
- 使用getAttribute获取绑定数据
- 特点:绑定的数据可以被整个应用上的所有组件共享,并且一直可以访问。
线程安全问题
容器收到请求后,会启动一个县城来进行相应的处理。默认情况下,容器会为每个Servlet创建一个实例,如果同时有多个请求访问同一个Servlet,则肯定会有多个线程访问这个Servlet实例。如果这些线程都要修改Servlet实例的属性,就有可能发生线程安全问题。我们可以使用synchronized对代码加锁即可;
Servlet(三)的更多相关文章
- Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制
Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- 浅谈Servlet(三)
一.三种作用域 作用域:web开发中用于存储和获得数据. 1.request 一次请求有效,在forward跳转时可用request作用域传递数据. 2.session client不变,sessio ...
- servlet三种实现方式之三通过继承HttpServlet开发servlet
servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第三种: import java.io.*; i ...
- 开发servlet三种方式
第一种:实现Servlet接口 ServletDemo类 实现Servlet接口 public class ServletDemo implements Servlet { //初始化该servlet ...
- web开发之Servlet 三
昨天我们学习了Servlet的运行过程和生命周期,那么今天我们学习下Servlet中非常重要的两个类:ServletConfig ServletContext 我们可以看到,与顶层Servlet主动 ...
- servlet三种方式实现servlet接口
简单介绍 Servlet接口实现类 1.Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet.HttpServlet. 2.HttpServlet指能够处理HTTP请 ...
- Servlet 三种创建方式
servlet 是运行在 Web 服务器(tomcat)中的小型 Java 程序(即:服务器端的小应用程序) (其实就是一个java类,只不过不用再new了).servlet 通常通过 HTTP(超文 ...
- Servlet三种创建方式
直接实现 Servlet 接口不太方便,所以 Servlet 又内置了两个 Servlet 接口的实现类(抽象类),分别为 GenericServlet 和 HttpServlet,因此,创建 Ser ...
- Tomcat深入浅出——Servlet(三)
零.HttpServletRequest 上一篇已经介绍了这个接口,现在补充些内容 首先介绍一下作用域: jakarta.servlet.jsp.PageContext pageContext 页面作 ...
随机推荐
- 【HDOJ】1556 Color the ball
简单线段树. #include <stdio.h> #define MAXN 100005 #define lson l, mid, rt<<1 #define rson mi ...
- 【转】OpenGL基础图形编程(二)
原文:http://blog.chinaunix.net/uid-20638550-id-1909184.html 分类: 十一.位图与图像 11.1.位图 11.1.1 位图(Bitmap)与字符 ...
- 4种字符串匹配算法:BS朴素 Rabin-karp(上)
字符串的匹配的算法一直都是比较基础的算法,我们本科数据结构就学过了严蔚敏的KMP算法.KMP算法应该是最高效的一种算法,但是确实稍微有点难理解.所以打算,开这个博客,一步步的介绍4种匹配的算法.也是& ...
- 使用AppDelegate单例,解决子视图无法给父视图发送消息的问题
关于单例模式,我会在实验过后再开一个博客重点讲单例的使用,这里只是介绍我在PhotoForBingyan的照片滤镜的项目中使用AppDelegate单例的情况. 碰到的问题: 由于这个项目是个多视图的 ...
- php表单提交方法汇总
问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常. 新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中.解决办法有 ...
- MobaSSH SSH server for Windows - Download Home Edition
MobaSSH SSH server for Windows - Download Home Edition undefined
- JavaEE中遗漏的10个最重要的安全控制
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! JavaEE有一些超赞的内置安全机制,但它们远远不能覆盖应用程序要面临的所有威胁.很多常见攻击,例如跨站点脚本攻 ...
- MySQL Workbench类型之MySQL客户端工具的下载、安装和使用
本博文的主要内容有 .MySQL Workbench的下载 .MySQL Workbench的安装 .MySQL Workbench的使用 个人推荐,比较好的MySQL客户端工具 注意啊! 对于noi ...
- poj 3169 Layout
Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8610 Accepted: 4147 Descriptio ...
- nginx浏览pdf
location ~/M00{ # root /fdfs/storage/data; # if ($req ...