Servlet第四天

来源:互联网 发布:单片机仿真软件百度云 编辑:程序博客网 时间:2024/06/03 15:59

一、servletContext对象

servlet上下文对象的所用是:
1、相对路径转绝对路径

String path="/1.jpg";ServletContext sc=this.getServletContext();//获取servletContext对象String realPath=sc.getRealPath();File file=new File(realPath);System.out.println(realPath);

2、获取容器附加信息

ServletContext sc=this.getServletContext();response.setContentType("text/html;charser=utf-8");PrintWriter pw=response.getWriter();pw.println("Tomcat Server Info:"+sc.getServerInfo+"支持Servlet"+sc.getMajorVersion()+"."+sc.ghetMinorVersion());

3、全局容器
ServletContext通过两个api完成对他的添加于读取的操作

setAttribute(String key,Object value);Object value=getAttribute(String key);

3.1自启动的servlet
所谓的自启动的serlvet表示,该servlet的实例化不依赖于请求,而是依赖于容器,当容器启动时会实例化这个servlet。
如何将一个servlet修改为自启动呢?
在web.xml文件中找到这个servlet所对应的在该节点中添加100其中100为优先级的标识,他并不是一个时间,当为多个servlet配置了自启动时,tomcat会根据数值的大小来决定启动的先后顺序。数值越小的优先级越高。
使用全局容器需要注意的地方:
千万不要存业务数据,因为ServletContext的生命周期太长了。意味着存放该对象下的数据也会一直存在,那么我们还需要考虑到数据同步的问题。
4、读取web.xml文件中的配置信息

<context-param>    <param-name>key</param-name>    <param-value>param-value</param-value></context-param>String value=sc.getInitParameter("key");//获取配置文件中的配置信息

二、ServletConfig

用户读取我们在servlet节点中配置的配置信息。注意一个每个servletConfig对象只能去读取web.xml文件中对于当前这个servlet的配置信息中的节点中的值,不能跨sevlet获取

<servlet>    <servlet-name>ServletConfigDemo</servlet-name>    <servlet-class>com.bjsxt.ServletConfigDemo</servlet-class>    <init-param>        <param-name>ServletConfigDemo-key</param-name>        <param-value>ServletConfigDemo-value</param-value>    </init-param></servlet>ServletConfig sc=this.getServletConfig();sc.getInitParameter("ServletConfigDemo-key");

三、cookie

Http协议特点:1、单向性。1、无状态
Cookie:是一个依赖于客户端维持会话状态的对象。
Cookie特点:如果我们的程序需要给客户端浏览器返回一个cookie那么这个对象是需要我们自己来创建的。cookie对象的结构为key与value结构。Cookie的类型又分为两种1、状态cookie。2、持久化cookie。如果我们需要使用cookie对象向客户端浏览器传递数据,那么数据本身不能是中文。当客户端浏览器请求servlet时,客户端浏览器会将这个服务器曾经协会他的所有的cookie对象在请求中传递过来。

1、Cookie的类型

1)状态cookie:状态cookie的特点是浏览器会将对象保存在运行浏览器的进程中。他的生命周期是随着浏览器的存在而存在,随着浏览器的消亡而消亡。
2)持久化cookie:持久化cookie的特带你是浏览器会将这个cookie对象持久化到磁盘中。当cookie设置时间到达时,浏览器就不会再请求中传递这个cookie了。对于保存cookie的文件,我们不要管理。浏览器自己会回来管理这些文件。如何创建一个持久化cookie呢?

Cookie c=new Cookie("first","first");c.setMaxAge(120);//单位为秒,持久化cookie

2、cookie传值中含有中文的解决方式

1)可以使用加密算法来解决,但是需要注意的是选择加密算法时一定要选择具有可逆性的加密算法

String value=EncUtil.encrypt("我是中国人");//使用EncUtil工具类完成加密String str=EncUtil.decrypt("c.getValue()");//使用EncUtil工具类解密

2)可以使用jdk中URLEncoder与URLDecoder来完成中文的处理。

String str=URLEncoding.encode("我是中国人","utf-8");//编码String str1=URLDecoder.decode(c.getValue(),"utf-8");//解码

3、服务器返回客户端浏览器cookie数量

浏览器能够接受服务器端所返回的cookie的数量是有限的,具体多少个和浏览器的品牌有关系。

原创粉丝点击