티스토리 뷰

Servlet 을 사용하다보면 name값을 이용해서 여러값을 받는 경우가 있다. 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action=Cal method="post">
<div>
<label>x: </label>
<input type="text" name="x"/>
</div>
<div>
<label>y: </label>
<input type="text" name="y"/>
</div>
<div>
<input type="submit" value="덧셈">
</div>
</form>
</body>
</html>

이렇게 두개의 값을 연산하는 html코드가 있다고 하자, 그럴경우 연산을 위해 

Servlet에도 두개의 request값을 받는 코드를 지정해야한다. 

이렇게 적은 갯수의 입력공간이 있을경우는 상관이 없지만, 열개 스무개의 입력공간을 만들게 된다면

Servlet측에서 연산하는데 굉장히 힘들어할것이다. 그럴경우 사용하는것이 name의 배열 특성을 사용한 배열이다. 

아래와 같이 4개의 입력공간이 있다고 가정해보자, 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action=Cal method="post">
<div>

<input type="text" name="x"/>
<input type="text" name="y"/>
<input type="text" name="z"/>
<input type="text" name="c"/>



<div>
<input type="submit" value="덧셈">
</div>
</form>
</body>
</html>

이럴경우에는 Servlet에서도 마찬가지로 4개의 name값을 가진 변수를 선언하고 등등 여러작업을 해야해서 

프로그래머 입장에서나, 효율성 측면에서도 굉장히 비효율적으로 코딩을 해야한다 밑과 같이...

		String x_=request.getParameter("x");
		String y_=request.getParameter("y");
		String z_=request.getParameter("z");
		String c_=request.getParameter("c");

이런식으로 requset의 값도 각 변수마다 받아야하고, 일일히 선언을 해줘야하는 작업이 귀찮다. 

그래서 사용하는게 name의 배열의 특성인것

사용하는 방법은 간단하다.

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action=Cal method="post">
<div>

<input type="text" name="num"/>
<input type="text" name="num"/>
<input type="text" name="num"/>
<input type="text" name="num"/>



<div>
<input type="submit" value="덧셈">
</div>
</form>
</body>
</html>

다음과 같이 name값을 전부 num으로 선언한다. name은 같은 name이 있을경우 자동으로 배열로 만들기 때문에 

현재 0~3까지의 배열이 자동으로 생성이 되어있다. 

이 값을 변경하기 위해서는

Servlet으로 넘어가 다음과 같이 작성하면 된다. 

String[] num= request.getParmeterValues("num");
int result=0;
for(int i=0;i<num.length;i++){
int num= Integer.parseInt(num[i]);
result +=num;
}

result부분은 단순 연산을 위한 곳이니 핵심 부분만 기억하면 될 것같다. 

일반적으로 하나의 name의 value를 가져올때는, getParmeter 만 사용했지만 이번에 가져올 값은 배열로 된 여러개의 value값이기 때문에 배열의 값을 가져올때는 getParmeterValues를 사용한다만 알면 핵심적인 내용은 끝이다.부가적으로 살펴볼부분은 String은 항상 고정이고 배열로 지정할것이기 때문에 []을 넣어주고 변수명을 정했다. 

밑의 for문같은 경우는 모든 배열에 값을 int로 바꾸고 더해주기 위한 부분이니 자세한 설명은 생략하겠다. 

 

요약:name값은 자동으로 배열으로 저장되고 용도가 같은 값들이라면 한번에 name값으로 묶어서 코드의 길이를 줄일 수 있다. 이때 배열의 value를 확인하기위해 getParmeterValues를 사용한다. 

'웹 프로그래밍 > JSP' 카테고리의 다른 글

에러페이지 처리  (0) 2021.03.08
한글 깨짐처리 GET & POST  (0) 2021.03.08
Cookie의 이해  (0) 2021.03.06
Servlet의 기본적인 사용방법 (+ 계산기)  (0) 2021.03.06
Servlet의 이해  (0) 2021.03.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함