Servlet只是一种规范,满足我们的软件开发,还需要其它很多相关联的对象,这里介绍一下:1,ServletConfig,ServeltContext 2,HttpServletRequest 3,Cookie,Session
一,关于Servlet的两个对象:
1,ServletConfig:Javax.servlet.ServletConfig:是SUN制定的接口。
ServletConfig对象是Servlet配置信息对象,Servlet类在web.xml文件中配置的信息会自动被封装到对应的ServletConfig对象中,一个Servlet对象对应一个ServletConfig对象。ServletConfig对象的创建时刻和Servlet几乎在同一时间创建。这个好比,我们每个人都有一份档案,档案随着我们的出生而来,随着我们的死亡而去,记录着我们的所有相关信息。
2,ServletContext:javax.servlet.ServletContext是SUN制定的接口。
ServletContext对象在Tomcat服务器启动阶段解析web.xml文件的时候被创建,一个webapp对应一个ServletContext对象。该对象一旦被创建不会被销毁,除非Tomcat服务器关闭。(web.xml文件和ServletContext对象是对应关系。一个web.xml文件对应一个ServletContext)。这个其实就相当于JSP中的九大内置对象之一——application。
这个看一下它的几个方法,还是会经常用的,例如一个网站的访问量等,设计到整个项目的变量,所有用户共享的数据需要存储在ServletContext中:
分析总结一下:
对于Servlet这三个对象,他们之间的关系可以看做这张图的:
二,HttpServletRequest ,这个是和HttpServlet关联的一个对象,但是在应用中,它在数据传输方面起着非常重要的作用,所以拿出来总结一下:
1,javax.servlet.http.HttpServletRequest也是SUN制定的规范、接口。
2,简介:HttpServletRequest我们称作请求,这个请求对象的创建是Tomcat服务器完成的。代表一次请求,一次请求对应一个request对象。“HTTP请求协议”中所有的数据都被封装到request对象中,所以我们通过request对象可以获取用户提交的所有数据。
3,常用方法: 获取请求路径
获取请求URI
获取参数Map
获取参数Map集合的所有key,获取用户提交数据的所有name
通过参数Map集合的key,获取参数Map集合的value(适合于复选框checkbox)
通过参数Map集合的key获取参数Map集合value(一维数组)的首元素
获取客户端IP地址
转发(转发的下一个资源可能是Servlet、JSP、HTML),转发是一次请求。
分析总结:HttpServletRequest在数据传递方面非常重要,代表着一次请求。在下边的Session中,会对比一下request,session,application三者。
三,Cookie和Seesion对象:
1,Cookie:
a,Cookie的原理:Cookie是在服务器上创建,发送到浏览器客户端,并保存在浏览器上的一个Java对象;
b,Cookie和路径的关系:默认情况下,Cookie绑定其路径本身,相同根路径,子路径,都可以触发Cookie的发送;绑定情况下,只受固定的路径进行触发。
c,Cookie和时间的关系和保存方式的关系:默认情况下,Cookie会存储到缓存当中,关闭浏览器,其当自动消失,当设定时间值>0时,会保存到硬盘上,0为无效的Cookie,<0则相当于没有设置时间相当于默认的情况。
分析总结:也就是在我们浏览器上保存了访问服务器的一些信息,(这个在我们使用的浏览器上应该经常见到的,例如访问历史记录,几周内自动登录等功能)方便我们对服务器的访问。
2,HttpSession
a,Session的工作原理:在javaweb中session是一个存储在WEB服务器端的java对象,该对象代表用户和WEB服务器的一次会话,通过session对象可以完成数据的存取,而放在session对象中的数据都是用户相关的。系统为每个访问者都设立一个独立的session对象,用以存取数据,并且各个访问者的session对象互不干扰。session与cookie是紧密相关的。客户端通过将cookie中数据发送到服务器端,服务器从session中读取数据,进行数据展示,加快速度。例如用户姓名等信息会存放到session中。
b,Session的常用方法:
c,Session对象的超时设置的三种方式:
<Context path="/test" docBase="/test" defaultSessionTimeOut="3600" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/>
<session-config> <session-timeout>30</session-timeout> </session-config>
session.setMaxInactiveInterval(30*60);
分析总结:request,session,aplication,都是用来专门存储数据的,那么他们都是存储什么数据呢?有什么选择原则么?
1,request是请求范围的,只针对一次请求有效,范围最小,用来存储一次请求中需要的数据,消耗内存较少,最优选择; 2,session是用户级别的,一个用户一个session,范围中间,用来存储和用户级别有关的数据,选择次之; 3,application是程序级别的,一个应用程序,一个application,用来存储和整个程序有关的数据,消耗内存较大,能不用则不用,但是向访问量等全局数据还是需要使用的。
综上为Servlet开发中用到的一次重要对象,相互之间的关系,相互之间的区别,每一个对象的功能,使用,都需要我们熟练掌握,非常重要的。 |
|