java - RequestDispatcher not working from servlet doPost to other servlet doGet -
i'm trying forward 1 servlet's dopost method servlet's doget method. when i'm running webapp, url doesn't change. when enter url of second servlet manually, servlet works perfectly. when enter webpage in requestdispatcher works.
the first servlet loginservlet. dopost method of servlet handles database lookup user. next, based on type of user (artist, listener or admin), servlet redirects corresponding homepage via second servlet's doget method. last step required , cannot skipped i'll write more code in method.
here's login servlet:
public class loginservlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { req.getrequestdispatcher("/login.jsp").forward(req, resp); } @override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { request.setcharacterencoding("utf-8"); if(request.getparameter("username") != null && request.getparameter("password") != null && request.getparameter("username") != "" && request.getparameter("password") != ""){ //check if username exists userhelper helper = new userhelper(); if(helper.userexists(request.getparameter("username")) == 1){ user user = helper.getuserbyusername(request.getparameter("username")); if(user.getuserpassword().equals(helper.hashpassword(request.getparameter("password")))){ httpsession session = request.getsession(); session.setattribute("user", request.getparameter("username")); if(user instanceof artist){ artist artist = new artist(); artist = (artist) user; session.setattribute("artist", artist); system.out.println("ok"); request.getrequestdispatcher("/artist/artistpanel").forward(request, response); } if(user instanceof listener){ listener listener = new listener(); listener = (listener) user; session.setattribute("listener", listener); request.getrequestdispatcher("/listener/store.jsp").forward(request, response); } if(user instanceof admin){ admin admin = new admin(); admin = (admin) admin; session.setattribute("admin", admin); } /*response.sendredirect("artist/artisthome.jsp?success=login");*/ }else{ request.setattribute("error", "u gaf een foutief passwoord op. probeer nogmaals."); request.getrequestdispatcher("/login.jsp").forward(request, response); } }else{ request.setattribute("error", "er bestaat geen gebruiker met die username."); request.getrequestdispatcher("/login.jsp").forward(request, response); } }else{ request.setattribute("error", "beide velden moeten worden ingevuld."); request.getrequestdispatcher("/login.jsp").forward(request, response); } } } here's controlpanel servlet code:
package controller.servlets; import model.artist; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; /** * * @author daan */ public class artistpanelservlet extends httpservlet { @override protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { artist artist = new artist(); httpsession session = request.getsession(); artist = (artist) session.getattribute("artist"); session.setattribute("artist", artist); request.setattribute("artistname", artist.getartistname()); request.getrequestdispatcher("/artist/artisthome.jsp").forward(request, response); } @override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { } @override public string getservletinfo() { return "short description"; } } here part of servlet mapping.
<servlet> <servlet-name>artistpanelservlet</servlet-name> <servlet-class>controller.servlets.artistpanelservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>artistpanelservlet</servlet-name> <url-pattern>/artist/artistpanel</url-pattern> </servlet-mapping> thanks help.
the way redirect doget have dopost call doget, makes them both same thing:
public void dopost(httpservletrequest request, httpservletresponse response) throws ioexception, servletexception { doget(request, response); }
Comments
Post a Comment