Servlet3.0特性

2024-06-04 05:18
文章标签 特性 servlet3.0

本文主要是介绍Servlet3.0特性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Servlet3.0中可以使用注解来替代配置文件

即:在Servlet3.0中,可以没有web.xml文件

  • 如何知道当前使用的是哪个版本?
    • 在web.xml中有一个属性 version=”“它是可以标识当前是哪个版本。
  • 版本对应关系
    • servlet2.5—- javaee5.0—– tomcat 5.x/tomcat6—-jdk1.5
    • servlet3.0—–javaee6.0—-tomcat7.0—–jdk1.6

特性一之使用注解来替换配置文件

  • @WebServlet(“/hello”)用于配置servlet
  • @WebFilter(“/*”)用于配置Filter
  • @WebListener 用于配置Listener
  • 关于这些注解的一些细节
    • 以@WebServlet(“/hello”)为例
    • 注意:属性urlpatterns与values它们是描述访问当前servlet的路径,但它们不能一起出现,只能只用一个。
<servlet><servlet-name></servlet-name>    ----String name() default "";<servlet-class></servlet-class><init-param>-----WebInitParam[] initParams() default{};<param-name></param-name><param-value></param-value></init-param><load-on-startup></load-on-startup>----int loadOnStartup() default -1;
</servlet>
  • 在servlet中怎样获取初始化参数
  • ServletConfig对象获取
  • *

特性二之servlet3.0中的文件上传

  • 浏览器端
    • method = post
    • encType=”multipart/form-data”
    • 使用<input type="file" name="f">
  • 服务器端
    • servlet3.0 完成
      • 要在servlet添加@MultipartConfig, 表示接收multipart/form-data请求
      • 在Servlet中要想得到上传信息,通过request对象获取一个part对象
        • part part = request.getPart();
        • part.write(String filename);
        • 问题1:关于上传文件中文名称乱码问题
          • 因为上传是post请求,直接使用post乱码解决方案就可以 request.setCharaterEncoding(“utf-8”);
        • 关于获取上传文件名称
          • 通过Part获取一个header
          • String cd = part.getHeader(“Content-Disposition”);
          • 在这个header中包含了上传文件名称,直接截取就可以。
          • String filename = cd.substring(cd.lastIndexOf(“\”) + 1,cd.length()-1);
        • 如果多文件上传怎么处理
          • request.getParts();

特性三之servlet3.0中异步处理

  • 本质是在服务器端开启一个线程,来完成其它的操作
  • 必须在注解添加一项
    • @WebServlet (value = “/reg”,asyncSupported = true)
    • asyncSupported = true ,代表当前servlet支持异步操作
  • 需要一个异步 上下文对象,通过这个对象,可以获取request,response对象
    • AsyncContext context = reg.startAsync();
    • 还可以对异步上下文进行监听,在它的监听器方法中有一个onComplete,可以用来判断结束。

动态代理

代理模式

  • 代理模式作用:
    • 屏蔽真是行为的访问,让程序更加安全
    • 可以对真实行为的调用进行控制
  • 代理模式实现
    • 代理类与被代理类要实现同一接口或继承同一个类
    • 在代理类里,持有被代理对象
    • 在代理类中调用被代理的行为 ‘’
  • AOP:面向方面的编程
    • AOP的底层实现就是通过动态代理来做到的

动态代理

  • 它就是在代理模式基础上发展的,他不再是对单一的类型进行代理,而是可以对任意的一个实现了接口的类的对象做代理。

动态代理实现

  • 有两种方式
    • 通过jdk中提供的Proxy类来实现
      • 这种方式要求,被代理类必须实现接口。即只能为接口做代理
    • 通过cglib来实现
      • 它不要求实现接口

第一种代码实现

  • java.lang.reflect Proxy
  • public class Proxy extends Object implements Serializable
  • Proxy提供用于创建动态代理类和实例的静态方法,它还是由这些方法创建的所有动态代理类的超类、
  • Proxy类的一个方法
    • newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h);
    • 参数:
      • loader
        • 要求,传递的是被代理类的类加载器ClassLoader
        • 类加载器的获取:得到其Class对象。在Class类中提供了一个getClassLoader()
      • interfaces
        • 要求:得到被代理对象所实现的接口的所有Class对象
        • 获取所有实现接口的Class对象:得到其Class 对象,在Class类中提供一个方法,getInterface();它返回的是一个Class[].就代表所实现接口的所有Class对象。
      • h
        • 它的类型是InvocationHandler,这是一个接口。
        • InvocationHandler,是代理实例的调用处理程序 实现的接口。

这篇关于Servlet3.0特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029158

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

C#特性(Attributes)和反射(Reflection)详解

《C#特性(Attributes)和反射(Reflection)详解》:本文主要介绍C#特性(Attributes)和反射(Reflection),具有很好的参考价值,希望对大家有所帮助,如有错误... 目录特性特性的定义概念目的反射定义概念目的反射的主要功能包括使用反射的基本步骤特性和反射的关系总结特性

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等