簡體   English   中英

Servlet響應未顯示在網頁上

[英]Servlet response is not displaying on webpage

嗨,我是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;
}

當我試圖進入SUBMIT按鈕時,它顯示錯誤

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

您是否有可能以某種方式使用POST而不是GET訪問您的demoServlet servlet? 這將解釋您的錯誤消息。 請檢查您的JavaScript控制台以確定它是否正在使用GET

另外,請將您的doPost()方法修改為以下內容:

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

如果這解決了錯誤,那么我們就解決了問題。

這適合我! 我只從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; } 

你的servlet代碼看起來很好。 您需要進行的唯一更改是在Validate.js文件中。 將用戶名驗證為空時,您使用了“=”:

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

相反,你使用“==”,它工作正常。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM