Forward request from servlet to jsp

html, java, jsp, model-view-controller, servlets

Solution

Try this

 request.getRequestDispatcher("/view/electrics.jsp").forward(req,res);

Problem

I have a small application (HTML form, servlet as controller and jsp files) and i try to figure out why i cannot to forward the request from servlet to jsp files. the problem is after submit from html, showed up "HTTP Status 404" Application flow: - submit from html. - controller get the name from html. - controller supposed to move the request to jsp files. thanks! project hierarchy: http://s23.postimg.org/kgt7r7lwb/Capture.jpg main.html: ``` <html> <title>Coupons categories</title> <body> <h1 align="center">Coupons categories</h1> <form method="GET" action="Controller"> Select category Type: <select name="type" size=1> <option value="restaurants">Restaurants</option> <option value="electrics">Electrics</option> <option value="hotels">Hotels</option> </select> <br><br> <input type="Submit"> </form> </body> <html> ``` controller.java: ``` @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //PrintWriter out = response.getWriter(); //out.write(request.getPathInfo()); String path = request.getParameter("type"); if(path.equals("electrics")) { request.setAttribute("timestamp", new Date()); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/view/electrics.jsp"); dispatcher.forward(request, response); } else if(path.equals("hotels")) { request.setAttribute("timestamp", new Date()); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/view/hotels.jsp"); dispatcher.forward(request, response); } else if(path.equals("restaurants")) { request.setAttribute("timestamp", new Date()); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/view/restaurants.jsp"); dispatcher.forward(request, response); } } ``` electrics.jsp: ``` <%@ page language="java" contentType="text/html; charset=windows-1255" pageEncoding="windows-1255"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1255"> <title>Insert title here</title> </head> <body> <h2>products list...</h2> <% Object ob = request.getAttribute("timestamp"); out.println(ob); %> </body> </html> ``` web.xml: ``` <description> CouponsServer </description> <display-name>Controller for CouponsServer</display-name> <servlet> <servlet-name>Controller</servlet-name> <servlet-class>uses.server.Controller</servlet-class> </servlet> <servlet-mapping> <servlet-name>Controller</servlet-name> <url-pattern>/Controller</url-pattern> </servlet-mapping> </web-app> ``` update: Probably the problem is in the controller.java. When i try the following code, i got HTTP Status 500. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ``` PrintWriter out = response.getWriter(); out.write(request.getPathInfo()); } ```

Original source