就像上面说的那样
我做了一个页面 
当验证登录session有值的时候在一个页面
当session为空的时候跳转另一个页面
验证代码如下
<%
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
if(session.getAttribute("loginUser")==null || session.getAttribute("loginUser")=="") {
RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
rd.forward(request,response);
}
%>
这是在jsp页面中写的 但是加载以后出现
2012-8-31 11:24:29 org.apache.jasper.runtime.JspFactoryImpl internalGetPageContext
严重: Exception initializing page context
java.lang.StackOverflowError
错误
哪位高手能为小弟解答一下,
不胜感激!

解决方案 »

  1.   

    rd.forward(request,response);
    return;结束当前线程!
      

  2.   

    StackOverflowError是由于当前线程的栈满了  ,也就是函数调用层级过多导致。
    比如死递归。
    如:
      public String homePage(){
      this.findAllNews();
       return "shouye";
     } public String findAllNews(){
       List newslist= hotnewsService.findAll();
       HotnewsDto  hotnews= (HotnewsDto) newslist.get(0);//得到第一条新闻
       String content=hotnews.getContent();
       String subcontent=content.substring(0, 80);//截取这条新闻信息内容在首页部分显示
       super.setRequestAttribute("hotnews", hotnews);
       super.setRequestAttribute("newslist", newslist);
       super.setRequestAttribute("subcontent", subcontent);
       return homePage;   }  如红色标记处,这样子调用的方法,相当于一个无限循环了!解决办法:  我习惯将 findAllNews方法的返回值设为 void 即可
      

  3.   

    <%
    String path = request.getContextPath();  
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    if(session.getAttribute("loginUser")==null || session.getAttribute("loginUser")=="") {
    RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
    rd.forward(request,response);
    }
    %>
    这些代码是不是在index.jsp中。
    那不是死循环了吗?你要把这些代码放到其它页面上去。
      

  4.   

    lz  你的这些代码是写在servelt 里面的
      

  5.   

    写在servlet或者过滤器里面就行;
      

  6.   

    == ""???咱好歹专业点写成"".equals().