접기
JSP의 데이터를 Servlet로 보내 request에 담아 다른 JSP 로 포워딩하는 코드. 본 질문은 데이터가 전달이 되지 않은 것에 대한 것이었는데, (조금은 황당하게도) 서블릿단의 코드를 수정 후 톰캣을 재시작 해주지 않아 변경된 코드가 적용되지 않아서 생겼던 이슈. 그냥 지나갈려다가 샘플 코드로 참고할 수 있을 것 같아 스크랩 한다. ( 원본 stackoverflow 질문 click )
CatQuery.jsp
1 < html > 2 < head > 3 < title > Category Query< /title > 4 < meta http-equiv =”Content-Type ” content =”text/html’ charset=iso-8859-1 “> 5 < /head > 6 7 < table width =”500 ” border =”0 ” cellspacing =”0 ” cellpadding =”0 “> 8 < tr > 9 < td > 10 < form name =”queryForm ” method =”post ” action =”CategoryRetrieve “> 11 < td > < div align =”left “> Query:< /div > < /td > 12 < td > < input type =”text ” name =”queryStr “> < /td > 13 < td > < input type =”Submit ” name =”Submit “> < /td > 14 < /form > 15 < /td > 16 < /tr > 17 < /table > 18 < /body > 19 < /html >
CategoryRetrieveServlet.java
1 public void doPost(HttpServletRequest request, HttpServletResponse response) throws 2 ServletException, IOException { 3 String queryStr = request.getParameter(“queryStr” ); 4 CategoryIndex catIndex = new CategoryIndex(indexDir); 5 Map<String, Float> weights = catIndex.queryCategory(queryStr, numTopWords, numTopDocs, numCategories); 6 7 if (weights!=null ){ 8 request.setAttribute(“CATWEIGHTS” , weights); 9 request.setAttribute(“HASRESULTS” , “true” ); 10 } 11 else { 12 request.setAttribute(“HASRESULTS” , “false” ); 13 } 14 ServletContext context = getServletContext(); 15 RequestDispatcher dispatcher = context.getRequestDispatcher(target); 16 dispatcher.forward(request, response); 17 }
CatDisplay.jsp (이쪽으로 포워딩 됨)
1 < %@ page import =”java.util.* ” %> 2 < html > 3 < head > 4 < title > Category Search Results< /title > 5 < meta http-equiv =”Content-Type ” content =”text/html; charset=iso-8859-1 “> 6 < /head > 7 8 < table width =”1000 ” border =”5 ” cellspacing =”0 ” cellpadding =”0 “> 9 < % Map< String, Float> catweights = null; 10 catweights=(Map< String,Float > )request.getAttribute(“CATWEIGHTS “); 11 %> 12 hasResults is 13 < %= request.getAttribute(“HASRESULTS “) %> 14 < % if (catweights= =null){ %> Catweights is null 15 < % } 16 else { 17 for (Map.Entry< String,Float > e : catweights.entrySet()){ 18 %> 19 < tr > < td > 20 < %= e.getKey()%> 21 < /td > < td > 22 < %= e.getValue()%> 23 < /td > < /tr > 24 < % } 25 } 26 %> 27 < /table > 28 < /html >
접기 접기
jsp파일의 값을 java파일로 넘기기 위해선 input, text, textarea와 같은 기능을 사용해야한다.
forEach문을 사용해 여러 개의 값이 들어가는 경우 id가 아닌 name을 사용.(id는 유일한 값을 말하므로 사용해도 무용지물)
접기