如何使用 doGet 中的参数将表单提交传递给 Java servlet 上的 doPost?
How to pass a form submission using parameters in doGet to doPost on a Java servlet?
我正在参加训练营的商业 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>" );
}
}
}
您的 servlet 仅根据行 @WebServlet("/AboutMe")
处理 /AboutMe 但您的表单操作指向地址 /AddEntry。
也将表单操作更改为 /AboutMe 和方法 POST 或 为 /AddEntry 添加处理程序(并将表单方法更改为 POST) 与
@WebServlet(ulPatterns={"/AboutMe","/AddEntry"})
我正在参加训练营的商业 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>" );
}
}
}
您的 servlet 仅根据行 @WebServlet("/AboutMe")
处理 /AboutMe 但您的表单操作指向地址 /AddEntry。
也将表单操作更改为 /AboutMe 和方法 POST 或 为 /AddEntry 添加处理程序(并将表单方法更改为 POST) 与
@WebServlet(ulPatterns={"/AboutMe","/AddEntry"})