分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
首先需要定义一个拦截异步请求的Filter,
该Filter需要设置asyncSupported=true以启动对servlet异步的支持
- package org.async.filter;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.annotation.WebFilter;
- import javax.servlet.http.HttpServletRequest;
- /**
- * 异步拦截器
- * 拦截所有async的请求
- * @author
- */
- @WebFilter(urlPatterns="/async/test",asyncSupported=true)
- public class AsyncFilter implements Filter {
- @Override
- public void init(FilterConfig cfg) throws ServletException {
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- String url = ((HttpServletRequest)request).getRequestURL().toString();
- System.out.println("异步请求[ " + url +" ]被拦截");
- System.out.println(request.isAsyncSupported());
- chain.doFilter(request, response);
- }
- @Override
- public void destroy() {
- }
- }
然后定义一个 servlet
- package org.async.servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.io.Writer;
- import java.util.Date;
- 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;
- /**
- * 要启用 asyncSupported 需要定义一个【拦截该请求】的WebFilter,
- * 否则将会在[request.startAsync(request,response);]时
- * 抛java.lang.IllegalStateException: Not supported.的异常;
- * 另外:
- * 如何web.xml或者程序中其他地方定义了Filter,且没有指定asyncSupported=true
- * 同样会跑出如上异常;
- * @author wangtao
- */
- @WebServlet(urlPatterns="/async/test",asyncSupported=true)
- public class ModuleAsyncServlet extends HttpServlet {
- //.....
- }
另外 web.xml 中若定义Filter需要开启asyncSupported=true,
否则, 将会抛出java.lang.IllegalStateException: Not supported.的异常;
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <servlet>
- <servlet-name>spring-mvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring-mvc</servlet-name>
- <url-pattern>*.form</url-pattern>
- </servlet-mapping>
- <!-- 过滤器处理中文编码 -->
- <!--
- <filter>
- <filter-name>SetCharacterEncoding</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>utf8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>SetCharacterEncoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- -->
- <welcome-file-list>
- <welcome-file>index.form</welcome-file>
- </welcome-file-list>
- </web-app>