jsp - Why I am getting java.lang.IllegalStateException when the validate servlet is called? -
i have login web application. whenever login, request must validated validate servlet , must forwarded admin.jsp fine except got exception java.lang.illegalstateexception.
code:
/* * developer : suraj gautam * campus: shankerdev * faculty: bim * company : unknown company */ package com.suraj.technepbankapplication; import java.io.ioexception; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; /** * * @author suraj gautam */ @webservlet(name = "validate", urlpatterns = {"/validate"}) public class validate extends httpservlet { databean bean = new databean(); int count = 0; @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { } @override protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { //the form inputted sent databean class settingvalue(req.getparameter("userid"), req.getparameter("password")); try { if (!isvalid(req, resp)) { req.getrequestdispatcher("/index.jsp").forward(req, resp); } else if (bean.getuserid().equals("admin")) { req.getrequestdispatcher("/admin.jsp").forward(req, resp); } else { req.getrequestdispatcher("/afterlogin.jsp").forward(req, resp); } } catch (sqlexception | classnotfoundexception ex) { system.out.println(ex.getmessage()); } } public boolean isvalid(httpservletrequest req, httpservletresponse resp) throws sqlexception, servletexception, ioexception, classnotfoundexception { string userid = req.getparameter("userid"); string password = req.getparameter("password"); if (userid.length() <4 || password.length() < 4) { return false; } else { return loginvalidate(req, resp); } } //setting databean class value public void settingvalue(string userid, string password) { bean.setuserid(userid); bean.setpassword(password); } public boolean loginvalidate(httpservletrequest req, httpservletresponse resp) throws sqlexception, servletexception, ioexception, classnotfoundexception { string url = "jdbc:mysql://localhost/technep"; string user = "root"; string password = ""; string query = "select id, password technep_login"; class.forname("com.mysql.jdbc.driver"); connection conn = drivermanager.getconnection(url, user, password); preparedstatement preparedstatement = conn.preparestatement(query); resultset resultset = preparedstatement.executequery(); while (resultset.next()) { //working till here if (resultset.getstring("id").trim().equals(bean.getuserid()) && resultset.getstring("password").trim() .equals(bean.getpassword())) { count = 1; break; } } if (count == 1) { return true; } else { return false; } } }
the output:
warning: standardwrappervalve[jsp]: servlet.service() servlet jsp threw exception java.lang.illegalstateexception: getoutputstream() has been called response @ org.apache.catalina.connector.response.getwriter(response.java:777) @ org.apache.catalina.connector.responsefacade.getwriter(responsefacade.java:224) @ org.apache.jasper.runtime.jspwriterimpl.initout(jspwriterimpl.java:195) @ org.apache.jasper.runtime.jspwriterimpl.flushbuffer(jspwriterimpl.java:188) @ org.apache.jasper.runtime.pagecontextimpl.release(pagecontextimpl.java:240) @ org.apache.jasper.runtime.jspfactoryimpl.internalreleasepagecontext(jspfactoryimpl.java:185) @ org.apache.jasper.runtime.jspfactoryimpl.releasepagecontext(jspfactoryimpl.java:137) @ org.apache.jsp.dbimage_jsp._jspservice(dbimage_jsp.java:93) @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:111) @ javax.servlet.http.httpservlet.service(httpservlet.java:790) @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:411) @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:473) @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:377) @ javax.servlet.http.httpservlet.service(httpservlet.java:790) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:99) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:416) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:283) @ com.sun.enterprise.v3.services.impl.containermapper$httphandlercallable.call(containermapper.java:459) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:167) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:206) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:180) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:235) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:283) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:200) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:132) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:111) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:536) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:112) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:117) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:56) @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable.run(workerthreadiostrategy.java:137) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.dowork(abstractthreadpool.java:591) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpoo l.java:571) @ java.lang.thread.run(thread.java:745)
sorry, question unanswerable based on stacktrace give: servlet not appear in stacktrace, either servlet can't problem or you're omitting "root cause" stacktrace.
further, there a lot more problems code , should go through basic tutorial servlet development. these can't corrected in single answer on stackoverflow
- the way use
bean
member of servlet result in disaster (race condition). must not have member variables (state) in servlet. - you're taking care of authentication - shouldn't this, it's solved problem
- on top, you're storing clear text passwords in database , you're enumerating whole user database instead of fetching single value (imagine have many users...)
- from code i'm assuming 1 can skip validation going
/afterlogin.jsp
or/admin.jsp
manually. - the parameters methods arguable , create hard maintain implementation.
this incomplete list.
Comments
Post a Comment