【问题标题】:Getting Error When sending data from JSP to Servlet将数据从 JSP 发送到 Servlet 时出现错误
【发布时间】:2014-03-03 03:42:56
【问题描述】:

我正在使用动态 Web 项目。 这是我的 JSP 代码。我正在尝试向 servlet 发送 Hello

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
  pageEncoding="ISO-   
  8859-1"%>
  <!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=ISO-8859-1">
  <title>Insert title here</title>
  </head>
  <body>
   <jsp:include page="/servlet/ServletCode" flush="true" >
   <jsp:param name="username" value="Hello" />
   </jsp:include>
   </body>
   </html>

这是我的 Servlet 文件。

package pack.exp;

public class ServletCode extends HttpServlet 
{
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    String output= request.getParameter("username");
    System.out.println(output);
     PrintWriter pw = response.getWriter();
     pw.println("Hello " + output);
}
}

在我的 JSP 文件中,我在这一行收到了编译时错误。

在预期路径 /JSpServletCode/WebContent/servlet/ServletCode 处找不到片段“/servlet/ServletCode”

请帮帮我。

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我认为您必须在 web.xml 中映射您的 servlet,以及您必须在页面中提供的 servlet-url。像下面这样的东西会起作用。

    <jsp:include page="/ServletCode" flush="true" > 
    
     <servlet>
             <servlet-name>Servlet1</servlet-name>
             <servlet-path>pack.exp.ServletCode</servlet-path>
        </servlet>
        <servlet-mapping>
             <servlet-name>Servlet1</servlet-name>
             <url-pattern>/ServletCode</url-pattern>
        </servlet-mapping>
    

    更新

    这对我有用

    伺服器

     @WebServlet("/ServletCode")
      public class ServletCode extends HttpServlet {
      private static final long serialVersionUID = 1L;
    
        public ServletCode() {
            super();
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                String output= request.getParameter("username");
                System.out.println(output);
                 PrintWriter pw = response.getWriter();
                 pw.println("Hello " + output);
            }
    }
    

    JSP

    <body>
        <jsp:include page="/ServletCode" flush="true">
            <jsp:param name="username" value="Hello" />
        </jsp:include>
    </body>
    

    【讨论】:

    • @A Paul Thanx 为您的回复好友。我在 web.xml 中进行了更改。但现在作为输出,我得到了 Hello null。但输出应该是 hello hello
    • 好的。这意味着参数不会进入您的 servlet。代码对我来说看起来不错。让我检查一下。
    • 你能检查一下 System.out.println(output);是打印值还是空
    • @A Paul 它正在打印 null。
    • 不确定是什么问题。但它对我有用。刚刚创建了一个测试项目并进行了检查。它对我来说是“你好你好”
    【解决方案2】:

    这是模型 servlet 页面:

    <servlet>
        <servlet-name>registerServlet</servlet-name>
        <servlet-class>com.example.RegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>registerServlet</servlet-name>
        <url-pattern>/register</url-pattern>
    </servlet-mapping>
    

    而且你必须把表格改成这样的格式:

    <form action="register" method="post">
    

    这是做 Post 方法:

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String uname = request.getParameter("uname");
     PrintWriter pw = response.getWriter();
         pw.println("Hello " + output);
    System.out.println(output); 
           // ...
        }
    

    【讨论】:

    • 现在我收到此错误“此 URL 不支持 HTTP 方法 GET”
    • 尝试 doGet 而不是 doPost 方法相同的签名
    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 2013-05-27
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多