最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中實(shí)現(xiàn)兼容ie6 7 8 9的spring4+websocket

 更新時間:2024年09月02日 16:50:19   投稿:hebedich  
這篇文章主要介紹了java中實(shí)現(xiàn)兼容ie6 7 8 9的spring4+websocket程序代碼,十分的簡單實(shí)用,有需要的小伙伴可以參考下。

效果

不支持websocket的瀏覽器,用flash模擬websocket.當(dāng)然,也可以用flash socket直接與服務(wù)端socket連接。

事實(shí)上,websocket協(xié)議比較簡單,用actionscript模擬也比較簡單,這個在本人的另外一篇文章讓ie6 7 8 9支持html5 websocket簡單說了下。

另外,spring為sockjs 提供api,只需簡單配置下,就可以兼容低版本瀏覽器,原理是用js模擬websocket object。具體的本人還沒有去看。

幾點(diǎn)說明:

1.使用spring對websocket的封裝既可以單獨(dú)使用,也可以和spring mvc一起使用。需要注意的是,單獨(dú)使用時,仍然要在web.xml中配置spring的dispatcher,仍然要打開server.

  <servlet>
    <servlet-name>websocket</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value> 
        /WEB-INF/applicationContext.xml 
      </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>websocket</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

2.單獨(dú)使用時,若refer跨域,需要在spring中設(shè)置白名單

  <websocket:handlers allowed-origins="*">
       ........
  </websocket:handlers>

3.由于用到了flash,所以需要開啟843端口,并在flash請求policy文件時,返回policy文件。例子中用的是netty4.

4.需要對握手進(jìn)行攔截,監(jiān)聽。因?yàn)樵诤竺娴膚ebsocket處理類中,無法從WebSocketSession獲得session.另外,這里獲得session要保存到arrtibutes中,在websocket處理類中,WebSocketSession調(diào)用getAttributes()方法就可以獲得arrtibutes了。

public class ChatIntercepter extends HttpSessionHandshakeInterceptor{
  
  @Override
  public boolean beforeHandshake(ServerHttpRequest request,
      ServerHttpResponse response, WebSocketHandler wsHandler,
      Map<String, Object> attributes) throws Exception {
    if (request instanceof ServletServerHttpRequest) {
      ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
      HttpSession session = servletRequest.getServletRequest().getSession(false);
      if (session != null) {
        String userName = (String) session.getAttribute("user");
        attributes.put("user",userName);
      }
    }
    System.out.println("Before Handshake"+request.getHeaders());
//    return super.beforeHandshake(request, response, wsHandler, attributes);
    return true;
  }
   ..............

}

5.在web-socket-js 中,flash模擬的websocket頭信息中會包含cookie,不過是人工通過腳本添加的。所以要避免需要的cookie,如session cookie是httponly.這就需要設(shè)置容器。

如果當(dāng)前是在eclipse中開發(fā)

可以看到在context標(biāo)簽上添加useHttpOnly='false'就可以了,而context標(biāo)簽是eclipse部署時自動添加的。

如果已經(jīng)打包了,就到tomcat目錄/conf/server.xml,在最后的</Host>前面添加

復(fù)制代碼 代碼如下:

<Context docBase="websocket" path="/websocket" reloadable="true" useHttpOnly='false'/>

意思所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • java代碼實(shí)現(xiàn)MD5加密及驗(yàn)證過程詳解

    java代碼實(shí)現(xiàn)MD5加密及驗(yàn)證過程詳解

    這篇文章主要介紹了java代碼實(shí)現(xiàn)MD5加密及驗(yàn)證過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • JAVA--HashMap熱門面試題

    JAVA--HashMap熱門面試題

    這篇文章主要介紹了JAVA關(guān)于HashMap容易被提問的面試題,文中題目提問頻率高,相信對你的面試有一定幫助,想要入職JAVA的朋友可以了解下
    2020-06-06
  • Spring Boot 如何整合連接池

    Spring Boot 如何整合連接池

    這篇文章主要介紹了Spring Boot 如何整合連接池,幫助大家更好的理解和學(xué)習(xí)spring boot框架,感興趣的朋友可以了解下
    2020-11-11
  • Spring Security獲取用戶認(rèn)證信息的實(shí)現(xiàn)流程

    Spring Security獲取用戶認(rèn)證信息的實(shí)現(xiàn)流程

    Spring Security是一個能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問控制功能
    2022-12-12
  • Java中equals和hashcode用法

    Java中equals和hashcode用法

    `equals`和`hashCode`方法在Java中密切相關(guān),必須保持一致性,如果兩個對象通過`equals`方法相等,它們的`hashCode`也必須相同,這對于基于哈希的數(shù)據(jù)結(jié)構(gòu)至關(guān)重要,因?yàn)檫@些結(jié)構(gòu)依賴哈希值進(jìn)行快速查找和存儲,為了減少哈希沖突
    2025-01-01
  • Spring boot部署發(fā)布到linux的操作方法

    Spring boot部署發(fā)布到linux的操作方法

    這篇文章主要介紹了Spring boot部署發(fā)布到linux的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • SpringBoot3集成和使用Jasypt的代碼詳解

    SpringBoot3集成和使用Jasypt的代碼詳解

    隨著信息安全的日益受到重視,加密敏感數(shù)據(jù)在應(yīng)用程序中變得越來越重要,Jasypt作為一個簡化Java應(yīng)用程序中數(shù)據(jù)加密的工具,為開發(fā)者提供了一種便捷而靈活的加密解決方案,本文將深入解析Jasypt的工作原理,需要的朋友可以參考下
    2024-01-01
  • Spring基礎(chǔ)篇之初識DI和AOP

    Spring基礎(chǔ)篇之初識DI和AOP

    這篇文章主要為大家詳細(xì)介紹了Spring基礎(chǔ)篇之初識DI和AOP,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解SpringBoot如何統(tǒng)一處理返回的信息

    詳解SpringBoot如何統(tǒng)一處理返回的信息

    現(xiàn)在的項(xiàng)目是前后端開發(fā)的居多,那么我們怎么定義接口返回的數(shù)據(jù),怎么使用?Spring?Boot?來統(tǒng)一處理返回的信息呢,本文就來和大家簡單講講
    2023-06-06
  • java文件刪除不了File類的delete方法刪不掉文件的原因以及分析

    java文件刪除不了File類的delete方法刪不掉文件的原因以及分析

    這篇文章主要介紹了java文件刪除不了File類的delete方法刪不掉文件的原因以及分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

宾川县| 津市市| 博野县| 紫金县| 安图县| 神木县| 上林县| 满洲里市| 呼图壁县| 建湖县| 岢岚县| 平定县| 大名县| 临洮县| 湾仔区| 万源市| 山丹县| 嘉兴市| 宿松县| 岱山县| 咸丰县| 芦溪县| 台湾省| 礼泉县| 余江县| 久治县| 醴陵市| 乳源| 巴东县| 乐都县| 平顶山市| 定日县| 宁国市| 汤阴县| 兴山县| 宜城市| 宁乡县| 平顶山市| 洛川县| 安泽县| 晋城|