java - 登录 JSP 登录表单后出现 StackOverFlowException

标签 java jsp servlets

我尝试打开表单 login.jsp 但得到 javax.servlet.ServletException

The server side component of the HTTP Monitor has detected a java.lang.StackOverflowError. This happens when there is an infinite loop in the web module. Correct the cause of the infinite loop before running the web module again

登录 Controller 代码:

public class LoginController extends HttpServlet {

public LoginController()
{
    sandiBank = "null";
    session = null;
    mUserDao = new MUserDao();
    sandiBIDao = new SandiBIDao();
    cabangDao = new CabangDao();
    parameterDao = new ParameterDao();
    mAccesDao = new MAccesDao();
}

@Override
protected void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
    throws ServletException, IOException
{
    httpservletrequest.getRequestDispatcher("./login.jsp").forward(httpservletrequest, httpservletresponse);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
{
    String user = request.getParameter("user");
    String pass = request.getParameter("pass");
    MUser mUser = mUserDao.getMUser(user);
    if(!mUser.isCheck())
    {
        RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
        dispatcher.forward(request, response);
    } else
    {
        Cabang cabang = cabangDao.getSandiBank(mUser.getKdCab());
        if(cabang.getSandiBank() != null)
            sandiBank = cabang.getSandiBank();
        RequestDispatcher dispatcher = request.getRequestDispatcher("home.jsp");
        session = request.getSession(true);
        session.setAttribute("userid", user);
        session.setAttribute("passwd", pass);
        String userid = (String)session.getAttribute("userid");
        session.setAttribute("kdcaba", mUser.getKdCab());
        session.setAttribute("sndbnk", sandiBank);
        System.out.println(session.getAttribute("sndbnk"));
        session.setAttribute("sandikd_bank", parameterDao.getSandiBank());
        session.setMaxInactiveInterval(3600);
        request.setAttribute("sandiBI", sandiBIDao.getSandiBI());
        request.setAttribute("mAccesses", mAccesDao.getmAccesses(userid));
        dispatcher.forward(request, response);
    }
}

private static final long serialVersionUID = 1L;
private MUserDao mUserDao;
private SandiBIDao sandiBIDao;
private MAccesDao mAccesDao;
private CabangDao cabangDao;
private ParameterDao parameterDao;
private String sandiBank;
private HttpSession session;
}

最佳答案

这通常意味着您的代码中有递归调用。

递归只是一种调用自身的方法,导致堆栈溢出并抛出 StackoverFlow 异常。

检查方法调用自身的代码流

关于java - 登录 JSP 登录表单后出现 StackOverFlowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155094/

相关文章:

java - 保护资源,例如 servlet 中的图像

java - 为什么 Java 8 使用 null 时,Guava 的Optional 使用抽象类?

java - Linux jenkins 上的 pax 考试(karaf)单元测试超时

java - req.getParameter 返回值错误的字符编码

javascript - AngularJS中我的jsp中其他 Controller 的可访问性

java.io.IOException : Error writing to server 异常

java - 修复 Intellij Idea 下载源 Connection Refused to host 127.0.0.1 错误

java - Java 中的内联字符串替换?

java - 在 Java 中关闭 ResultSet 后不允许操作

java - jsp - 向 Servlet 发送请求,接收响应并打开 URL