亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

非常詭異的內存溢出,希望有大佬教育一波

非常詭異的內存溢出,希望有大佬教育一波

汪汪一只貓 2019-01-16 10:13:46
項目框架 spring boot 2.0 我寫了 父類 BaseController 里面自動注入 request 和 response public class BaseController{ @Autowired public HttpServletRequest request; @Autowired public HttpServletResponse response; } IndexController 都繼承 BaseController public class IndexController extends BaseController { @RequestMapping("/index") public String index(Model model) { return "index"; } @RequestMapping("login") public String login() throws ServletException, IOException { request.getRequestDispatcher("/admin/index").forward(request, response); return null; } index 頁面,沒有任何數據操作,純一個靜態頁面 <!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="renderer" content="webkit"> <title>500</title> </head> <body style="background: #FFFFFF; color: red; font-size: 40em; text-align: center"> <p> TEST </p> </body></html> 訪問 http://localhost:9090/admin/login出現如下錯誤,循環引用導致內存溢出java.lang.StackOverflowError: null at org.springframework.web.context.support.WebApplicationContextUtils.currentRequestAttributes(WebApplicationContextUtils.java:312) at org.springframework.web.context.support.WebApplicationContextUtils.access$400(WebApplicationContextUtils.java:65) at org.springframework.web.context.support.WebApplicationContextUtils$RequestObjectFactory.getObject(WebApplicationContextUtils.java:328) at org.springframework.web.context.support.WebApplicationContextUtils$RequestObjectFactory.getObject(WebApplicationContextUtils.java:323) at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:305) at com.sun.proxy.$Proxy100.setAttribute(Unknown Source) at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304) at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:305) at com.sun.proxy.$Proxy100.setAttribute(Unknown Source) at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304) at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:305) at com.sun.proxy.$Proxy100.setAttribute(Unknown Source) at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304) at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:305) at com.sun.proxy.$Proxy100.setAttribute(Unknown Source) at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304) at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 1.注意看我的login 就使用request轉發到首頁(注意,此時request 和 response 是父類的BaseController) 注意問題不是地址循環跳引發的問題 3.使用方法注入request 和 response就不會有問題@RequestMapping("login") public String login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/admin/index").forward(request, response); return null; } 有沒有大佬解釋一波。
查看完整描述

5 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

你先試試接口,

    @RequestMapping("cc")
    @ResponseBody
    public Object z() {
        String parameter = request.getParameter("zz");
        System.out.println(parameter);
        return "你好";
    }

springboot 2.0.6 沒有問題,先一步一步的排查,世界是科學的

查看完整回答
反對 回復 2019-02-12
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

@justjavac ac[justjavac]

查看完整回答
反對 回復 2019-02-12
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

估計你這個 request.getRequestDispatcher("/admin/index").forward(request, response); forward到admin之后又redirect回login了吧?

查看完整回答
反對 回復 2019-02-12
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

你這種寫法相當于:@RequestMapping("/index")
public String index(Model model) {

//重點
request.getRequestDispatcher("/admin/index").forward(request, response);
return "index";

}

@RequestMapping("login")
public String login() throws ServletException, IOException {

request.getRequestDispatcher("/admin/index").forward(request, response);
return null;

}

查看完整回答
反對 回復 2019-02-12
  • 5 回答
  • 0 關注
  • 632 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號