파라미터(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개의 파라미터를 비교하여“정답!”혹은 “땡..”을 출력하는 페이지
************* 컴퓨터 공학부가 모두 잘 되는 날이 왔으면 좋겠습니다. *************
*************틀린 부분이 있다면 말씀해주신다면. 정정 하도록 노력겠습니다. *************
'핫돌의 잡 지식 놓는 곳' 카테고리의 다른 글
언젠가 사용할지도 모르는 JSP 로그인 화면 만들기. 그리고 홈페이지 색상입히기. (0) | 2024.06.27 |
---|---|
언젠가 사용할지도 모르는 JSP GET방식과 POST방식 (0) | 2024.06.27 |
언젠가 사용할지도 모르는 JSP JSP의 요소 (0) | 2024.06.27 |
언젠가 사용할지도 모르는 JSP JSP구조와 서블릿 소개 (0) | 2024.06.27 |
언젠가 사용할지도 모르는 JSP 회원가입 페이지 구현 (0) | 2024.06.27 |