ソースを参照

关于过滤器(@WebFilter)的使用出现的问题。恢复SimpleCORSFilter在web中进行filter的配置。原因在下:
@WebFilter
@WebFilter批注声明一个过滤器。Servlet容器在部署时处理过滤器,并将其与指定的URL,Servlet和调度程序关联。它没有定义顺序。
因为watero本身机制原因需要先走SimpleCORSFilter过滤器,但是指定顺序还是需要在web中配置
配置参考:https://www.concretepage.com/java-ee/jsp-servlet/how-to-use-filter-in-servlet-3-with-webfilter-annotation

wangxiaoming 5 年 前
コミット
ab32f45914

+ 3 - 1
watero-common-web/src/main/java/com/iamberry/common/web/SimpleCORSFilter.java

@@ -19,7 +19,9 @@ import org.apache.commons.lang3.StringUtils;
  * @description: 设置跨域请求
  * @createDate:2016年5月26日
  */
-@WebFilter("/*")
+//@WebFilter("/*")
+//@WebFilter  @WebFilter批注声明一个过滤器。Servlet容器在部署时处理过滤器,并将其与指定的URL,Servlet和调度程序关联。它没有定义顺序。
+//watero 需要先走SimpleCORSFilter 过滤器,然后在走WechatFilter过滤器,不能有顺序错误,还是需要在web.xml中配置顺序
 public class SimpleCORSFilter implements Filter {
 	
 	public static List<String> origins = new ArrayList<String>(14);

+ 10 - 18
watero-wechat-web/src/main/webapp/WEB-INF/web.xml

@@ -65,25 +65,17 @@
 		<url-pattern>/*</url-pattern>
 	</filter-mapping>
 
+	<!--@WebFilter批注声明一个过滤器。不会定义顺序,如需要定义顺义需要在filter上加入filterName(过滤器的名称),在web来声明 filter-mapping-->
+	<!--故SimpleCORSFilter恢复以前的方式来当过滤器使用-->
+	<filter>
+		<filter-name>cors</filter-name>
+		<filter-class>com.iamberry.common.web.SimpleCORSFilter</filter-class>
+	</filter>
+	<filter-mapping>
+		<filter-name>cors</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
 
-<!--
-        <filter>
-            <filter-name>cors</filter-name>
-            <filter-class>com.iamberry.common.web.SimpleCORSFilter</filter-class>
-        </filter>
-        <filter-mapping>
-            <filter-name>cors</filter-name>
-            <url-pattern>/*</url-pattern>
-        </filter-mapping>
-        <error-page>
-            <error-code>404</error-code>
-            <location>/view/system_view/404.jsp</location>
-        </error-page>
-        <error-page>
-            <error-code>500</error-code>
-            <location>/view/system_view/500.jsp</location>
-        </error-page>
--->
 
 	<listener>
 		<listener-class>com.iamberry.wechat.listener.MessageQueueListener</listener-class>