해결된 질문
작성
·
116
·
수정됨
0
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param")
public class RequestParamServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println("username = " + username);
String age = request.getParameter("age");
System.out.println("age = " + age);
request.getParameterNames().asIterator()
.forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName)));
String[] parameterValues = request.getParameterValues("username");
for (String parameterValue : parameterValues) {
System.out.println("parameterValue = " + parameterValue);
}
}
}
http://localhost:8080/request-param?username=kim&age=20
http://localhost:8080/request-param?username=kim&age=20&username=park
으로 하면 오류 없이 잘 넘어가는데,
http://localhost:8080/request-param 으로 하면 왜 오류가 나는 건가요?
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Jun 13 22:28:48 KST 2024
There was an unexpected error (type=Internal Server Error, status=500).
여러 번 시도해봤을 때,
//코드3
String[] parameterValues = request.getParameterValues("username");
for (String parameterValue : parameterValues) {
System.out.println("parameterValue = " + parameterValue);
}
질문1:
코드3 때문에 오류가 나는 거 같은데 왜 오류가 나는지 이유를 모르겠습니다.
http://localhost:8080/request-param
은 username의 값을 꺼내는 건데, username이 없어서 null이 나올 거고, 그걸 iterator로 돌리면 결국 그냥 null값이 나와야하지 않나 하고 생각했습니다!
//코드1
String username = request.getParameter("username");
System.out.println("username = " + username);
String age = request.getParameter("age");
System.out.println("age = " + age);
이 코드1는 null값을 뱉어내고
//코드2
request.getParameterNames().asIterator()
.forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName)));
질문2:
http://localhost:8080/request-param
로 들어가면, 코드2는 콘솔에 아무것도 프린트 되어있지 않습니다. null값이 나와있을 거라 기대했는데 아니었습니다. 왜 이런 건가요??
여기있씁니다!! 흑흑 답변주셔서 감사합니다 ㅠㅠ