0

我正在一个训练营参加商业 Java 编程课程。

我想构建一个单一的 servlet 基础网页来验证 SSN。

验证 SSN 后,我会向用户显示有关 SSN 的信息。

但是,当我在 Eclipse 上运行我的 servlet 时,我收到一个 404 页面。

我正在尝试调试,但无法解决问题。

我的困惑在于将参数从 doGet 传递给 doPost 方法,然后通过 doPost 显示有关 SSN 的相关信息。

我没有使用 HTML 重定向,也没有重定向到另一个 servlet。

这是一个独立的 servlet。

下面的代码:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
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("/AboutMe")
public class AboutMe extends HttpServlet {
private static final long serialVersionUID = 1L;


public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
  }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<head>");

    out.println("   <meta charset=\"UTF-8\">");
    out.println("   <title>About Me</title>");
    out.println("</head>");
    out.println("<body>");

    out.println("<form action=\"AddEntry\" method=\"get\">");
    out.println("  SSN: <input type=\"text\" name=\"ssn\" /> <br />");
    out.println("  <input type=\"submit\" />");
    out.println("</form>");

    out.println("</body>");
    out.println("</html>");
}



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


    String SSN = request.getParameter("ssn");


    //validate string
String message = "";
    if ( SSN == null || SSN.trim().length() == 0 || SSN.trim().length() !=     9 || !SSN.equals("123456789") ) { 
message = "Enter SSN!";
} else {


    response.setContentType( "text/html" );

    PrintWriter out = response.getWriter();
    out.println( "<html>");
    out.println("<head>"); 
    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<head>");

    out.println("   <meta charset=\"UTF-8\">");
    out.println("   <title>Insert title here</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<div id = name>");
    out.println("FirstName LastName");
    out.println("</div>");
    out.println("</br>");
    out.println("</br>");
    out.println( "<p>The SSN is " + SSN + "! </p>" );
    out.println("</br>");
    out.println("</br>");
    out.println("<p class = paragraph>");
    out.println(" User information goes here." );

    out.println( "</body></html>" );
    }


    }

}
4

1 回答 1

0

您的 servlet 仅按照该行处理 /AboutMe,@WebServlet("/AboutMe")但您的表单操作指向地址 /AddEntry。

要么将表单操作也更改为 /AboutMe 和方法 POST ,要么为 /AddEntry 添加一个处理程序(并将表单方法更改为 POST)

@WebServlet(ulPatterns={"/AboutMe","/AddEntry"})

于 2016-09-18T05:18:45.680 回答