Servlet 3.0特性详解之 ServletContext 性能增强
来源:互联网 发布:网络致富平台 编辑:程序博客网 时间:2024/05/17 22:33
ServletContext的性能增强
ServletContext 对象的功能在新版本中也得到了增强。现在,该对象支持在运行时动态部署Servlet、过滤器、监听器,以及为Servlet和过滤器增加URL映射等。以Servlet为例,过滤器与监听器与之类似。ServletContext为动态配置Servlet增加了如下方法:
◆ServletRegistration.DynamicaddServlet(StringservletName,Class<?extendsServlet>servletClass)
◆ServletRegistration.DynamicaddServlet(StringservletName,Servletservlet)
◆ServletRegistration.DynamicaddServlet(StringservletName,StringclassName)
◆<TextendsServlet>TcreateServlet(Class<T>clazz)
◆ServletRegistrationgetServletRegistration(StringservletName)
◆Map<String,?extendsServletRegistration>getServletRegistrations()
其中前三个方法的作用是相同的,只是参数类型不同而已;通过createServlet()方法创建的Servlet,通常需要做一些自定义的配置,然后使用addServlet()方法来将其动态注册为一个可以用于服务的Servlet。
两个getServletRegistration()方法主要用于动态为Servlet增加映射信息,这等价于在web.xml(抑或web-fragment.xml)中使用<servlet-mapping>标签为存在的Servlet增加映射信息。以上ServletContext新增的方法要么是在ServletContextListener的contexInitialized方法中调用,要么是在ServletContainerInitializer的onStartup()方法中调用。
ServletContainerInitializer也是Servlet3.0新增的一个接口,容器在启动时使用JAR服务API(JARServiceAPI)来发现ServletContainerInitializer的实现类,并且容器将WEB-INF/lib目录下JAR包中的类都交给该类的onStartup()方法处理,我们通常需要在该实现类上使用@HandlesTypes注解来指定希望被处理的类,过滤掉不希望给onStartup()处理的类。
HttpServletRequest对文件上传的支持
此前,对于处理上传文件的操作一直是让开发者头疼的问题,因为Servlet本身没有对此提供直接的支持,需要使用第三方框架来实现,而且使用起来也不够简单。如今这都成为了历史,Servlet 3.0已经提供了这个功能,而且使用也非常简单。为此,HttpServletRequest提供了两个方法用于从请求中解析出上传的文件:
◆PartgetPart(Stringname)
◆Collection<Part>getParts()
前者用于获取请求中给定name的文件,后者用于获取所有的文件。每一个文件用一个javax.servlet.http.Part对象来表示。该接口提供了处理文件的简易方法,比如write()、delete()等。至此,结合HttpServletRequest和Part来保存上传的文件变得非常简单,如下所示:
◆Partphoto=request.getPart(“photo”);
◆photo.write(“/tmp/photo.jpg”);
可以将两行代码简化为request.getPart(“photo”).write(“/tmp/photo.jpg”)一行。另外,开发者可以配合前面提到的@MultipartConfig注解来对上传操作进行一些自定义的配置,比如限制上传文件的大小,以及保存文件的路径等。其用法非常简单,故不在此赘述了。需要注意的是,如果请求的MIME类型不是multipart/form-data,则不能使用上面的两个方法,否则将抛异常。
- Servlet 3.0特性详解之 ServletContext 性能增强
- Servlet 3.0 新特性详解(五)ServletContext 的性能增强及HttpServletRequest 对文件上传的支持
- Servlet 3.0特性详解之注解支持
- Servlet 3.0特性详解
- Servlet 3.0特性详解
- Java Servlet Specification 3.0 之 ServletContext
- Servlet之ServletContext
- Servlet API 之ServletContext
- Servlet之ServletContext总结
- servlet之ServletContext
- servlet之ServletContext总结
- JAVAWEB开发之Servlet和ServletContext详解(5)
- Servlet 3.0特性详解之异步处理支持
- Servlet 3.0特性详解之可扩展性支持
- Servlet 3.0 新特性详解
- Servlet 3.0新特性详解
- Servlet 3.0 新特性详解
- Servlet 3.0 新特性详解
- 百度SEO优化技术点总结
- Servlet 3.0特性详解之注解支持
- 浅谈大脑思维与对未来计算机的设想
- 解决ThinkPad X200找不到无线网卡硬件的问题
- Servlet 3.0特性详解之可扩展性支持
- Servlet 3.0特性详解之 ServletContext 性能增强
- c++底层机制
- poj 1458 Common Subsequence
- 二叉树的前序、中序、后序遍历 查找 删除
- C++一维数组与指针
- 如何利用windosAPI计算程序运行时间 不使用VC的库,也就是说不跨系统,跨编译器
- Hibernate关系映射(1)_一对一单向外键关联
- 自己的心声
- poj 1519 Digital Roots