Spring
28. jsp별찍기(2) - 패스트캠퍼스 백엔드 부트캠프 3기
gkss2tpt
2025. 2. 10. 12:57
- StarController
package com.fastcampus.ch2;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
@Controller
public class StarController {
@ExceptionHandler(Exception.class)
public String catcher(Exception e) {
return "yoilError";
}
@RequestMapping("/star")
public String star(@ModelAttribute("stars") Stars stars, Model model){
if (stars.getStars() <= 0) {
// 유효하지 않은 star 값에 대한 예외 처리
throw new IllegalArgumentException("Invalid star value.");
}
return "star";
}
}
- Stars
package com.fastcampus.ch2;
public class Stars {
private int stars;
public int getStars() {
return stars;
}
public void setStars(int stars) {
this.stars = stars;
}
public String toString(){
return "[stars=" + stars + "]";
}
}
- star.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>별찍기</title>
</head>
<body>
<c:if test="${stars.stars > 0}">
<p>현재 별 개수: ${stars.stars}</p>
<c:set var="star" value="${stars.stars}"/>
<c:set var="count0" value="1"/>
<c:set var="count1" value="${star}"/>
<c:set var="count2" value="${1+4*(star-1) - (star-1)}"/>
<c:set var="count3" value="${1 + 4 *(star-1)}"/>
<c:forEach var="i" begin="1" end="${star*2-1}">
<c:forEach var="j" begin="1" end="${1 + 4*(star-1)}">
<c:choose>
<c:when test="${i == 1 || i == star*2-1}">
<c:if test="${j <= star || j > (1 + 4*(star-1)) - star}">
*
</c:if>
<c:if test="${j%5!=0 && !(j <= star || j > (1 + 4*(star-1)) - star)}">
<span style="letter-spacing: 1px;"> </span> <!-- 간격을 조정 -->
</c:if>
</c:when>
<c:when test="${i != 1 && i != star*2-1 && i < star}">
<c:if test="${j==count0 || j==count1 || j==count2 || j==count3}">
*
</c:if>
<c:if test="${!(j==count0 || j==count1 || j==count2 || j==count3)}">
</c:if>
</c:when>
<c:when test="${i != 1 && i != star*2-1 && i >= star}">
<c:if test="${j==count0 || j==count1 || j==count2 || j==count3}">
*
</c:if>
<c:if test="${!(j==count0 || j==count1 || j==count2 || j==count3)}">
</c:if>
</c:when>
</c:choose>
</c:forEach>
<c:if test="${i < star}">
<c:set var="count0" value="${count0+1}"/>
<c:set var="count1" value="${count1+1}"/>
<c:set var="count2" value="${count2-1}"/>
<c:set var="count3" value="${count3-1}"/>
</c:if>
<c:if test="${i >= star}">
<c:set var="count0" value="${count0-1}"/>
<c:set var="count1" value="${count1-1}"/>
<c:set var="count2" value="${count2+1}"/>
<c:set var="count3" value="${count3+1}"/>
</c:if>
<br>
</c:forEach>
</c:if>
<c:if test="${star <= 0}">
<p>유효하지 않은 별 값입니다.</p>
</c:if>
</body>
</html>