핫돌의 잡 지식 놓는 곳

언젠가 사용할지도 모르는 JSP 파라미터.

핫돌 2024. 6. 27. 00:27
728x90
반응형

파라미터(parameter)란?
>클라이언트가 서버에게 전달하는 데이터
>‘이름-값’쌍의 형태(map구조)
>서버 측에서는 전달받은 파라미터를 해당 파라미터의 ‘이름’을 통해 실제 ‘값’을 얻어오는 형식
>문자열만 처리가능
파라미터 전달방법
> <form> 태그 안에 전달할 파라미터를 나열
      <form action="파라미터를 전달할 페이지"method = "전송방식">
      <input type ="형식“ name ="파라미터명">기본값</textarea>
      <select name="파라미터명">
             <option value ="값1">보여줄 텍스트1</option>
             <option value ="값2">보여줄 텍스트2</option>
             <option value ="값3">보여줄 텍스트3</option>
   </select>
   <input type ="hidden" name ="파라미터명" value ="값">
</form>
파라미터 받는 방법
>(자바)String request.getParameter(String 파라미터명)
:[파라미터명]을 가진 파라미터의 [값]을 반환(String)
>스크립트릿(<% %>)이나 표현식(<%= %>)을 사용
파라미터 관련된 메소드
> request.getParameter(“파라미터명”):파라미터 값을 얻음(리턴자료형 : String)
> request.getParameterValues("파라미터명"): 파라미터값들을 얻음(리턴자료형 : String[])
> request.getParameterMap():전달된 모든 파라미터를 얻음(리턴자료형:Map)
  key : 파라미터명 (자료형 : String)
  value : 파라미터값(들) (자료형 : String[])
> request.getParameterName() : 전달된 모든 파라미터들의 이름을 얻음(리턴자료형 : Enumeration)

폴더 생성 및 파일 생성 파일은 HTML로 해줍니다.

아래는 test01 소스코드입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
     <form action = "test01_result.jsp" method = "get">
     <input type = "text" name = "aa">
     <input type = "submit">
     </form>
</body>
</html>


html생성시 만든이름 test01과  <form action = "test01_result.jsp" method = "get"> 명령어 내용의 action의 앞부분test01을 맞춰서 입력 해줍니다. 
저는 jap파일 만들 때 이름이 달라서 그런지 jsp파일의 String가 인식을 못했는데 앞부분 맞추니까 인식이 되었습니다. 

아래는 test01 jsp 소스코드입니다.

 

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

pageEncoding="UTF-8"%>

<%

String s = request.getParameter("aa");

//입력받은값

String ss = request.getParameter("Aa");

//틀린부분은null 값대소문자가잘못됬거나없는값일떄

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

입력받은값: <%= s %> <br>

입력받은값: <%= ss %>

</body>

</html>

핫돌이라는 입력값이 결과값으로 넘어가는데 여기서는 aa라는 이름표와 같이 넘어가는 것입니다. 
null값이 나오는 이유는 선언되지 않았거나 대소문자가 틀렸거나 어떤 사유가 있을 때 같이 오는 입력값을 받지 못해서 그렇습니다. 

test02 HTML소스코드.

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action = "test02_result.jsp" method = "get">

좋아하는음식을선택하세요.(중복선택가능)<br>

<input type = "checkbox" name ="food" value = "chicken"> 치킨<br>

<input type = "checkbox" name ="food" value = "icecream">아이스크림<br>

<input type = "checkbox" name ="food" value = "bread"><br>

<input type = "checkbox" name ="food" value = "candy">사탕<br>

<input type = "checkbox" name ="food" value = "snack">과자<br>

<input type = "submit">

 

 

</form>

</body>

</html>

test02 jsp 소스코드.

 

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

pageEncoding="UTF-8"%>

<%

String str = request.getParameter("food");

String[] arr= request.getParameterValues("food");

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

당신이 좋아하는 음식은<br>

<% for(int i = 0; i<arr.length; ++i) {%>

<%= arr[i] %><br>

<%} %>

입니다.

</body>

</html>

test02결과물.

test03 html소스코드

 

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action = "test03_result.jsp" method = "get">

 

<input type = "text" name = "param1">

<input type = "number" name = "param2">

<textarea name ="text1">안녕하세요</textarea>

 

<input type = "submit">

</form>

</body>

</html>

test03 jsp 소스코드

<%@page import= "java.util.Enumeration"%>

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

pageEncoding="UTF-8"%>

<%

//파라미터이름을얻어오고싶다!

Enumeration<String> names = request.getParameterNames();

 

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<%while(names.hasMoreElements()){%>

 

<%= names.nextElement() %><br>

 

<%} %>

</body>

</html>

 

 

Enumeration에 오류가 있는 이유는 import util이 선언되지 않아서 인식하지 못해서 이다.

test03 jsp 수정페이지.

test 03결과 .

String 객체가 리턴이 되는데 파라미터 이름이 문자열형식으로 들어있다.

next를 실행하면 모든 원소를 차례로 확인하는데

메소드를 호출 할 때 마다 반복을 하는데 while문 앞에 있는 것이 트루 일때까지 .

원소가 더 있니? 라고 물어보는 것과 같다.

원소가 남아있을 때까지 리턴함.

결과적으로는 원소를 처음부터 끝까지 다 보여줘라는 뜻이다.

test04 html 소스코드.

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action = "test04_result.jsp" method = "get">

이름<input type = "text" name = "user_name"><br>

나이<input type = "number" name = "user_age"><br>

취미<input type = "checkbox" name = "hobby" value = "reading">읽기

<input type = "checkbox" name = "hobby" value = "eating">읽기

<input type = "checkbox" name = "hobby" value = "gaming">게임하기

<input type = "checkbox" name = "hobby" value = "roaming">산책하기

<br>

<input type ="submit">

</form>

</body>

</html>

test04 jsp 소스코드

<%@page import="java.util.Set" %>

<%@page import="java.util.Map" %>

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

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

//모든파라미터를받는메소드

Map<String, String[]> map = request.getParameterMap();

//<key,Value>

//key:파라미터이름()

//Value :파라미터의값()

Set<String> pNames = map.keySet();

String[] pValues = null

for(String p :pNames){

pValues = map.get(p);

out.write("파라미터명:" +p+"<br>");

out.write("파라미터값:");

for(String val : pValues){

out.write(val +"");

}

out.write("<br>");

}

%>

</body>

</html>

test04 .

gugudan html 소스코드

 

 

 

 

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

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

int n1 =(int)(Math.random()*8) + 2; // 2 ~ 9

int n2 =(int)(Math.random()*9) + 1; // 1 ~ 9

int realDab = n1 *n2

%>

<form action = "gugudan_result.jsp" method ="get">

<%= n1 %> X <%= n2 %> = <input type = "number" name ="userDab">

<input type = "hidden" name ="realDab" value = "<%= realDab %>">

<input type = "submit" value ="결과보기!">

</form>

</body>

</html>

 

랜덤한 2개의 정수를 생성하여 클라이언트에게 문제를 제출, 답을 입력 받는 페이지를 나타낸다.

사용자 입력 답은 <input type ="number">를 사용하고

실제 답은 <input type= "hidden">을 사용하여 따로 값주도록 되어있다.

gugudan_result.jsp

 

 

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

pageEncoding="UTF-8"%>

<%

//String sUserDab = request.getParameter("userDab");

//int userDab = Integer.parseInt(sUserDab);

int userDab = Integer.parseInt(request.getParameter("userDab"));

int realDab = Integer.parseInt(request.getParameter("realDab"));

String message = userDab==realDab ? "정답!" : "..";

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

//<%if(userDab == realDab){ //

// 정답!!

// } else {

//..

//} %>

 

<%= message %>

</body>

</html>

<%
//<%if(userDab == realDab){ // 
// 정답!!
// } else {
//땡..
//} %>

이 부분은 String message = userDab==realDab ? "정답!" : "땡.." , <%= message %> 해당 코드들이 값을 나타내기 위에 쓰인 것처럼 기호 ?로 표기를 못했을 때 자바의 if문을 사용한 것이다. 
또, 
//String sUserDab = request.getParameter("userDab");
//int userDab = Integer.parseInt(sUserDab);
해당 코드와 int userDab = Integer.parseInt(request.getParameter("userDab")); 코드는 같은 부분을 해결한다.

전달된 2개의 파라미터를 비교하여정답!”혹은 ..”을 출력하는 페이지

 

 

 

 

 

 

************* 컴퓨터 공학부가 모두 잘 되는 날이 왔으면 좋겠습니다. *************
*************틀린 부분이 있다면 말씀해주신다면. 정정 하도록 노력겠습니다. *************

728x90
반응형