2015-05-05 45 views
5

嗨我是新的Java编码,我试图在eclipse中创建动态网页。这是我的demoServlet.java代码Servlet响应没有显示在网页上

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

你缺少一个右引号中结束:** \'/ myWebprj/**的success.jsp是 –

+0

没有在js函数指派返回值虚假什么特别的原因。你是否厌倦了使用空弦。只是猜测 –

+0

请向我们展示调用servlet的UI代码。我确信有一些非常小的错误导致你的问题。 –

回答

0

Mig有可能你以某种方式访问​​你的demoServlet servlet使用POST而不是GET?这将解释你的错误信息。请检查您的JavaScript控制台以确定它使用的是GET

另外,请修改doPost()方法如下:

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

如果可以解决问题,那么我们就解决问题了。

0

这适用于我!我只从onsubmit事件属性中删除了返回关键字。我也修改了一些代码,以正确地将用户名分配给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; 
 
}

0

你的servlet代码看起来不错。您需要做的唯一更改是在Validate.js文件中。 当校验用户名空你曾用“=”:

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

而是使用“==”,它工作正常。

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