CAFE

함께풀어보기

Re: 연습문제 : 구구단 구현해보기 (팀별) - 주석및 이해후 제출하기 - 주용현,김진규,최솔,이주화,임동혁,배경린,강송찬

작성자강송찬|작성시간26.06.18|조회수18 목록 댓글 2

 

examGuguForm

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>examGuguForm</title>

</head>

<body>

<div style="width: 450px; margin: auto">

<h2 style="text-align: center;">구구단 설정</h2>

<!-- 액션에 처리위치가 들어감 메서드는 전송방식, name(dan,limit,color)값 기준으로 데이터 전송 -->

<form action="gugudanServlet" method="post" style="width: 300px; margin: auto;">

 

<p>

<label>단 :</label>

<input type="number" name="dan" required>

</p>

<p>

<label>범위:</label>

<select name="limit">

<option value="3">3</option>

<option value="5">5</option>

<option value="7">7</option>

<option value="9">9</option>

</select>

</p>

<p>

<label>색상:</label>

<input type="color" name="color" value="#ff0000">

</p>

<p style="text-align: center;">

<input type="submit" value="구구단 출력">

</p>

</form>

</div>

</body>

</html>

 

GugudanServlet

 

package exam;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/gugudanServlet")
public class GugudanServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int dan = Integer.parseInt(req.getParameter("dan")); // form에서 넘어온 데이터를 req.getParameter로 받음
int limit = Integer.parseInt(req.getParameter("limit"));
String color = req.getParameter("color");

// 구구단 시작점,끝점 전처리
int start = dan - (limit / 2);
int end = dan + (limit / 2);

req.setAttribute("start", start); // (key, value)와 유사형태로 데이터 전송
req.setAttribute("end", end);
req.setAttribute("dan", dan);
req.setAttribute("color", color);
req.getRequestDispatcher("/WEB-INF/views/gugudan.jsp").forward(req, resp); // forward 이동

}

}

 

gugudan.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@taglib prefix="c" uri="jakarta.tags.core"%>

<!-- JSTL 사용하기 위함 -->

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>gugudan.jsp</title>

<style>

table {

margin: 20px auto;

border-collapse: collapse;

}

 

td {

border: 1px solid #999;

padding: 8px;

text-align: center;

}

 

th {

background-color: #f0f0f0;

padding: 8px;

}

</style>

</head>

<body>

<div style="width: 900px; margin: auto">

<table>

<c:forEach begin="0" end="9" step="1" var="i">

<!--forEach 속성 begin = 초기값 end= 종료값 step=증감값 var= 속성, varStatus=index 값 -->

<c:choose>

<c:when test="${i==0}">

<tr>

<c:forEach begin="${start}" end="${end}" step="1" var="e">

<!-- choose when == if else , switch case 와 유사,

test = 조건식-->

<c:choose>

<c:when test="${e==dan}">

<td style="background-color: ${color}">${e}</td>

</c:when>

<c:when test="${e!=dan}">

<td>${e}</td>

</c:when>

</c:choose>

</c:forEach>

</tr>

</c:when>

 

<c:when test="${i!=0}">

<tr>

<c:forEach begin="${start}" end="${end}" step="1" var="e">

<c:choose>

<c:when test="${e==dan}">

<td style="background-color: ${color}">${e}x${i}=${e * i}</td>

</c:when>

<c:when test="${e!=dan}">

<td>${e}x${i}=${e * i}</td>

</c:when>

</c:choose>

</c:forEach>

</tr>

</c:when>

</c:choose>

 

 

</c:forEach>

 

</table>

</div>

</body>

</html>

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자주용현 | 작성시간 26.06.18 new 저희 아까 제대로 정리 못했던 내용 정리글이에요
    <c:forEach begin="0" end="9" step="1" var="e" varStatus="i"> 에서 var과 varStatus 차이점

    var 은 forEach로 반복되어 나온 데이터값 (리액트에서 map(e) 에 해당 e와 완전히 같아요) 이고,
    varStatus는 반복문의 현재 진행 상태, 인덱스 정보를 가지는 객채 라고 생각하시면 돼요( map(e,i) 에서 i를 *포함*하는 객체)
    varStatus의 주요 속성
    - .index - 0부터 시작하는 현재 반복 “순서”
    - .count - 1부터 시작하는 현재 반복 “횟수”
    - .current - 현재 루프에서 처리 중인 var와 동일한 객체 (e == i.current)
    - .first - 현재 반복이 첫번째이면 true 반환
    - .last - 현재 반복이 마지막이면 true 반환
  • 작성자주용현 | 작성시간 26.06.18 new <c:choose>
    <c:when test="${e==dan}">
    <td style="background-color: ${color}">${e}x${i}=${e * i}</td>
    </c:when>
    <c:when test="${e!=dan}">
    <td>${e}x${i}=${e * i}</td>
    </c:when>
    </c:choose>

    위 현 코드를 아래 처럼 삼항 연산자 이용해서 만들 수 있습니다. (원래 안되던 이유는 삼항연산자 false값에 #fff 을 직접 넣었기 때문이였습니다. '#fff' 로 문자열 처리 해주면 됩니다.)


    <td style="background-color: ${e==dan ? color : '#fff'}">${e}x${i}=${e * i}</td>

댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼