简体   繁体   English

从servlet转发到jsp的请求

[英]Forward request from servlet to jsp

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. 我有一个小应用程序(HTML表单,servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。

the problem is after submit from html, showed up "HTTP Status 404" 问题是从html提交后,显示“HTTP Status 404”

Application flow: 申请流程:

  1. submit from html. 从html提交。
  2. controller get the name from html. 控制器从html获取名称。
  3. controller supposed to move the request to jsp files. 控制器应该将请求移动到jsp文件。

thanks! 谢谢!

project hierarchy: http://s23.postimg.org/kgt7r7lwb/Capture.jpg 项目层次结构: http//s23.postimg.org/kgt7r7lwb/Capture.jpg

main.html: 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: 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: 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: 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. 更新:问题可能在controller.java中。 When i try the following code, i got HTTP Status 500. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 当我尝试以下代码时,我得到HTTP状态500. protected void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException {

        PrintWriter out = response.getWriter();
        out.write(request.getPathInfo());
    }

试试这个

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

web.xml web.xml中

<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>

<welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Your code is running fine in my local with the web.xml defined at the end with welcome list or even without it. 您的代码在我的本地运行正常,最后使用欢迎列表定义了web.xml,甚至没有它。 Try your code running with the dynamic Web content version 2.5 where the web.xml is generated automatically. 尝试使用动态Web内容版本2.5运行的代码,其中自动生成web.xml。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <description>
      CouponsServer
    </description>
  <display-name>Controller for CouponsServer</display-name>


  <servlet>

    <display-name>Controller</display-name>
    <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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM