广告
返回顶部
首页 > 资讯 > 精选 >Servlet实现共享数据JavaWeb组件方法有哪些
  • 871
分享到

Servlet实现共享数据JavaWeb组件方法有哪些

2023-06-20 14:06:36 871人浏览 泡泡鱼
摘要

本篇内容介绍了“Servlet实现共享数据javaweb组件方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录一、Servlet简

本篇内容介绍了“Servlet实现共享数据javaweb组件方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 一、Servlet简介

  • 二、Servlet的运行过程

  • Servlet组件:

  • 多个Servlet之间共享数据实现方案

    • 转发与重定向

    • 全局作用域对象

Servlet JavaWEB三大组件包括,Servlet组件(接受请求,响应数据),Filter组件(过滤,拦截请求),Listener组件(监听器),这三大组件构成了javaWeb核心内容,也是作为后端来说,JavaWeb最重要的内容。

一、Servlet简介

  Servlet是sun公司提供的一门用于开发动态web资源的技术。
  Sun公司在其api中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
 1、编写一个Java类,实现servlet接口。  
 2、把开发好的Java类部署到web服务器中。
  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

二、Servlet的运行过程

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
  ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  ②装载并创建该Servlet的一个实例对象。
  ③调用Servlet实例对象的init()方法。
  ④创建一个用于封装Http请求消息的httpservletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  ⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

Servlet组件:

什么是Servlet组件:处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。
整个过程为:

客户端发送请求至服务器端;服务器将请求信息发送至 Servlet;Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;服务器将响应返回给客户端。

多个Servlet之间共享数据实现方案

Servlet规范中提供四种数据共享方案:

  • ServletContext接口

  • HttpServletRequest接口

  • HttpSession接口

  • Cookie类

Request和Response
requestresponse对象的原理:
==都由服务器创建,我们来使用它们;
==request对象是来获取请求消息,response对象是来设置响应消息;
==request对象继承体系结构:
ServletRequest 接口
<<继承>>
HttpServletRequest 接口
<<实现>>
(Tomcat类)org.apache.catalina.connector.RequestFacade

Servlet实现共享数据JavaWeb组件方法有哪些

转发与重定向

第一种 request.getRequestDispatcher().forward(request,response)
1、属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()request.getAttribute()
2、在前后两次执行后,地址栏不变,仍是当前文件的地址。
3、不能转向到本web应用之外的页面和网站,所以转向的速度要快。
4、URL中所包含的“/”表示应用程序(项目)的路径。

第二种 response.sendRedirect()
1、属于重定向,也是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求,前后页不共用一个request,不能读取转向前通过request.setAttribute()设置的属性值。
2、在前后两次执行后,地址栏发生改变,是目标文件的地址。
3、可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢。
4、URL种所包含的"/"表示根目录的路径。

特殊的应用:对数据进行修改、删除、添加操作的时候,应该用response.sendRedirect()。如果是采用了request.getRequestDispatcher().forward(request,response),那么操作前后的地址栏都不会发生改变,仍然是修改的控制器,如果此时再对当前页面刷新的话,就会重新发送一次请求对数据进行修改,这也就是有的人在刷新一次页面就增加一条数据的原因。

如何采用第二种方式传递数据:
1、可以选择session,但要在第二个文件中删除;
2、可以在请求的url中带上参数,如"add.htm?id=122"
典型的应用场景:

  • forward: 访问 Servlet 处理业务逻辑,然后 forward 到 jsp 显示处理结果,浏览器里 URL 不变

  • redirect: 提交表单,处理成功后 redirect 到另一个 jsp,防止表单重复提交,浏览器里 URL 变了

Servlet实现共享数据JavaWeb组件方法有哪些

Servlet实现共享数据JavaWeb组件方法有哪些

Servlet实现共享数据JavaWeb组件方法有哪些

全局作用域对象

开发人员习惯将ServletContext对象称为【全局作用域对象】
7. 工作原理:每个网站都存在一个全局作用域对象【相当于】一个Map;
将数据存入全局作业域对象,当前其他servlet此时都可以从全局作用域对象得到这个数据并进行使用;
8. 生命周期:Http服务器启动过程中,自动在内存中创建一个全局作用域对象,在运行期间,全局作用域对象就一个,并且一直存活,当Http服务器关闭时,进行销毁;
全局作用域对象生命周期贯穿网站整个运行周期

Servlet实现共享数据JavaWeb组件方法有哪些

ServletContext全局作用域对象,所有的Servlet共享这个对象

  • 是一个域对象

  • 可以读取全局配置参数

  • 可以搜索当前工程目录下面的资源文件

  • 可以获取当前工程名字(了解)

凡是域对象都有如下3个方法:

  • setAttribute(name,value);name是String类型,value是Object类型;往域对象里面添加数据,添加时以key-value形式添加

  • getAttribute(name);根据指定的key读取域对象里面的数据

  • removeAttribute(name);根据指定的key从域对象里面删除数据

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

HttpSession 服务端的技术
服务器会为每一个用户 创建一个独立的HttpSession

HttpSession原理
当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session
并且生成一个SessionID,这个SessionID在响应浏览器的时候会被装进cookie中,从而被保存到浏览器中,当用户再一次访问Servlet时,请求中会携带着cookie中的SessionID去访问,服务器会根据这个SessionID去查看是否有对应的Session对象
有就拿出来使用;没有就创建一个Session(相当于用户第一次访问);

域的范围:

Context域 > Session域 > Request域
Session域 只要会话不结束就会存在 但是Session有默认的存活时间(30分钟)

Cookie
客户端会话技术,将数据保存到客户端

  • 使用快速入门

  • 创建Cookie对象,绑定数据

new Cooike(String name,String value)

发送Cookie对象

response.addCookie(Cookie cookie)

获取Cookie,拿到数据

Cookie[] request.getCookie()

Cookie销毁时机
1.默认情况随浏览器关闭被销毁
2.手动设置情况下,设置Cookie存活时间,关闭浏览器不会导致Cookie被删除;

 cookie.setMaxAge(60);//设置cookie在硬盘存活1分钟

Session
服务器端会话技术
对于Servlet而言:
  若Servlet是客户端访问的第一个WEB应用的资源,则只有调用了request.getSession()或request.getSession(true) 才会创建HttpSession对象

1). 在Servlet中如何获取HttpSession对象?
  request.getSession(boolean create):create为false,若没有和当前JSP页面关联的HttpSession对象,则返回null;
  若有返回true create为true一定返回一个HTTPSession对象。若没有和昂前JSP页面关联的HttpSession对象,则服务器创建一个新的HttpSession对象返回,若有,则直接返回关联。
  request.getSession()等同于request.getSession(true)
2. 什么时候销毁HttpSession对象:
1).直接调用HttpSession的invalidate()方法:使HttpSession失效
2).服务器卸载了当前Web应用。
3).超出HttpSession的过期时间。

设置HttpSession的过期时间:单位为S

session.setMaxInactiveInterval(5);out.print(session.getMaxInactiveInterval());<!--在web.xml文件中设置HttpSession过期时间。 -->    <session-config>        <session-timeout>30</session-timeout>    </session-config><!--系统默认30分钟 -->

这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

Session具有以下特点:

(1)Session中的数据保存在服务器端;
(2)Session中可以保存任意类型的数据;
(3)Session默认的生命周期是30分钟,可以手动设置更长或更短的时间。

“Servlet实现共享数据JavaWeb组件方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Servlet实现共享数据JavaWeb组件方法有哪些

本文链接: https://www.lsjlt.com/news/297370.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Servlet实现共享数据JavaWeb组件方法有哪些
    本篇内容介绍了“Servlet实现共享数据JavaWeb组件方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录一、Servlet简...
    99+
    2023-06-20
  • Servlet实现共享数据JavaWeb组件的几种方法
    目录一、Servlet简介二、Servlet的运行过程Servlet组件:多个Servlet之间共享数据实现方案转发与重定向全局作用域对象Servlet JavaWeb三大组件包括,...
    99+
    2022-11-12
  • JavaScript中实现跨域共享的方法有哪些
    本篇文章给大家分享的是有关JavaScript中实现跨域共享的方法有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。同源策略在客户端编程语言...
    99+
    2022-10-19
  • vue 当中组件之间共享数据的实现方式
    目录vue组件之间共享数据方式Vuex使用vuex统一管理状态的好处vuex 的基本使用vuex 中的主要核心概念stateMutationActionGettervue组件之间共享...
    99+
    2022-11-13
    vue组件 vue组件之间数据 vue共享数据
  • JS实现数组去重的方法有哪些
    这篇文章主要介绍了JS实现数组去重的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS实现数组去重的方法有哪些文章都会有所收获,下面我们一起来看看吧。1.ES5常用:利用for嵌套for,然后spli...
    99+
    2023-06-29
  • JavaScript中实现数组去重有哪些方法
    小编给大家分享一下JavaScript中实现数组去重有哪些方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!数组去重const arr = [1, ...
    99+
    2022-10-19
  • Python数组变形的实现方法有哪些
    这篇文章主要介绍了Python数组变形的实现方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数组变形的实现方法有哪些文章都会有所收获,下面我们一起来看看吧。1.reshapereshape是...
    99+
    2023-06-30
  • pandas实现数据清洗有哪些方法
    pandas实现数据清洗的方法有:1、缺失值处理;2、重复值处理;3、数据类型转换;4、异常值处理;5、数据规范化;6、数据筛选;7、数据聚合和分组;8、数据透视表等。详细介绍:1、缺失值处理,Pandas提供了多种处理缺失值的方法,对于缺...
    99+
    2023-11-22
    数据清洗 Pandas
  • Vue实现多层组件嵌套的方法有哪些
    小编给大家分享一下Vue实现多层组件嵌套的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实例如下:<!DOCTYPE html> <html> ...
    99+
    2022-10-19
  • 实现Linux数据加密的方法有哪些
    这篇文章主要介绍“实现Linux数据加密的方法有哪些”,在日常操作中,相信很多人在实现Linux数据加密的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”实现Linux数据加密的方法有哪些”的疑惑有所...
    99+
    2023-06-12
  • JS实现数组随机排序的方法有哪些
    本篇内容介绍了“JS实现数组随机排序的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.利用数组方法sort实现随机排序实现随机排...
    99+
    2023-06-30
  • vuex数据持久化的实现方法有哪些
    本篇内容介绍了“vuex数据持久化的实现方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录业务需求:方案一:vuex-persis...
    99+
    2023-06-20
  • Java数组和接口的并发实现方法有哪些?
    Java作为一门强大的编程语言,在软件开发中广受欢迎。在Java中,数组和接口是两个非常重要的概念。在多线程编程中,Java数组和接口的并发实现方法也是非常重要的。本文将详细介绍Java数组和接口的并发实现方法。 一、Java数组的并发实现...
    99+
    2023-10-18
    接口 并发 数组
  • ASP中实现接口传输数组的方法有哪些?
    在ASP中实现接口传输数组的方法有很多种,本文将介绍其中三种常用的方法。 方法一:使用JSON格式传输数组 JSON是一种轻量级的数据交换格式,它可以把复杂的数据结构序列化为字符串,便于在不同的平台之间传输和解析。在ASP中,我们可以使用J...
    99+
    2023-07-31
    数组 打包 接口
  • 面试必备:Python与Linux下数组数据结构的实现方法有哪些?
    Python和Linux是开发者面试中常见的技术栈,数组是数据结构中最基本和常见的类型之一。本文将介绍Python和Linux下数组数据结构的实现方法,包括数组的定义、初始化、遍历、增删改查等操作。同时,为了更好地理解,我们将提供相应的演示...
    99+
    2023-09-26
    linux 面试 数组
  • JavaScript实现数据四舍五入的方法有哪些
    JavaScript实现数据四舍五入的方法:round()方法:将一个数字舍入为最接近的整数,即四舍五入。toFixed()方法:讲Number四舍五入为指定小数位数的数字。parseInt()方法:将小数转化为整数。ceil()方法:将一...
    99+
    2022-10-21
  • Python3中实现数据标准化的方法有哪些
    今天就跟大家聊聊有关Python3中实现数据标准化的方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、[0, 1] 标准化[0, 1] 标准化是最基本的一种数据标准化方法,...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作