저는 부트 캠프에서 상용 자바 프로그래밍 과정을 밟고 있습니다.자바 서블릿에서 doGet의 매개 변수를 사용하여 doPost에 양식 제출을 전달하는 방법은 무엇입니까?
SSN을 확인하기 위해 단일 서블릿 기본 웹 페이지를 구성한다고 가정합니다.
SSN이 확인되면 SSN에 대한 정보를 사용자에게 표시합니다.
그러나 이클립스에서 내 서블릿을 실행할 때 404 페이지가 수신됩니다.
디버깅을 시도하고 있지만 문제를 해결할 수 없습니다.
혼란은 doGet의 매개 변수를 doPost 메소드로 전달하여 doPost를 통해 SSN에 대한 관련 정보를 표시하는 데 있습니다.
HTML 리디렉션을 사용하지 않고 다른 서블릿으로 리디렉션하지 않습니다.
이것은 자체 포함 된 서블릿입니다. 아래
코드 :
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>");
}
}
}
과 처리기를 추가/AboutMe하고 방법 POST 또한 양식 작업을 변경' <입력 유형 = \ "텍스트 \"이름 = \ "ssn \"/> ' –
감사합니다. 이것은 이제 url에 입력 된 매개 변수를 보았 기 때문에 작동했지만 doPost 메소드의 정보를 표시 할 수 없었습니다. SSN을 입력하면 404 페이지가 반환되지만 url은 입력 된 매개 변수를 허용합니다. 따라서 입력 한 SSN으로 URL을 얻지 만 URL에 404 페이지가 표시됩니다. –
'request.getRequestDispatcher ("AboutME") .forward (request, response);'(실제로는 더 좋은 디자인 패턴이지만'out.println' 호출과 섞이지는 않습니다)를 제거하고 싶다고 들립니다. –