一、Annotation 进行配置不需要 web.xml

新建new Servlet 时,不需要在web.xml 文件中生成Servlet的相关信息

 import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name="MyServlet",urlPatterns={"/MyServlet"})
public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.print("hello Filter");
} }

1.Servlet

只需要在java源文件的Servlet类前面加上:
    @WebServlet(name="",urlPatterns={""},initParams=                {@WebInitParam(name="",value=""),loadOnStartup=1})
  public class MyServlet extends HttpServlet{}

2.Filter

只需要在java源文件的Filter类前面加上@WebFilter(filterName="MyFilter",urlPatterns="/MyFilter",servletNames={"MyServlet"})

现在只需要在java源文件的Listener类前面加上
@WebListener即可;

二、模块化编程

三、Servlet异步处理

Servlet作为MVC中的控制器,控制器负责分发任务给MODEL完成,然后把结果交给JSP页面显示而如果有许多MODEL ,其中一个MODEL处理时间很长则会导致整个页面显示很慢。

异步处理关键点: 将复杂业务处理另外开一个线程,而Servlet将执行好的业务先送往jsp输出,等耗时业务做完后再送往jsp页面。

先显示一部分,再显示一部分。

异步处理需要在Annotation中注明asyncSupported=true;

 package test;

 import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name="MyServlet",urlPatterns={"/MyServlet"},asyncSupported = true)
public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.print("start...");
System.out.println("start");
//比较耗时的业务
//当前请求延迟
AsyncContext ac = request.startAsync();
//设置超时时间
ac.setTimeout(5*3000);
//启动线程
ac.start(new MyThread(ac));
out.write("<br>end");
System.out.println("end");
out.flush();
} }
class MyThread implements Runnable{
private AsyncContext ac = null;
public MyThread(AsyncContext ac) {
super();
this.ac = ac;
}
@Override
public void run() {
try {
Thread.sleep(3000);
PrintWriter out = ac.getResponse().getWriter();
out.write("<br> 耗时操作完成");
System.out.println("耗时操作完成");
} catch (InterruptedException | IOException e) {
e.printStackTrace();
} } }

四、异步Listener

异步监听器用来监听异步处理事件,只需要实现AsyncListener接口即可。

此接口有四个方法:

 public void onStartAsync(AsyncEvent event)throws IOException;
public void onComplete(AsyncEvent event);
public void onTimeout(AsyncEvent event);
public void onError(AsyncEvent event);

五、文件上传API简化

原本文件上传时通过common-fileeuupload或者SmartUpload,上传比较麻烦,在servlet3.0中不需要导入第三方jar包,并且提供了很方便的文件上传功能。

注意点:

  1. html中<input type="file">表示文件上传控件;
  2. form的enctype = "multipart/form-data";
  3. 在servlet类前加上@MultipartConfig
  4. request.getPart()获得

最新文章

  1. Redis命令拾遗三(列表List类型)
  2. Python 【第十章】 Django路由
  3. table-cell实现宽度自适应布局
  4. jmeter 与 java http
  5. Solr入门之(1)前言与概述
  6. 动态加载、移除、替换JS和CSS
  7. 数据库添加数据I
  8. Eclipse配置CAS server
  9. 20160327javaweb 之JSP入门
  10. Apache Tomcat8必备知识
  11. ER图与UML图
  12. KMP算法详解-- 转自Matrix67
  13. Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码
  14. Python 的字符串
  15. C#//字节数组转16进制字符串
  16. UI设计教程:关于版式设计
  17. hdu 1695 GCD 【莫比乌斯函数】
  18. Android窗口背景的优化
  19. 4、2支持向量机SVM算法实践
  20. Ubuntu上开启Apache Rewrite功能的方法

热门文章

  1. VS2013环境下Boost库配置
  2. java环境配置——jdk8
  3. oracle备份表和数据
  4. 谢孟军:The State of Go | ECUG Con 精粹系列
  5. [BZOJ3052][UOJ#58][WC2013]糖果公园
  6. hdu 1563简单异或Find your present!
  7. Ubuntu启用IPv6上google的方法
  8. java邮件工具类【最终版】
  9. 事件和委托: 第 6 页 .Net Framework中的委托与事件
  10. oracle alert 日志位置