요청 및 JSP 페이지를 필터링하는 필터 인 서블릿을 포함하는 표준 동적 웹 프로젝트를 만듭니다. welcome.jsp에서 책 수를 가져오고 있으며, 수에 따라 add.jsp의 입력란을 채 웁니다. add.jsp를 통해 들어오는 데이터를 필터링하고 싶습니다. Regex를 통해 데이터를 확인할 때 오류가 표시됩니다. 또한 내 흐름이 올바른지 즉, 시작 필터 -> 컨트롤러 -> 필터 -> 페이지 등등 ???HTTP 상태 500 - java.lang.NumberFormatException : null
오류 : java.lang.NumberFormatException의 : 널 (null)
전체 추적과 같은 것입니다 :
HTTP Status 500 - java.lang.NumberFormatException: null
type Exception report
message java.lang.NumberFormatException: null
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NumberFormatException: null
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
com.filter.RequestFilter.doFilter(RequestFilter.java:107)
root cause
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
org.apache.jsp.WEB_002dINF.add_jsp._jspService(add_jsp.java:139)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
com.filter.RequestFilter.doFilter(RequestFilter.java:107)
의 전시는 코드 :
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
boolean flag = true;
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpServletRequest.getServletPath();
System.out.println(httpServletRequest.getServletPath());
String address = InetAddress.getLocalHost().getHostAddress();
System.out.println(address);
// For the first time (Welcome page) i will be 0 so that it will perform first if
if(i == 0)
{
System.out.println(i);
if(verify(address))
{
chain.doFilter(request, response);
i++;
}
else
{
RequestDispatcher requestDispatcher = httpServletRequest.getServletContext().getRequestDispatcher("/WEB-INF/forbidden.jsp");
requestDispatcher.forward(request, response);
return;
}
}
// For the second time (Controller) i will be 1 so that it will perform first if
else if(i == 1)
{
System.out.println(i);
i++;
System.out.println("after ++"+i);
chain.doFilter(request, response);
}
// For the second time (add page) i will be 2 so that it will perform first if
else if(i == 2)
{
if(specialChara(httpServletRequest))
{
System.out.println(i);
System.out.println("done");
i++;
chain.doFilter(request, response);
}
else
{
System.out.println(i);
flag = false;
System.out.println(""+httpServletRequest.toString()+ "\n"+httpResponse.toString());
RequestDispatcher requestDispatcher = httpServletRequest.getServletContext().getRequestDispatcher("/WEB-INF/add.jsp");
requestDispatcher.forward(request, response);
}
}
// For the third time (Controller) i will be 2 so that it will perform first if
else if(i == 3)
{
System.out.println(i);
i++;
chain.doFilter(request, response);
i = 0;
}
그주는 전자 i == 2 인 루프에서 forward() 줄에 rror. 무엇이 문제 일 수 있습니까? add.jsp의
링크는 스택에서 https://docs.google.com/document/d/1fOzymYvlLXS577DrSrznRoeBnI7_hMmuqzFoK02xKoU/edit?usp=sharing
대신 무엇을해야하는지 알려주시겠습니까 ?? 세션 객체에 저장해야합니까 ?? –
"아니오"가 null 인 이유를 디버깅해야합니다. Java 클래스의 요청 범위에서이 valus를 설정하고 있습니까? – HarshaKA