failed: Error during WebSocket handshake: Unexpected response code: 200

websocket 注解方式实现(详细见上篇)

web平台  struts2 + spring4  jdk8  tomcat8

配置完成之后发现无法访问,前端访问代码:




Viewer





  



浏览器运行console报错

failed: Error during WebSocket handshake: Unexpected response code: 200

网上搜索说是 struts过滤器原因,但是未详细解释如何处理,

 
    struts2
    /*
    REQUEST
    FORWARD
  
以上是struts  web.xml里面默认过滤以工程目录开头的所有请求 ,  而websocket 请求也能被struts匹配。 test为工程名, /log/view  为websocket注解 url
ws://192.168.1.251/test/log/view

struts   和 websocket  是2条处理请求的路,被struts 匹配上了 ,自然就到不了 websocket的处理逻辑。

解决办法:

让struts的过滤器不过滤websocket的请求

在struts.xml 中加上例如:

 这个struts常量的作用就是针对正则表达式所匹配到的路径,

1.struts解析xml时,不会把这些路径放到ActionMapping中;

2.请求时也不用去struts的ActionMapping中进行匹配,执行。

3.而是直接跳过此过滤器进入下一个过滤器。

特别要注意的是:struts.action.excludePattern的值是用逗号(,)隔开的正则表达式,写2行,前面一行不生效,后面才生效,貌似被最后一行覆盖。

比如:/res/.* 表示以/res/为开头的路径。

.* 表示零个或多个任意字符



  





你可能感兴趣的:(java)