servlet的三大作用域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet的三大作用域相关的知识,希望对你有一定的参考价值。

参考技术A java web开发中servlet三大作用域对象为request、session和application(ServletContext)

request表示一个请求,只要发出一个请求就会创建一个request。

仅在当前请求中有效。

常用于服务器间同一请求不同页面之间的参数传递。常用于表单的控件值传递。

request.setAttribute();request.getAttribute();request.removeAttribute();request.getParameter().

服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有Servlet共享。

用户打开浏览器会话开始,直到关闭浏览器会话才结束。一次会话期间只会创建一个session对象。

常用于web开发中的登录验证页面(当用户登录成功后浏览器分配其一个session键值对)

session.setAttribute(); session.getAttribute(); session.removeAttribute();

获得session对象方法:

在Servlet中:HttpSession session = request.getSession();

由于session属于jsp九大内置对象之一,当然可以直接使用。例如:<%session.serAttribute("name","admin")%>。

session是服务器对象,保存在服务器端。并且服务器可以将创建session后产生的sessionId通过一个cookie返回给客户端,方便下次验证。

所有的用户都可以取得这个信息,此信息在整个服务器中被保留。application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。

ServletContext在服务器启动时创建,在服务器关闭时销毁,一个javaweb应用只能创建一个ServletContext对象。所有客户端在访问服务器时共享同一个ServletContext对象。

获取application对象方法(Servlet中):

ServletContext app01 = this.getServletContext();

app01.setAttribute("name", "kaixuan");    //设置一个值进去

ServletContext app02 = this.getServletContext();

app02.getAttribute("name");    //获取键值对

*(1)  request:跟当前操作功能相关

* (2) session: 跟用户信息相关

* (3) application:跟项目全局信息相关----》淘宝配送地址

JavaWeb 测试题

目录

1.自定义 servlet 的三种方式,及区别?

2.写出 Servlet 中的三大作用域,并分别说明各自的特点?

3.filter 和 servlet 在生命周期上的区别?

4.表单提交的 2 种方式?及区别?

5.jsp 有哪些内置对象? 作用分别是什么?


1.自定义 servlet 的三种方式,及区别?

  1. 实现Servlet接口,实现所有抽象方法。该方式支持最大程度的自定义。
  2. 继承 GenericServlet 抽象类,必须重写 service 方法,其他方法可选择重写。该方式让我们开发 Servlet 变得简单。但是这种方式与 HTTP 协议无关。
  3. 继承 HttpServlet 抽象类,需要重写 doGet方法和 doPost 方法,该方式表示请求和响应都需要和 HTTP 协议相关。

详细内容可查看这篇文章!


2.写出 Servlet 中的三大作用域,并分别说明各自的特点?

  1. request,特点:request作用域为一次请求,它的变量有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
  2. session,特点:如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。
  3. application,特点:如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用关闭结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。

总结:

  • request是一次请求
  • session是一个会话
  • application是多次会话(Tomcat开启到关闭)

3.filter 和 servlet 在生命周期上的区别?

  1. filter是在系统启动的时候通过init()初始化的,每次请求都只会调用dofliter方法进行处理,服务器停止的时候调用destroy()进行销毁!
  2. servlet 是在系统启动或者请求到达servlet时,通过init()方法进行初始化,一旦被装入了web服务器,一般不会从服务器删除,直到服务器关闭才会调用destroy()方法进行销毁。每次请求,Request都会被初始化,响应请求后,请求被销毁。但是servlet不会随着请求而销毁;如果某个Servlet配置了<load-on-startup>1</load-on-startup>,该Servlet也是在Tomcat(Servlet容器)启动时初始化。

【注意】服务器关闭时,servlet和filter依次被销毁!


4.表单提交的 2 种方式?及区别?

form表单中method有两种提交方法,get和post分别对应HttpServlet中的doGet()和doPost()方法,这两种提交方式其实有很大的区别:

  1. form表单默认提交方式为get方式,get方式发送数据.
  2. 数据回传方式不同:get是从服务器上获取数据,post是向服务器发送数据。
  3. 用户看到过程不同:get是把参数数据队列加到提交表单的action属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到;post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  4. 服务器端回传方式不同:对于get方式,服务器端用Request.QueryString获取变量的值;对于post方式,服务器端用Request.Form获取提交的数据。、
  5. 传送大小不同:get传送的数据量较小,不能大于2KB;post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  6. 安全性不同:get安全性非常低,post安全性较高。

5.jsp 有哪些内置对象? 作用分别是什么?

  1. HttpServletRequet类的Request对象:代表请求对象,主要用于接受客户端通过HTTP协议连接传输服务器端的数据;
  2. HttpSevletResponse类的Response对象:代表响应对象,主要用于向客户端发送数据;
  3. JspWriter类的out对象:主要用于向客户端输出数据,out的基类是jspWriter;
  4. HttpSession类的session对象:主要用来分别保存每个月的信息与请求关联的会话;会话状态的维持是web应用开发者必须面对的问题;
  5. ServletContext类的application对象:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application,故其保存的信息被所有用户所共享;
  6. PageContext类的PageContext对象:管理网页属性,为jsp页面包装页面的上下文,管理对属于jsp的特殊可见部分中已经命名对象的访问,它的创建和初始化都是由容器来完成的;
  7. ServletConfig类的Config对象:代码片段配置对象,标识Servlet的配置;
  8. Object类的Page对象,处理jsp页面,是object类的一个实例,指的是jsp实现类的实例;
  9. Exception对象:处理jsp文件执行时发生的错误和异常,只有在错误页面里才使用,前提是在页面指令里要有isErrorPage=true;

记录和复习Java基础知识点冲冲冲!

 

以上是关于servlet的三大作用域的主要内容,如果未能解决你的问题,请参考以下文章

Java Web之Servlet的三大作用域对象

作用域和内置对象

servlet的四个作用域

工具Servlet流作用域和其他流说明

7 Servlet交互和作用域对象

servlet技术中的listener有啥具体作用