I've got a Java Servlet web application, everything is working great. There's one small thing bothering me, however.
When a person logs in, the form is forwarded to the LoginServlet that verifies the information. When the information has been verified, the user gets redirected to dashboard.jsp. The thing that is bothering me is that the URL in the browser says 'http://localhost:8080/LoginServlet.do' instead of 'http://localhost:8080/dashboard.jsp'. I am forwarding the request and response objects, so I need to use a RequestDispatcher, right?
How can I make sure the URL reads 'dashboard.jsp' instead of 'LoginServlet.do'?
Login Servlet:
public class LoginServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
* Information that has arrived here, has been checked by the login filter.
* This servlet takes the parameters from the form, calls the UserService and tries to login.
* If it succeeds: put the User object in the session scope, and redirect to welcome.jsp with a message 'login successful'
* If it fails: redirect back to index.jsp with a message 'Login failed'
*/
RequestDispatcher rd;
String email = req.getParameter("loginEmail");
String password = req.getParameter("loginPassword");
UserService us = ServiceProvider.getUserService();
User u = us.loginUser(email, password);
if(u != null) {
// User information was correct, login successful.
req.getSession().removeAttribute("loggedUser");
req.getSession().setAttribute("loggedUser", u);
req.setAttribute("message", "Login successful");
u.getAllPomodoros();
rd = req.getRequestDispatcher("dashboard.jsp");
rd.forward(req, resp);
} else {
// Login failed. Redirect to index.jsp
req.setAttribute("message", "Login failed");
rd = req.getRequestDispatcher("index.jsp");
rd.forward(req, resp);
}
}
}
My Web.xml (not sure if it's relevant):
--SNIP--
<servlet>
<servlet-name>Login Servlet</servlet-name>
<servlet-class>controller.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login Servlet</servlet-name>
<url-pattern>/LoginServlet.do</url-pattern>
</servlet-mapping>
--SNIP--