Servlet(二)——相关联对象
来源:互联网 发布:java有number类型吗 编辑:程序博客网 时间:2024/06/16 16:23
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中:
- 获取上下文初始化参数的所有name
- Enumeration<String> names = application.getInitParameterNames();
- 通过上下文初始化参数的name获取value
- String value = application.getInitParameter(String name);
- 获取绝对路径
- String path = application.getRealPath(“/index.html”); / 开始,代表webapp的根
- 存储数据
- application.setAttribute(String name,Object obj);
- 取数据
- Object o = application.getAttribute(String name);
- 删除数据
- application.removeAttribute(String name);
分析总结一下:
对于Servlet这三个对象,他们之间的关系可以看做这张图的:
二,HttpServletRequest ,这个是和HttpServlet关联的一个对象,但是在应用中,它在数据传输方面起着非常重要的作用,所以拿出来总结一下:
1,javax.servlet.http.HttpServletRequest也是SUN制定的规范、接口。
2,简介:HttpServletRequest我们称作请求,这个请求对象的创建是Tomcat服务器完成的。代表一次请求,一次请求对应一个request对象。“HTTP请求协议”中所有的数据都被封装到request对象中,所以我们通过request对象可以获取用户提交的所有数据。
3,常用方法:
获取请求路径
- String path = request.getContextPath();
获取请求URI
- String uri = request.getRequestURI();
获取参数Map
- Map<String,String[]> parameterMap = request.getParameterMap();
获取参数Map集合的所有key,获取用户提交数据的所有name
- Enumeration<String> parameterNames = request.getParameterNames();
通过参数Map集合的key,获取参数Map集合的value(适合于复选框checkbox)
- String[] parameterValues = request.getParameterValues(String name);
通过参数Map集合的key获取参数Map集合value(一维数组)的首元素
- String value = request.getParameter(String name);
获取客户端IP地址
- String ip = request.getRemoteAddr();
转发(转发的下一个资源可能是Servlet、JSP、HTML),转发是一次请求。
- request.getRequestDispatcher(“资源路径”).forward(request,response);
分析总结: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的常用方法:
- 获取session对象(1):request.getSession(true); request.getSession();
- 获取session对象,如果获取不到则新建
- 获取session对象(2):request.getSession(false);
- 获取session对象,如果获取不到则返回null
- 向session中存储数据:session.setAttribute("name",ObjectValue);
- 从session中获取数据:Object value = session.getAttribute("name");
- 删除session中某个数据:session.removeAttribute("name");
- 使session失效:session.invalidate();
c,Session对象的超时设置的三种方式:
- 在CATALINA_HOME/conf/servler.xml文件中定义:
<Context path="/test"
docBase="/test"
defaultSessionTimeOut="3600"
isWARExpanded="true"
isWARValidated="false"
isInvokerEnabled="true"
isWorkDirPersistent="false"/>
- 在web.xml中定义:
<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开发中用到的一次重要对象,相互之间的关系,相互之间的区别,每一个对象的功能,使用,都需要我们熟练掌握,非常重要的。
- Servlet(二)——相关联对象
- Servlet(二)——相关联对象
- Servlet(二)——相关联对象
- Servlet是什么,相关联对象
- servlet——servlet入门(二)
- jsp/servlet相关技术 (五) --- jsp内置对象(二)
- Servlet相关对象
- Servlet学习笔记(二)—— Servlet简介
- Servlet介绍(二)——Servlet中方法介绍
- Servlet——相关概念
- 第6天:Servlet相关知识(二)
- Servlet——ServletContext 对象
- Servlet——ServletContext 对象
- Java基础——Servlet(六)分页相关
- Java基础——Servlet(七)过滤器&监听器 相关
- Servlet开发(二)Response对象常见应用
- 获取servlet相关的域对象
- Webservice中获取Servlet的相关对象
- c++ 笔试题2
- 第八章 第一个“系统”——图书管理系统
- ACM-大数之A + B Problem II——hdu1002
- Cython基础--Cython的类
- Goldbach
- Servlet(二)——相关联对象
- IBM RAD 7.5.4安装
- 嵌入式学习心得
- 支付宝快捷支付集成里的坑
- Apache下实现禁止目录浏览
- 求二叉树的深度
- SharePoint默认的欢迎WebPart中超链接样式
- 股票最大收益问题3 Best Time to Buy and Sell Stock III
- OpenCV 脸部跟踪(1)