2016-09-18 4 views
0

저는 부트 캠프에서 상용 자바 프로그래밍 과정을 밟고 있습니다.자바 서블릿에서 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>"); 
    } 


    } 

} 
+0

과 처리기를 추가/AboutMe하고 방법 POST 또한 양식 작업을 변경' <입력 유형 = \ "텍스트 \"이름 = \ "ssn \"/> ' –

+0

감사합니다. 이것은 이제 url에 입력 된 매개 변수를 보았 기 때문에 작동했지만 doPost 메소드의 정보를 표시 할 수 없었습니다. SSN을 입력하면 404 페이지가 반환되지만 url은 입력 된 매개 변수를 허용합니다. 따라서 입력 한 SSN으로 URL을 얻지 만 URL에 404 페이지가 표시됩니다. –

+0

'request.getRequestDispatcher ("AboutME") .forward (request, response);'(실제로는 더 좋은 디자인 패턴이지만'out.println' 호출과 섞이지는 않습니다)를 제거하고 싶다고 들립니다. –

답변

0

서블릿은 라인 @WebServlet("/AboutMe")하지만 주소/AddEntry에 양식 액션 포인트에 따라/AboutMe을 처리한다.

어느/AddEntry (및 POST에 양식 방법을 변경)에 대한 또는 당신은 아마 있는지 확인해야

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

+0

정말 고마워요! 문제가 해결되었습니다. 양식 제출에서의 사소한 변화가 전체 서블릿에 큰 영향을 미칠 것이라는 사실을 알지 못했습니다. –