空指針HttpSession異常之SpringBoot集成WebSocket的方法
異??赡苄裕?/h2>
- 404 : 請(qǐng)檢查攔截器是否將請(qǐng)求攔截
- WebSocket握手期間HttpSession為空
HttpSession為空

方法一 :
網(wǎng)上參考大量的文檔,有說跟前端請(qǐng)求域名有關(guān)系的。 反正對(duì)我來說,沒啥用無法連接。
需使用 localhost,不能使用127.0.01
var host = window.location.host;
var url = "ws://"+host+"/chatRoom/null";方法二 :可以解決
添加監(jiān)聽配置 ,采用spring boot自動(dòng)裝配的方式,創(chuàng)建一個(gè)Session。
因?yàn)槲倚枰嫒霐?shù)據(jù),所以對(duì)我而言,不太ok。
其他原因看:WebSocket獲取httpSession空指針異常的解決辦法
http://www.fzitv.net/program/334258vi3.htm
@WebListener
public class RequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
((HttpServletRequest)servletRequestEvent.getServletRequest()).getSession();
}
}雖然有Session了,還是連接不上!

方法三 :成功解決
靈感 : 方法2通過監(jiān)聽創(chuàng)建Session。監(jiān)聽最牛逼的不應(yīng)該是攔截器或者過濾器。
可以從攔截器中獲取到我需要的數(shù)據(jù),在request里面配置,應(yīng)該更好。從request中g(shù)etSession,存點(diǎn)東西進(jìn)去試試。
@WebFilter(urlPatterns = "/*")
public class ArticleFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
long start = System.currentTimeMillis();
// 存入session
System.out.println("存入session");
((HttpServletRequest) request).getSession().setAttribute("name", 123);
// 封裝請(qǐng)求信息存儲(chǔ)到請(qǐng)求上下文
chain.doFilter(request, response);
long end = System.currentTimeMillis();
System.out.println("請(qǐng)求耗時(shí):" + (end - start) + "ms");
}
}
到此這篇關(guān)于空指針:HttpSession異常,SpringBoot集成WebSocket的文章就介紹到這了,更多相關(guān)SpringBoot集成WebSocket內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis-Plus 分頁查詢以及自定義sql分頁的實(shí)現(xiàn)
這篇文章主要介紹了MyBatis-Plus 分頁查詢以及自定義sql分頁的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
maven在settings.xml和pom.xml中指定jdk版本編譯的方法
在開發(fā)Java應(yīng)用時(shí),通常需要指定要使用的Java版本,下面這篇文章主要給大家介紹了關(guān)于maven在settings.xm和pom.xml中指定jdk版本編譯的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
Java使用lambda自定義Arrays.sort排序規(guī)則說明
這篇文章主要介紹了Java使用lambda自定義Arrays.sort排序規(guī)則說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境
這篇文章主要介紹了基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java 實(shí)現(xiàn)LZ78壓縮算法的示例代碼
這篇文章主要介紹了Java 實(shí)現(xiàn)LZ78壓縮算法的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05
JSON 與對(duì)象、集合之間的轉(zhuǎn)換的示例
在開發(fā)過程中,經(jīng)常需要和別的系統(tǒng)交換數(shù)據(jù),數(shù)據(jù)交換的格式有XML、JSON等,JSON作為一個(gè)輕量級(jí)的數(shù)據(jù)格式比xml效率要高,本篇文章主要介紹了JSON 與 對(duì)象 、集合 之間的轉(zhuǎn)換,有興趣的可以了解一下。2017-01-01

