【问题标题】:Servlet response is not displaying on webpageServlet 响应未显示在网页上
【发布时间】:2015-07-14 16:06:57
【问题描述】:

您好,我是 Java 编码的新手,我尝试在 Eclipse 中创建动态网页。这是我的 demoServlet.java 代码

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demoServlet")
public class demoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public demoServlet() {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             response.setContentType("text/html");
             PrintWriter out= response.getWriter();
             out.println("<!DOCTYPE html PUBLIC \''>");
             out.println("<html>");
             out.println("<head>");
             out.println("<script language=\'JavaScript\'>");
             RequestDispatcher rd= request.getRequestDispatcher("/WEB-INF/javascript/Validate.js");
             rd.include(request, response);
             out.println("</script>");
             out.println("</head>");
             out.println("<body>"); 
             out.println("<form action=\'/myWebprj/Success.jsp onSubmit=\'return Validateusername(this.username.value)\'>");
             out.println("UserName: <input type=\'text\' name=\'username\'>");
             out.println("<input type=\'submit\' value=\'Submit\'>");
             out.println("</form>");
             out.println("</body>");
             out.println("</html>");
    }
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }
}

这是我的 JSP 页面

<%@ 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>My First jsp page in servlets</title>
  </head>
  <body>
      Its Successfully completed
  </body>
</html>

这是我的 javascript 页面

function Validateusername(username)
{
    var returnValue=true;
    if(username=""){
        alert("Enter username is empty");
        returnValue=false;
    }  
    return returnValue;
}

当我尝试输入提交按钮时,它会显示错误

HTTP Status 404 - /myWebprj/Success.jsp%20onSubmit=

--------------------------------------------------------------------------------

type Status report

message /myWebprj/Success.jsp%20onSubmit=

description The requested resource is not available.

Can any one help me out . whats is the error in the code...?

【问题讨论】:

  • 您在 \'/myWebprj/Success.jsp 的末尾缺少一个右引号
  • 在js函数中将返回值分配给false是否有任何特殊原因。您是否厌倦了使用空字符串。只是猜测
  • 请向我们展示您调用 servlet 的 UI 代码。我确信有一些非常小的错误会导致您的问题。
  • 只需使用:
    代替:
  • 6 赞成初学者在充满不良做法的代码上的错误?令人难以置信..

标签: java javascript jsp servlets


【解决方案1】:

您是否有可能以某种方式使用POST 而不是GET 访问您的demoServlet servlet?这将解释您的错误消息。请检查您的 JavaScript 控制台以确保它正在使用 GET

另外,请将您的doPost() 方法修改为以下内容:

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

如果这解决了错误,那么问题就解决了。

【讨论】:

    【解决方案2】:

    这对我有用!我只从 onsubmit 事件属性中删除了 return 关键字。我还稍微修改了代码,以便将用户名正确分配给 javascript 函数。

    package test;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/demoServlet")
    public class demoServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public demoServlet() {
            super();
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                 response.setContentType("text/html");
                 PrintWriter out= response.getWriter();
                 
                 String username = request.getParameter("username");
    
                 out.println("<!DOCTYPE html PUBLIC \''>");
                 out.println("<html>");
                 out.println("<head>");
                 out.println("<script language=\'JavaScript\'>");
                 RequestDispatcher rd= request.getRequestDispatcher("/WEB-INF/javascript/Validate.js");
                 rd.include(request, response);
                 out.println("</script>");
                 out.println("</head>");
                 out.println("<body>"); 
                 /*
                 onSubmit should call only 'Validateusername()'
                 so the the 'return' keyword has been removed
                 */
                 out.println("<form action=\'/Test/Success.jsp\' onSubmit=\'Validateusername(" + username + ")\'>");
                 out.println("UserName: <input type=\'text\' name=\'username\'>");
                 out.println("<input type=\'submit\' value=\'Submit\'>");
                 out.println("</form>");
                 out.println("</body>");
                 out.println("</html>");
        }
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    }

    function Validateusername(username)
    {
        var returnValue=true;
        if(username == undefined || username == null || username == ""){
            alert("Enter username is empty");
            returnValue=false;
        }  
        return returnValue;
    }

    【讨论】:

      【解决方案3】:

      您的 servlet 代码看起来不错。您需要做的唯一更改是在 Validate.js 文件中。 验证用户名是否为空时,您使用了“=”:

       if(username=""){ // your code }
      

      改为使用“==”,它可以正常工作。

       if(username==""){ // your code }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多