亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java?web項(xiàng)目Session獲取不到問題及解決

 更新時間:2022年01月12日 14:33:49   作者:shiGuang°  
這篇文章主要介紹了java?web項(xiàng)目Session獲取不到問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java web項(xiàng)目Session獲取不到

在servlet類中對Session進(jìn)行了設(shè)置 但當(dāng)servlet跳轉(zhuǎn)到頁面時 頁面獲取不到Session!??!

關(guān)于session的生命周期

Session保存在服務(wù)器端。Session在用戶第一次訪問服務(wù)器的時候自動創(chuàng)建。需要注意只有訪問JSP、Servlet等程序時才會創(chuàng)建Session,只訪問HTML、IMAGE等靜態(tài)資源并不會創(chuàng)建Session。如果尚未生成Session,也可以使用request.getSession(true)強(qiáng)制生成Session。

而我們在頁面獲取不到Seesion的原因可能是:瀏覽器禁用了Cookie

使用url地址重寫即可解決!

  • response.encodeRedirectURL(url)用于對sendRedirect方法后的url地址進(jìn)行重寫。
  • response.encodeURL(url)用于對表單action和超鏈接的url地址進(jìn)行重寫
String url=response.encodeRedirectURL("url");
response.sendRedirect(url);

這樣在頁面中即可使用

<%=request.getSession().getAttribute("key")%>

來獲取我們存儲的Seesion?。。?/p>

前后端分離獲取不到session問題

前后端分離的項(xiàng)目,前端是vue,后端springboot,或者maven項(xiàng)目,生成驗(yàn)證碼的時候存了一份到session并存到redis里,前端調(diào)后臺注冊獲取不到session,但當(dāng)用戶從session中取信息的時候發(fā)現(xiàn)始終取不到,每次跨域請求時ajax發(fā)送的都是新的sessionid,導(dǎo)致無法獲取信息

解決方案

前端在vue的main文件全局添加一下代碼:

import axios from 'axios';
axios.defaults.withCredentials=true;

后臺新增一個過濾器

web.xml文件

<filter>
?? ?<filter-name>contextFilter</filter-name>
?? ?<filter-class>com.zl.filter.ContextFilter</filter-class>
</filter>
<filter-mapping>
?? ?<filter-name>contextFilter</filter-name>
?? ?<url-pattern>/*</url-pattern>
</filter-mapping>
public class ContextFilter implements Filter {
? ? @Override
? ? public void init(FilterConfig filterConfig) throws ServletException {
? ? }
? ? @Override
? ? public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
? ? ? ? HttpServletResponse response = (HttpServletResponse)servletResponse;
? ? ? ? HttpServletRequest request = (HttpServletRequest)servletRequest;
? ? ? ? String origin = request.getHeader("Origin");
? ? ? ? response.setHeader("Access-Control-Allow-Origin", origin);
? ? ? ? response.setHeader("Access-Control-Allow-Methods", "*");
? ? ? ? String headers = request.getHeader("Access-Control-Request-Headers");
? ? ? ? ?// 支持所有自定義頭
? ? ? ? if (!org.springframework.util.StringUtils.isEmpty(headers)) {
? ? ? ? ? ? response.setHeader("Access-Control-Allow-Headers", headers);
? ? ? ? }
? ? ? ? response.setHeader("Access-Control-Allow-Credentials", "true");
? ? ? ? response.setHeader("Access-Control-Max-Age", "3600");
? ? ? ? filterChain.doFilter(request, response);
? ? }
? ? @Override
? ? public void destroy() {
? ? }
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論