jdk7,jdbc4,servlet3.0
switch 语句可以用字符串了,try-with-resources 语句(jdbc4.1[jdk7的一部分]新特性就是基于这一点)等
1. 驱动及连接管理
2. 异常处理
3. 数据类型支持 sqlxml(为什么不是json?)
4. API 的变化
- jdbc4.1新特性: http://developer.51cto.com/art/201105/263223.htm
jdk7的try资源特性,rowset改进。
异步处理支持 还可以,参见异步io:https://blog.ureshika.com/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/2011/10/21/io-e6-8e-a5-e5-8f-a3-ef-bc-8c-e8-ae-be-e5-a4-87-ef-bc-8c-e6-93-8d-e4-bd-9c/ 以及http://www.ibm.com/developerworks/cn/java/j-nioserver/ 如果是使用nio实现的话,倒更像多路io。
一个简单的模拟异步处理的 Servlet 示例如下:
@WebServlet(urlPatterns = "/demo", asyncSupported = true) public class AsyncDemoServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println("进入Servlet的时间:" + new Date() + "."); out.flush(); //在子线程中执行业务调用,并由其负责输出响应,主线程退出 AsyncContext ctx = req.startAsync(); new Thread(new Executor(ctx)).start(); out.println("结束Servlet的时间:" + new Date() + "."); out.flush(); } } public class Executor implements Runnable { private AsyncContext ctx = null; public Executor(AsyncContext ctx){ this.ctx = ctx; } public void run(){ try { //等待十秒钟,以模拟业务方法的执行 Thread.sleep(10000); PrintWriter out = ctx.getResponse().getWriter(); out.println("业务处理完毕的时间:" + new Date() + "."); out.flush(); ctx.complete(); } catch (Exception e) { e.printStackTrace(); } } }
新增的注解支持
可插性支持
ServletContext 的性能增强
HttpServletRequest 对文件上传的支持 这个我觉得是最实用的了!但是不知道大文件上传支持的怎么样以及上传进度问题是否提供支持。
参见:
http://pisces-java.iteye.com/blog/723125
http://www.blogjava.net/yongboy/archive/2011/03/18/346202.html