千家信息网

Servlet怎么实现共享数据JavaWeb组件

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍了Servlet怎么实现共享数据JavaWeb组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Servlet怎么实现共享数据JavaWeb组件文章都会有
千家信息网最后更新 2025年01月23日Servlet怎么实现共享数据JavaWeb组件

这篇文章主要介绍了Servlet怎么实现共享数据JavaWeb组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Servlet怎么实现共享数据JavaWeb组件文章都会有所收获,下面我们一起来看看吧。

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

转发与重定向

第一种 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 变了

全局作用域对象

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

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)

3.发送Cookie对象

response.addCookie(Cookie cookie)

4.获取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());            30    

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

Session具有以下特点:

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

关于"Servlet怎么实现共享数据JavaWeb组件"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Servlet怎么实现共享数据JavaWeb组件"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

对象 服务 数据 服务器 客户 组件 全局 客户端 文件 作用 接口 时间 应用 方法 浏览器 页面 浏览 内容 用户 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 ftp服务器密码修改 生态软件开发技术指导 浙江数据软件开发设施有哪些 湖北常见软件开发要多少钱 数据服务器和数据库 葫芦岛市网络安全保卫支队 海南crm软件开发服务商 房地一体项目数据库自检报告范文 计算科学与技术网络技术方向 网络安全经费保障措施 用友erp找不到数据库 数据库怎么规范化范式 饥荒怎么看本地服务器 数据库为啥要迁移数据 数据库创建柱形图报表 静海数据库恢复 维护网络安全的具体举措 沈阳直销软件开发外包 大学生对网络安全的看法 我的世界网易史上最简单服务器 石家庄互联网科技公司 sql数据库sa密码破解 三维土地gis系统软件开发公司 记录顺序 数据库 软件开发项目管理问题分析表 达梦数据库如何去除字段中空格 用数据库算质数 湖南税务发票上传服务器 《网络安全法》 国家措施 莱芜民主评议软件开发
0