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:绑定值,读取的时候如果绑定名对应的值不存在,返回Null
  • 2.获得转发器
    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对代码加锁即可;

时间: 2024-10-21 11:38:44

Servlet(三)的相关文章

Servlet三种实现方式

Servlet三种实现方式:实现Servlet接口,继承GenericServlet ,继承HttpServlet. 1.实现Servlet接口: import javax.servlet.*; import java.io.*; public class Hello implements Servlet{ //执行条件:reload,关闭tomcat,关机 public void destroy() { // TODO Auto-generated method stub System.out

web开发之Servlet 三

昨天我们学习了Servlet的运行过程和生命周期,那么今天我们学习下Servlet中非常重要的两个类:ServletConfig  ServletContext 我们可以看到,与顶层Servlet主动关联的是ServletConfig  ServletRequest ServletResponse ,它们通过容器传递给Servlet;其中Servlet初始化时候使用ServletConfig,另外两个是请求时调用传给Servlet. 一.ServletConfig 讲解 ServletConfi

Servlet接口应用(开发servlet三种方式)

第一种:实现Servlet接口 public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated

Servlet(三)HttpServlet

以HttpServlet创建Servlet 1.在FirstServlet同目录下建立HServlet.java package com.hunhun; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class HServlet extends HttpServlet{ <span style="white-space:pre"&g

Servlet(三) 监听器

Servlet监听器 所有事件都继承自 java.util.Event 分成三类:application范围.session范围和request范围 监听器接口和注册 javax.servlet.ServletContextListener: 响应 ServletContext生命周期事件,Context创建之后,关闭之前会被调用 javax.servlet.ServletContextAttributeListener: 响应Context范围的属性 增删替换 javax.servlet.ht

Java Web开发——Servlet监听器

一.Servlet监听器的概念 Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件. 监听对象: 1.ServletContext:application,整个应用只存在一个 2.HttpSession:session,针对每一个对话 3.ServletRequest:request,针对每一个客户请求 监听内容:创建.销毁.属性改变

servlet知识点

1.什么是servlet servlet是在服务器运行的小程序.一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问这个驻留在服务器内存里的servlet程序 2.tomcat容器 3.servlet编写3个步骤 继承HttpSerVlet----重写doGet()和doPost() 方法------在web.xml中注册servlet 4.servlet执行流程 5.servlet生命周期 6.servlet三种装载方法 1)servlet容器启动时自动装载servl

Servlet 生命周期、工作原理

一. Servlet 生命周期 servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(). service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个HttpServlet

Servlet一些基础

Servlet 是一套规范,规定了如何通过Java代码来开发动态网站,并由 javax.servlet 和 javax.servlet.http 两个包中的类来实现. servlet是一个服务器端组建,可以用来扩展任何运行在JAVA 的服务器的功能,也本质上讲它就是一个JAVA 文件,用来写功能的 Servlet三个要素: 1.必须继承自HttpServlet 2.必须实现doGet()或者doPost() 3.必须在web.xml中配置Servlet <servlet> <servle

JSP数据交互(二)和Servlet基础

01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. 02.在一个应用中只有一个application,每一个用户都会共享这一个application对象. 03.通过统计网站访问次数来讲解application的用法 02.对象作用域 03.Cookie简介 解析:cookie是Web服务器保存在客户端的一系列文本信息,根据域名和端口号区分是否保存成