로또번호를 입력해주는 웹 프로그램을 만들어 보았다.
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를 사용하여야 했다.
다른 코드가 잘못 된 줄 알고 한참 삽질했다.
그리고 결과물