Servlet3.0新特性

一、注解替代web.xml配置文件

注解学习

如:过滤器

//过滤所有
@WebFilter(urlPattern="/*") 

二、异步处理

1.什么是异步处理

原来在服务器没有结束响应之前,浏览器是看不到响应内容的,只有响应结束时,浏览器才能显示结果!
 异步处理的作用:在服务器开始响应后,浏览器就可以看到响应内容,不用等待服务器响应结束

2.实现异步的步骤

//得到AsyncContext:异步上下文对象
AsyncContext ac = request.startAsync(request,response);

//给上下文一个Runnable对象,启动它(给上下文一个任务, 让它完成)
ac.start(new Runnable(){
    public void run(){
        ...
    }
})
WebServlet(urlPatterns="/AServlet",asyncSupported=true)
resp.setContextType("text/html;charset=utf-8")
//注:如果IE不能正常输出,这说明响应体大小不足512B,那你需要多输出点废话
//通知tomcat我们异步线程已经执行结束了,这让Tomcat才会及时的断开与浏览器的连接
AsyncContext#complete();

 三、对上传的支持

1.原:上传

上传对表单要求

method="post" 
enctype="multipart/form-data"  //其默认值为:application/x-www-form-urlencoded
<input type="file" name="必须给"

上传servlet的使用
    request.getParameter() 不能再用
    request.getInputStream() 使用它来获取整个表单的数据

commons-fileupload
    创建工厂
    解析器
    使用解析器来解析request,得到List<FIleItem>

2.Servlet3.0对上传提供了支持

表单不变,在Servlet不需要再使用commons-fileupload,而是使用Servlet3.0提供的上传组件接口;

上传的步骤

使用request.getPart("字段名"),得到Part实例
//Part api:
String getContentType():获取上传文件的MIME类型
String getName():获取表单项的名称,不是文件名称
String getHeader(String header):获取指定头的值
long getSize():获取上传文件的大小
InputStream getInputStream():获取上传文件的内容
void write(String fileName):把上传文件保存到指定路径下
//默认Servlet是不支持使用上传组件的:需要给Servlet添加一个注解	

注意:其中未提供获取上传文件名称的方法,这需要我们自己从Content-Disposition头中截取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值