[JSP] 배열 객체 전달받고 출력하기

나옹·2022년 11월 15일
0

로또번호를 입력해주는 웹 프로그램을 만들어 보았다.

		PrintWriter out=response.getWriter();
		int[] lottoNumber= new int[6];
		response.setContentType("text/html; charset=utf-8");
		for(int i=0; i<6; i++) {
			boolean flag=true;
			lottoNumber[i]=(int)(Math.random()*45+1);
			for(int j=0; j<i; j++) {
				if(lottoNumber[i]==lottoNumber[j]) {
					i--;
					flag=false;
					break;
				}else {
					flag=true;
				}
			}
			if(flag) {
				out.print("<html><body> <h1> lotto: "+lottoNumber[i]);
				out.print("</h1></body></html><br>");
			}

		}
		out.close();

	}

처음에는 컨트롤러 doGet 메서드에 작성을 해주었는데
내가 만들어 둔 jsp 페이지로 배열값을 넘기고 출력해 보고 싶었다.

		String url="./lotto/lotto2.jsp";
		RequestDispatcher dispatcher=request.getRequestDispatcher(url);
		int[] lottoNumber= new int[6];
		for(int i=0; i<6; i++) {
			lottoNumber[i]=(int)(Math.random()*45+1);
			for(int j=0; j<i; j++) {
				if(lottoNumber[i]==lottoNumber[j]) {
					i--;
				}
			}
		}
		
		
		request.setAttribute("lottoNumber", lottoNumber);
		dispatcher.forward(request, response);
	}

컨트롤러 doGet메서드에 jsp주소를 연결해주고 setAttribute 메서드로 배열 값을 넘겨주었다.

	<% //parameter(클라이언트가 보낸 데이터)랑 Attribute(서버반에서 주고 받는 데이터)랑 구분하기
	
	int [] lottoN=(int [])request.getAttribute("lottoNumber"); %> <!-- 배열 가지고 오기 -->
		
	<%for(int i=0; i<lottoN.length; i++){%>
			<h1><%=lottoN[i]     %>    </h1>
			
	<%} %>
	
	<%for(int i=0; i<lottoN.length; i++){
		out.print(lottoN[i]+"<br>");
	}%>

그리고 jsp파일에서 <% %> 를 사용하여 html사이에 자바코드를 사용하여 불러와 주었다.

int [] lottoN=(int [])request.getAttribute("lottoNumber");

이 코드로 배열을 가지고 와 주었는데 여기서 정말 많이 해맸다.
당연히 getParametervalues 를 써야하는 줄 알았는데 getAttribute를 사용하여야 했다.

다른 코드가 잘못 된 줄 알고 한참 삽질했다.

그리고 결과물

profile
최고의 개발을 위해 !

0개의 댓글