servlet3.0 新特性

目录:

一、注释

二、更简便的文件上传

三、异步处理

 

一、注释

之前很多东西都需要在web.xml中配置,非常麻烦,servlet3.0推出了注释,可以直接在类的声明前添加相应的注释,不同在web文件中配置了。

1. @WebServlet,举例:@WebServlet(name="自定义名字,不一定是类名",urlPatterns="/客户端请求该类时应该写什么")

关于urlPatterns的详解,请转至:https://www.cnblogs.com/51kata/p/5152400.html

2. @WebFilter,举例:@WebFilter(name="自定义名字",urlPatterns="/*")(urlPatterns="/*"表示任何请求都会先经过该过滤器)

3. @WebListener,WebListener不像其他注释那样,可以在括号里设置很多属性,它只有一个字符串注解,举例:@WebListener(“comments”)

4. @WebInitParam,需要初始化的参数,一般被包含在其他注释中,举例:@WebServlet(name="aaa",urlPatterns="/客*",initParams={@WebInitParam(name="usename",value="tom")})

二、更简便的上传文件

在servlet3.0之前,上传文件需要借助第三方jar组件,3.0实现了更简便的文件上传。这里用到了另一个注释:@MultipartConfig

上传步骤:

1. 添加@MultipartConfig注释,这个注释需要在@WebServlet注释之下,它有一些可以选择设置的属性值:

属性名类型描述
fileSiz3eThresholdint当数据量大于该值时,内容将被写入文件
locationString存放生成的文件地址
maxFileSizelong允许上传的文件最大值,默认-1,不限制大小
maxRequestSizelong针对该Multipart/form-data请求的最大数量,默认-1,不限制大小

2. 从request对象中,获得Part文件对象:getPart(String name)/getParts(),其中name表示请求的name文件。上传的文件用此part来表示,它提供了write()、delete()等方法。

使用举例,如果是图像,就存储起来:

String path = this.getServletContext().getRealPath("/");
Part p=request.getPart("file1"); //file1是jsp页面中上传文件的input框的name值if(p.getContextType().contains("image"))
{
    ApplicationPart ap=(ApplicationPart)p;
    //截取文件名
    String name=ap.getFilename();
    int path_idx=name.lastIndexOf("\\")+1;
    String name1=name.substring(path_idx,name.length());
    p.write(path+"/upload/"+name1);      
}

三、异步处理

之前的servlet处理的工作流程是:接到请求后,进行一些预处理,调用业务接口的某些方法,以完成业务,最后提交结果。提交的请求是一个一个顺序执行的,一个还没响应的话,其他请求都处于阻塞状态。3.0的处理类似于流水线,在将请求转给业务接口后,就能接着预处理下一个请求,这样一个没有处理完,其他的请求也不会阻塞。

3.0默认是不适用异步处理的,需要使用异步处理时,只需要在注释中,将属性asyncSupported置为true,如果是在web.xml中配置,则是:<async-supported>true</async-supported>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值