您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

最全的java四大域总结(图文)

2024/3/15 18:17:32发布26次查看
new</a>',courier>最近学完了web部分,发现有些地方总是单个容易理解,可是把所有的放在一起来大杂烩,总是有那么几个知识点容易混淆。其实网上的资料已经够多了,虽然也不乏辛劳的搬运工。可是最终的目的不就是要我们自身理解吗?自己理解了的东西才正真是我们的。作为额外的奖励,我们先来关注一下jsp的九大隐式对象。
可以看看下图中关于jsp的九大隐式对象,它们可总是被老师们说是重点重点哦。
作用域------顾名思义,起作用的大小范围也!如果是你自己去学习一个知识点,你要达到哪些目标才算是对一个知识点称得上是懂得,理解,掌握呢?从扁神医的望闻问切,到数据库的增删改查,所有的事物开始也不外乎:是什么?有什么用?怎么用?为什么可以这么用?故而,我觉得咱们应该把握以下问题,带着这些问题去学习,发现自己的不足,才是学习的上策。
1)作用域的实际大小。(是什么?)
2)作用域的作用。(有什么用?)
3)怎么使用这些作用域。(怎么用?)
4)它这样使用实现的原理。(为什么可以这么用?)
下面开始逐一分析:
(一)servletcontext域(application域)1)作用域的实际大小。(是什么?)
servletcontext域起作用的范围是:整个web应用程序。
数据产生之后,不仅等会还要用 ,还要给别人用,则请使用servletcontext。
它是四个域中范围最大的域。
2)  作用域的作用。(有什么用?)
由于一个web应用中的所有servlet共享同一个servletcontext对象,所以多个servlet通过servletcontext对象实现了数据在不同servlet之间的共享。
3)怎么使用这些作用域。(怎么用?)
a)可以通过编程的方式绑定,也可以作为web应用的全局变量被所有servlet和jsps访问
设置context属性:               servletcontext application=this.getservletcontext();               application.setattribute(person1,new person(jim));               application.setattribute(person2,new person(green));  获取context属性:               servletcontext application=this.getservletcontext();               enumberation persons=application.getattributenames();                while(persons.hasmoreelements()){                       string name=(string)persons.nextelement();                       person p=(person)persons.getattribute(name);                       application.removeattribute(name);               }
b)为整个web应用配置context域:
修改web.xml配置文件,加入以下内容
<context -param>
<param-name>data</param-name>
<param-value>hello world !</param-value>
</context - param>
从servlet中访问这些初始化参数:
              servletcontext application=this.getservletcontext();
              out.println(application.getinitparameter(data));
c)读取资源文件
   使用servletcontext接口可以直接访问web应用中的静态内容文档结构.包括html,gif和jpeg文件。如以下方法:
         .getresource()
         .getresourceasstream()
   这两个方法的参数都是以/开头的字符串,表示资源相对于context根的相对路径.文档结构可以存在于服务器文件系统,或是war包中,或是在远程服务器上,抑或其他位置。不可以用来获得动态资源,比如,getresource(/index.jsp),这个方法将返回该jsp文件的源码,而不是动态页面.可以用 dispatching requests 获得动态内容.列出web应用中可被访问的资源,可以使用getresourcepaths(string path)方法。
4)它这样使用实现的原理或优缺点。(为什么可以这么用?)
servlet并不适合做数据输出,故需要将数据转发给jsp文件进行美化再输出给客户端。
jsp中可嵌入java代码,这使得它接收java数据变得可能。同时,由于servletcontext域可使整个web应用共享该数据,因此而带来“线程安全”问题同样影响对转发的数据,故而需要使用request域。
(二)httpsession域(session域)1)作用域的实际大小。(是什么?)
httpsession的作用域是:一次会话。
数据产生之后显示给用户了,等会还要使用的情况下使用httpsession域。
它是四个域中范围第二大的域。
2)  作用域的作用。(有什么用?)
(会话范围)在第一次调用request.getsession()方法时,服务器会检查是否已经有对应的session。如果没有,就在内存中创建一个session并返回。当一短时间内(默认30分钟)session没有被使用,则服务器会销毁该session。若服务器非正常关闭,未到期的session也会跟着销毁。若调用session提供的invalidate()方法,可以立即销毁session。
3)怎么使用这些作用域。(怎么用?)
a) jsp中操作session (string)request.getsession().getattribute(username); // 获取 request.getsession().setattribute(username, xxx);  // 设置  b) java中操作session //servlet中 request.getsession(); session.getattribute(username); session.setattribute(username, xxx); session.setmaxinactiveinterval(30*60); session.invalidate();   //struts中方法1 servletactioncontext.getrequest().getsession().setattribute(username, xxx); servletactioncontext.getrequest().getsession().getattribute(username); servletactioncontext.getrequest().getsession().setmaxinactiveinterval(30*60); servletactioncontext.getrequest().getsession().invalidate(); //struts中方法2 actioncontext.getcontext().getsession().put(username, xxx); actioncontext.getcontext().getsession().get(username); actioncontext.getcontext().getsession().clear();  c) web.xml中操作session <session-config>      <session-timeout>30</session-timeout>  </session-config> d) tomcat-->conf-->conf/web.xml <session-config>    <session-timeout>30</session-timeout></session-config>
4)它这样使用实现的原理。(为什么可以这么用?)
httpsession在服务器中,为浏览器创建独一无二的内存空间,在其中保存了会话相关的信息。服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都 会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。如果要问我为什么,我也不知道啊!
(三)servletrequest域(request域)1)作用域的实际大小。(是什么?)
servletrequset域是:整个请求链(请求转发也存在)。
数据产生之后,只需要使用一次,这种情况下请使用servletrequset域。
它是四个域中范围排第三的域。
2)  作用域的作用。(有什么用?)
在整个请求链中共享数据。
最常用到:在servlet中处理好的数据交给jsp显示,此时参数就可以放置在servletrequset域中带过去。
3)怎么使用这些作用域。(怎么用?)
a) 获得客户机信息的方法
    getrequesturl方法返回客户端发出请求时的完整url。
    getrequesturi方法返回请求行中的资源名部分。
    getquerystring 方法返回请求行中的参数部分。
    getremoteaddr方法返回发出请求的客户机的ip地址
    getremotehost方法返回发出请求的客户机的完整主机名
    getremoteport方法返回客户机所使用的网络端口号
    getlocaladdr方法返回web服务器的ip地址。
    getlocalname方法返回web服务器的主机名
    getmethod得到客户机请求方式
 b) 获得客户机请求头
    getheader(string name)方法
    getheaders(string name)方法
    getheadernames方法 
 c) 获得客户机请求参数(客户端提交的数据)
    getparameter(name)方法
    getparametervalues(string name)方法
    getparameternames方法
    getparametermap方法
4)它这样使用实现的原理。(为什么可以这么用?)
在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
(四)pagecontext域(page域)1)作用域的实际大小。(是什么?)
pagecontext域的作用范围是:整个jsp页面。
它是四个域中范围最小的一个域。
2)  作用域的作用。(有什么用?)
a) 它可以获取其它八大隐式对象,可以认为它是一个入口对象。
b) 获取其它所有域中的数据。
c) 跳转到其它资源。其身上提供了forword和sendredirect方法,简化了转发和重定向的操作。 
3)怎么使用这些作用域。(怎么用?)
以下以一个简单的jsp页面程序为例:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%><!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><title>pagecontext对象_例1</title></head><body><br><%//使用pagecontext设置属性,该属性默认在page范围内 pagecontext.setattribute("name","地球"); request.setattribute("name","太阳系"); session.setattribute("name","银河系");//session.putvalue("name","麦哲伦系"); application.setattribute("name","宇宙");%>page设定的值:<%=pagecontext.getattribute("name")%><br>request设定的值:<%=pagecontext.getrequest().getattribute("name")%><br>session设定的值:<%=pagecontext.getsession().getattribute("name")%><br>application设定的值:<%=pagecontext.getservletcontext().getattribute("name")%><br>范围1内的值:<%=pagecontext.getattribute("name",1)%><br>范围2内的值:<%=pagecontext.getattribute("name",2)%><br>范围3内的值:<%=pagecontext.getattribute("name",3)%><br>范围4内的值:<%=pagecontext.getattribute("name",4)%><br><!--从最小的范围page开始,然后是reques、session以及application--><%pagecontext.removeattribute("name",3);%>pagecontext修改后的session设定的值:<%=session.getvalue("name")%><br><%pagecontext.setattribute("name","宇宙",4);%>pagecontext修改后的application设定的值:<%=pagecontext.getservletcontext().getattribute("name")%><br>值的查找:<%=pagecontext.findattribute("name")%><br>属性name的范围:<%=pagecontext.getattributesscope("name")%><br></body></html>
显示结果:
page设定的值:地球 request设定的值:太阳系 session设定的值:银河系 application设定的值:宇宙 范围1内的值:地球 范围2内的值:太阳系 范围3内的值:银河系 范围4内的值:宇宙 pagecontext修改后的session设定的值:nullpagecontext修改后的application设定的值:宇宙 值的查找:地球 属性name的范围:1
4)它这样使用实现的原理。(为什么可以这么用?)
 pagecontext对象,这个对象代表页面上下文,该对象主要用于访问jsp之间的共享数据。当对jsp的请求时开始,当响应结束时销毁。
以上就是最全的java四大域总结(图文)的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product