3. 내장객체(implicit object)
form 태그의 속성 method="post"일 경우
request.setCharacterEncoding("utf-8");
작성해줘야 한글이 깨지지 않음.
문자형을 숫자로 변환
기본적으로 숫자도 문자형으로 표현하기 때문에 자료형을 변경하기 위해서는 아래와 같이 작성해줘야함
String age = request.getParameter("age");
int age1 = Integer.parseInt(age);
1) request
배열이 들어가면 for와 함께 사용됨
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/for.jsp</title>
</head>
<body>
<h1>jsp1/for.jsp</h1>
<%
int a1 = 10;
int a2 = 20;
int a3 = 30;
int a4 = 40;
int a5 = 50;
//배열 : 변수 하나에 여러개의 값을 가지게 할 수 있음
int a[] = {10,20,30,40,50};
out.println("배열 주소 : " + a +"<br>" );
out.println("배열 크기 : " + a.length + "<br>");
out.println("배열 내용 : " + a[0] + "<br>" );
out.println("배열 내용 : " + a[1] + "<br>" );
out.println("배열 내용 : " + a[2] + "<br>" );
out.println("배열 내용 : " + a[3] + "<br>" );
out.println("배열 내용 : " + a[4] + "<br>" );
out.println("-------------------<br>");
// for(초기값;조건;증가값) {
// }
for(int i=0 ; i<5 ;i++){
out.println("배열 내용 : " + a[i] + "<br>");
}
%>
</body>
</html>
(...생략...)
String b[] = {"html", "java", "jsp", "db"};
for(int i = 0 ; i<4; i++){
out.println("배열 내용 : " + b[i] + "<br>");
//<%= %>로 나타내기
<%
for(int i = 0 ; i<4; i++){ %>
배열 내용 : <%=b[i] %> <br>
<%}
%>
(...생략...)
<table border="1">
<tr><td>과목</td></tr>
<tr><td><%=b[0] %></td></tr>
<tr><td><%=b[1] %></td></tr>
<tr><td><%=b[2] %></td></tr>
<tr><td><%=b[3] %></td></tr>
</table>
//==
<table border="1">
<tr><td>과목</td></tr>
<%for(int i = 0 ; i<4; i++){ %>
<tr><td><%=b[i] %></td></tr><%} %>
</table>
2023.11.28 - [study/WEB] - 231128 WEB
이전 시간에 하던 form4.jsp와 formPro4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/form4.jsp</title>
</head>
<body>
<h1>jsp1/form4.jsp</h1>
<form action="formPro4.jsp" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pw"><br>
성별 : <input type="radio" name="gender" value="남"> 남성
<input type="radio" name="gender" value="여"> 여성<br>
<!-- radio name을 같게 하면 그룹으로 묶어서 둘 중 하나 선택가능 -->
취미 : <input type="checkbox" name="hobby" value="게임">게임
<input type="checkbox" name="hobby" value="여행">여행
<input type="checkbox" name="hobby" value="축구">축구<br>
<!-- checkbox name이 같더라도 여러 개 선택 가능 -->
등급 : <select name="grade">
<option value="1">1등급</option>
<option value="2">2등급</option>
<option value="3">3등급</option>
</select><br>
자기소개 : <textarea name="intro" rows="5" cols="10">value값</textarea><br>
<input type="submit" value="회원가입">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/formPro4.jsp</title>
</head>
<body>
<h1>jsp1/formPro4.jsp</h1>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String gender = request.getParameter("gender");
String hobby[] = request.getParameterValues("hobby");
String grade = request.getParameter("grade");
String intro = request.getParameter("intro");
%>
아이디 : <%=id %><br>
비밀번호 : <%=pw %><br>
성별 : <%=gender %><br>
취미주소 : <%=hobby %><br>
취미개수 : <%=hobby.length %><br>
<%for(int a = 0; a< hobby.length ; a++){ %>
<%=hobby[a]%>
<%} %> <br>
등급 : <%=grade %><br>
자기소개 : <%=intro %><br>
</body>
</html>
hobby를 1,2,3를 선택했을 경우 결과가 나오는 것을 확인할 수 있다.
하지만 한 개도 선택하지 않았을 경우 그림5과 같이 오류가 발생함.
하나도 선택하지 않았을 때 자바스크립트를 통해서 제어 가능함. 아래
//취미를 테이블로 만들기
<table border="1">
<tr><td>취미</td></tr>
<%for(int i = 0; i < hobby.length ; i++){ %>
<tr><td><%=hobby[i] %></td></tr><%} %>
</table>
//hobby가 null일 때 동작하지 않게하기
<%
if(hobby!=null){
for(int i = 0; i< hobby.length ; i++){
%>
<%=hobby[i]%>
<%
}
} %> <br>
------------------<br>
<table border="1">
<tr><td>취미</td></tr>
<%
if(hobby != null){
for(int i = 0; i < hobby.length ; i++){ %>
<tr><td><%=hobby[i] %></td></tr>
<%
}
}%>
</table>
정리
http가 들고 온 정보 : 파라미터값(태그이름=값), 서버정보, 사용자정보, 쿠키정보(세션정보), http에 저장된 정보(http 헤더)
→서버에 전달
→서버 request가 요청정보에 저장
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/request.jsp</title>
</head>
<body>
<h1>jsp1/request.jsp</h1>
서버이름(서버 도메인) : <%=request.getServerName() %><br>
서버포트번호 : <%=request.getServerPort() %><br>
요청한 주소(URL) : <%=request.getRequestURL() %><br>
주소에서 서버주소를 뺀 주소(URI) : <%=request.getRequestURI() %><br>
클라이언트(유저) IP 주소 : <%=request.getRemoteAddr() %><br>
프로토콜 : <%=request.getProtocol() %><br>
요청방식 : <%=request.getMethod() %><br>
컨텍스트(프로젝트) 경로 : <%=request.getContextPath() %><br>
파일 업로드 시 업로드 한 경로(물리적인 경로) : <%=request.getRealPath("/") %><br>
http 헤더정보(언어) : <%=request.getHeader("accept-language") %><br>
http 헤더정보(브라우저) : <%=request.getHeader("user-agent") %><br>
</body>
</html>
2) response
기억장소할당
→ HTTP 요청에 대한 응답 정보를 저장하는 객체
→ 응답정보를 저장하면 웹서버 전달
→ http에 전달
→ 사용자 브라우저에 전달
→ response.setHeader("헤더이름",헤더값) 사용자 헤더값 변경
response.addCookie(쿠키값) 쿠키값을 사용자 컴퓨터에 파일로 저장
response.setContentType("text/html; charset=UTF-8") : 보는 페이지의 내용 타입을 변경
response.sendRedirect("주소 또는 파일이름") : 사용자 페이지를 다른 곳으로 이동 설정(주소 변경(하이퍼링크))
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/response.jsp</title>
</head>
<body>
<h1>jsp1/response.jsp</h1>
<a href="request.jsp">request.jsp 이동(하이퍼링크)</a>
</body>
</html>
'KDT > WEB' 카테고리의 다른 글
231205 WEB - JSP6(객체 범위, 액션태그, 쿠키) (0) | 2023.12.05 |
---|---|
231201 WEB - JSP5(내장객체) (0) | 2023.12.01 |
231128 WEB - JSP3(웹 서버 동작 과정, %, 내장객체) (0) | 2023.11.28 |
231127 WEB - JSP2(웹 서버 동작 원리, 주석, %) (0) | 2023.11.27 |
231122 WEB - CSS9, JSP1(서버의 역할) (0) | 2023.11.22 |