- 浏览: 83589 次
- 性别:
- 来自: 郑州市
-
文章分类
最新评论
-
kellen_liu:
学习了!!
ipc$ -
gdljg0460:
[color=orange][/color]lkkk
过滤器(filter)在web 中的应用 -
jasongreen:
我一直用它,好东西
过滤器(filter)在web 中的应用 -
love_y:
强烈支持~!
过滤器(filter)在web 中的应用 -
love_y:
强烈支持~!
过滤器(filter)在web 中的应用
Servlet 相关内容 续一
Serlvet生命周期:
Servlet运行在Servlet容器中,其生命周期由容器管理。Servlet的生命周期通过
javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。
包含了四个阶段:
1、加载和实例化
Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到
需要这个Servlet来响应到一个请求时,创建Servlet实例。当Servlet容器启动后,它
必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统、远程文件
系统或者其他的网络服务中通过类加载器加载Servlet类,成功加载后,容器创建
Servlet的实例。因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet
的默认构造函数,也就是不带参数的构造函数,所以我们在编写Servlet类的时候,不
应该提供带参数的构造函数。
2、初始化
在Servlet实例化之后,容器必须调用Servlet的init()方法初始化这个对象。对于
一个Servlet实例,init()方法只能调用一次。在初始化期间,Servlet实例可以使用容
器为它准备的ServletConfig对象从Web应用程序的配置信息(web.xml)中获取初始化参
数信息。如果初始化失败(数据库连接失败、没有找到初始化参数)将抛出异常。
3、请求处理
Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在
service()方法调用之前,init()方法必须成功执行。
4、服务终止
当容器检测到一个Servlet实例应该从服务中被移出的时候,容器就会调用实例的
destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久设备中。如
果再次需要这个Servlet请求,Servlet容器会创建一个新的Servlet实例。
注:如果需要让Servlet容器在启动时自动加载servlet,可以在web.xml文件中配置
<load-on-startup>元素。
Servlet上下文:
运行在Java虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文。Java
Servlet API 提供了一个ServletConext接口用来表示上下文。在这个接口中定义了一
组方法,Servlet可以使用这些方法与它的Servlet容器进行通信。
ServletContext对象是Web服务器中的一个已知路径的根。例如:一个Web程序:
TServlt,Servlet上下文被定位于http://localhost:8080/TServlet。以/TServlet请
求路径(称为上下文路径)开始的所有请求被发送到与此ServletContext关联的Web应
用程序。
ServletContext接口:
一个ServletContext对象表示了一个Web应用程序的上下文。Servlet容器在Servlet初
始化期间,向其传递ServletContext对象,也可以通过ServletContext对象的
getServletContext()方法来得到ServletContext对象。也可以通过GenericServlet类
的getServletContext()方法得到ServletContext对象,不过GenericServlet类的
getServletContext()也是调用ServletConfig对象的getServletContext方法来得到这
个对象的。
ServletContext接口定义了下面的这些方法,Servlet容器提供了这个接口的实现。
·public java.lang.Object getAttribute(java.lang.String.name)
·public java.util.Enumeration getAttributeNames()
·public void removeAttribute(java.lang.String.name)
·public void setAttribute(java.lang.String.name,java.lang.Object object)
用于读取、移出和设置共享属性,任何一个Servlet都可以设置某个属性,而同一个Web
应用程序的另一个Servlet可以读取这个属性,不管这些Servlet是否为同一个客户进行
服务。
·public ServletContext getContext(java.lang.String uripath)
该方法返回服务器上与指定的URL相对应的ServletContext对象。给出的uripath参数必
须以斜扛(/)开始,被解释为相对于服务器文档根的路径。处于安全方法的考虑,如果
调用该方法访问的一个受限制的ServletContext对象,那么该方法将返回null。
·public java.lang.String getInitParameter(java.lang.String name)
·public java.util.Enumeration getInitParameterNames()
可以为Servlet上下文定义初始化参数,这些参数被整个Web应用程序所使用。可以部署
描述符(web.xml)中使用<context-param>元素定义上下文的初始化参数,上面两个方法
用于方法这些参数。
·public int getMajorVersion()
·public int getMinorVersion()
上面两种方法用于返回Servlet容器支持的Java Servlet API的主版本和此版本号。
·public java.lang.String getMimeType(java.lang.String file)
该方法返回指定文件的MIME类型,如果未知,返回null。
·public RequestDispatcher getRequestDispatcher(java.lang.String path)
该方法返回一个RequestDispatcher对象,作为给定路径上的资源的封装。可以使用
RequestDispatcher对象将一个请求转发(forward)给其他资源进行处理,或者在响应
中包含资源。要注意的是,传入的参数path必须以斜扛(/)开始,被解释为相对于当
前上下文根(context root)的路径。
·public RequestDispatcher getNameDispatcher(java.lang.String name)
该方法与getRequestDispatcher()方法类似。不同之处在于,该方法接受一个在部署
描述符中以<servlet-name>元素给出的Servlet(jsp)的名字作为参数。
·public java.lang.String getRealPath(java.lang.String path)
在一个Web应用程序中,资源用相对于上下文路径的路径来引用,这个方法就可以返
回资源在服务器文件系统上的真实路径(文件的绝对路径)。返回的真实路径的格式应
该适合于运行这个Servlet容器的计算机和操作系统。
·public java.net.URL getResource(java.lang.String path)throws
java.net.MalformedURLException
该方法返回被映射到指定路径上的资源的URL。
·public java.io.InputStream getResourceAsStream(java.lang.String path)
与getResource方法类似,不同之处在于,该方法返回资源的输入流对象。另外,使用
getResourceAsStream方法,元信息(如内容长度和内容类型)将丢失,而使用
getResource()方法,元信息是可用的.
·public java.util.Set getResourcePaths(java.lang.String path)
该方法返回资源的路径列表,参数path必须以斜扛开始,指定用于匹配资源的部分路径
·public java.lang.String getServerInfo()
该方法返回运行Servlet的容器的名称和版本。
·public java.lang.String getServletContextName()
该方法返回在部署描述符中是<display-name>元素指定的对应于当前ServletContext
的web应用程序的名称。
·public void log(java.lang.String msg)
·public void log(java.lang.String message,java.lang.Throwable throwable)
ServletContext接口提供了上面两个记录日志的方法,第一个方法用于记录一般的日
志,第二个方法用于记录指定异常的栈跟踪信息。
实例: 页面访问统计。
servlet中的代码:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = this.getServletContext(); Integer count = (Integer) context.getAttribute("counter"); if (count == null) { count = new Integer(1); } else { count = new Integer(count.intValue()+1); } resp.setContentType("text/html;charset=gb2312"); PrintWriter out = resp.getWriter(); out.println("<html><head><title>"); out.println("counter"); out.println("</title></head><body>"); String st = "页面访问量为:"+count; out.println(st); out.println("</body></html>"); context.setAttribute("counter", count); out.close(); }
在web.xml文件中配置即可。
发表评论
-
应用OSCache提升J2EE系统运行性能
2009-05-19 11:38 970作者简介 肖菁,软件工程师,IBM developer ... -
ExtJs 关键概念解惑
2009-05-11 09:13 1846l 面板Panel:面板是一块区域,程序员可以 ... -
jmock 单元测试
2009-05-04 11:12 1222JMock是帮助创建mock对象 ... -
基于Tomcat开发Portlet------续
2009-04-03 15:55 1700官方文档说如果使用了“80%9d\j2sdk1.4.1_07\ ... -
基于Tomcat开发Portlet
2009-04-03 15:36 33191. 文档说明 本文基于Tomcat开发Portlet的部分 ... -
xp 安装sqlserver 2000
2008-07-09 09:12 2235为了帮朋友解决在WINDOWS ... -
appfuse 2 下载
2008-05-16 10:32 8679具体步骤: 1、下载jdk,maven,mysql5.x.设 ... -
J2EE 中的安全
2008-04-07 10:09 1349本文所介绍的内容是基于j2ee1.3版本的。 j2ee中的安全 ... -
用过滤器进行权限控制实例 附源码
2008-01-15 13:44 3710用过滤器实现的简单的权限控制 没有登陆的情况下,直接访问登陆页 ... -
过滤器(filter) 例子源码
2008-01-15 09:41 2770最基本的过滤器的应用的源码. 过滤器的相关内容可以查看相关内 ... -
过滤器(filter)在web 中的应用
2008-01-14 18:12 4285过滤器(Filter)在Web开发中的应用: Filter是 ... -
servlet 相关内容
2008-01-11 17:03 1283Servlet和Servlet容器: 我们通过浏览器访问一个网 ... -
XSL(eXtensible Stylesheet Language)------可扩展样式标语
2008-01-11 13:41 1214XSL(eXtensible Stylesheet Langu ... -
使用 Acegi 保护 Java 应用程序: 续三
2008-01-09 13:46 1089本文是 Acegi Security Syster ... -
使用 Acegi 保护 Java 应用程序: 续二
2008-01-09 10:55 1137使用 Acegi 保护 Java 应用程序: 续二 了解了 A ... -
使用 Acegi 保护 Java 应用程序: 续一
2008-01-09 10:26 1246使用 Acegi 保护 Java 应用程序: 续一 Exce ... -
使用 Acegi 保护 Java 应用程序
2008-01-08 17:21 1125第 1 部分: 架构概览和 ... -
使用LookupDispatchAction- -
2007-11-29 10:13 1507org.apache.stru ... -
ForwardAction、IncludeAction、SwitchAction
2007-11-29 10:12 2023发表:2005-5-26 2:37:49 出 ...
相关推荐
在IT行业中,断点续传是一项非常实用的技术,特别是在大文件传输时,它能提高用户体验并减少网络资源的浪费。本教程将详细讲解基于Flex客户端和Servlet服务端实现的断点续传Demo。 首先,我们要理解什么是断点续传...
《jQuery_file_upload-Servlet上传版本》是一个基于jQuery的文件上传解决方案,特别针对Servlet环境进行了优化,解决了在Java平台上常见的文件上传问题,如进度条显示和中文文件名编码问题。这个解决方案使得开发者...
Servlet3.1规范强化了安全相关的API,提供了更细粒度的权限控制和身份认证机制,以适应现代Web应用的安全需求。 5. **微容器和独立部署**: Servlet3.1引入了微容器的概念,允许Servlet应用独立于完整的应用服务器...
在文件上传的servlet中,我们需要解析请求,获取文件内容,然后将其保存到服务器的某个位置。例如,使用`HttpServletRequest`的`getParts()`方法获取上传的文件,再通过`Part`的`write()`方法写入文件。 **文件上传...
下载文件时,Servlet读取文件内容并将其发送回客户端。为了保证性能和用户体验,可能还需要实现文件的断点续传功能。 此外,系统应该具有文件的分类和搜索功能,允许用户按照文件名、大小、创建日期等属性进行查找...
Servlet是Java Web开发中的一个关键组件,用于处理HTTP请求并生成动态内容。在Servlet中实现文件下载是一项常见的任务,这通常涉及到将服务器上的文件发送到客户端的浏览器,以便用户可以保存到本地。以下是对...
在本文中,我们将深入探讨如何实现一个Flex与Java Servlet结合的文件上传实例。这个实例将指导你通过Adobe Flex客户端向服务器端的Java Servlet发送文件,使用Apache Commons FileUpload库处理文件上传过程。 首先...
Apache Commons FileUpload的工作原理是,当用户在表单中选择文件并提交时,浏览器会将文件内容编码为MIME多部分/相关格式,并将整个请求体作为HTTP POST请求的一部分发送。FileUpload库则负责解析这个请求体,提取...
断点续传是一种提高文件传输效率的技术,允许用户在上传或下载过程中暂停,然后在稍后的时间继续从上次中断的地方开始。在Java实现中,这通常涉及到保存和读取上传进度的元数据。当用户再次尝试上传或下载时,系统...
"updowntest"可能是一个项目或文件夹名称,里面可能包含了实现这些功能的JSP页面、Servlet类以及相关的配置文件。 总结来说,这个示例提供了从JSP页面实现文件上传和下载功能的实践,涉及了HTTP多部分请求、Servlet...
【JSPUpload.rar_下载】是一个与Java服务器页面(JSP)和Servlet技术相关的压缩文件,主要用于实现文件下载功能,特别是在Windows操作系统环境下。这个压缩包很可能是包含了一系列的示例代码、教程或项目实例,帮助...
- `src/main/java`:存放Java源代码,包括Servlet和其他相关服务类。 - `src/main/webapp`:Web应用目录,可能有HTML、CSS、JavaScript以及配置文件。 - `WEB-INF/web.xml`:Web应用配置文件,定义Servlet和过滤...
至于提供的"20140421AM"文件,这可能是上传示例代码或相关资源的名称,由于没有具体文件内容,这里无法详细展开讲解。不过,这通常会包含一个Servlet配置、HTML表单以及可能的Java类,用于演示如何实现文件上传下载...
"WEB-INF.zip"和"WEB-INF (1).zip"可能是项目结构的一部分,其中可能包含了Servlet配置和相关的类文件。"jspDownloadClass.zip"可能包含了一个专门处理文件下载的JSP类。 在实际开发中,确保文件上传的安全性至关...
1. **HTML表单设计**:文件上传的第一步是创建一个HTML表单,让用户选择要上传的文件。表单需要设置`enctype="multipart/form-data"`,这是处理文件上传的必需属性。例如: ```html ``` 2. **Servlet配置**:...
1. **Flash技术**:Flash是一款用于创建交互式动画、多媒体内容和富互联网应用(RIA)的平台。在上传文件方面,Flash可以提供更加友好的用户体验,因为它支持多文件选择、进度条显示等功能,而这些在纯HTML中可能...
Java文件下载是Web开发中的一个常见需求,尤其是在服务器端编程如Java Servlet中。这个项目源代码演示了如何在Java环境中实现文件的下载功能。通过理解并分析提供的"2filedownload"压缩包,我们可以深入探讨Java文件...
1. **AJAX (Asynchronous JavaScript and XML)**:AJAX是一种创建动态网页的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。在文件上传中,AJAX通过XMLHttpRequest对象实现异步...
一旦文件成功上传,你需要在JSP页面上显示上传成功的消息,或者在Servlet中重定向到另一个页面。 7. **文件存储策略** 文件可以存储在本地文件系统、云存储服务(如AWS S3、阿里云OSS)或其他持久化存储中。选择...
1. **Uploadify**:Uploadify是一款JavaScript插件,主要用于文件上传。它支持批量上传、预览文件、进度条显示等功能,并且可以自定义样式,适应各种网站设计。Uploadify最初基于Flash开发,但随着HTML5技术的发展,...