20221028(금)
- 목차
- JSP 페이지의 디렉티브
- JSP 페이지의 스크립트 요소
- JSP 주석
- JSP 제어문
- 내장 객체 (Implicit Object)
< JSP 페이지의 디렉티브 > - directive
- JSP ? : Java Server Pages
- Java를 이용한 서버 사이드 스크립트 언어
- Java의 점유율을 대폭 상승시킨 1등 공신
- JSP 파일은 그 자체로 실행 x ➡ servlet 성격의 자바파일로 변환되고 컴파일되어 클래스가 된 후 실행된다. - include 디렉티브 <@include>
- <%@ include file="포함될 파일의 url"%>
- 합쳐져서 실행된다!!!!!!!!!!
- 두 개의 파일이 하나의 파일로 합쳐진 후 하나의 파일로서 변환되고 컴파일된다.
- b나 c 링크로 들어갔을 경우, menu 내용이 공통적으로 나오게된다.
- menu 내용 위치 이동은 원하는 곳으로 언제든지 이동가능하다.
- 보통 상/하단에 많이 사용됨 (하단 : 회사 주소 등)
- 경로타고 들어가보면
- 경로 : workspace ➡ .metadata ➡ .plugins ➡ org.eclipse wst.server.core(밑에서 7번째) ➡ tmp0 ➡ work ➡ Catalina ➡ localhost ➡docjsp(프로젝트명) ➡ org ➡ apache ➡ jsp ➡ ch03
- menu.jsp 파일은 존재하지 않는다!!!!!!!!!!!!!!!
< JSP 페이지의 스크립트 요소 > - 3가지 스타일
(1) 선언문 Declaration
<%! 변수 및 메소드 선언 %>
위치는 상관없지만(어디에 쓰든 클래스 바로 밑으로 들어가기 때문! ✌), 보통 먼저 쓰게 된다 :)
사실, 스프링에서 잘 쓰으진 않는다.! 대신 기억 해두면,, 언젠간,, ㅠ
(2) 스크립트릿(Scriptlet)
<% 프로그래밍 코드 기술 %>
객체 생성하고 호출하는 문법만 존재. 이 코드가 메소드 안으로 들어간다.
실제로 선언문은 쓰일일은 없고 스크립트릿이 주로 사용된다.
(3) 표현식(Expression)
<%= 화면에 출력할 내용 기술 %>
** 선언문만 class 밑에 만들어진다!!!!! 나머진 jspService 안에 작성 순으로 들어간다.
class Test {
String str2 = "Kingdora";
void_jspService() {
String str1 = "Game ID - " + STR2;
out.write("결과:");
out.write("Game ID - Kingdora");
}
}
< 주석 정리 >
HTML 주석 | <!-- --> | 화면에 표시되지 않으나, 실행됨 (서버에는 들어있다. 검사창에 실행됨) |
JSP 주석 | <%-- --%> | 화면에 표시되지도 실행되지도 않음 서버에서 동작조차 못하게 하려면 JSP주석 사용하기!!!! |
자바 주석 | //, /* */ |
화면에 표시되지도 실행되지도 않음
|
< JSP 제어문 >
- JSP 파일 연결 및 파라미터 값 일치 주의!
- 좋아하는 색 선택하고 결과창 나오게 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h2>if-else문 예제 - 좋아하는 색 선택</h2>
<form method = "post" action = "ifTest.jsp">
<dl>
<dd>
<label for = "name">이름</label>
<input type = "text" name = "name" id = "name" placeholder="지워니" autofocus required>
</dd>
<dd>
<label for = "color">색선택</label>
<select name = "color" id = "color" required>
<option value = "" selected>선택하세요.</option>
<option value = "blue">파랑색</option>
<option value = "green">초록색</option>
<option value = "red">빨강색</option>
<option value = "yellow">기타</option>
</select>
</dd>
<dd>
<input type = "submit" value = "확인">
</dd>
</dl>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 폼으로 전송되어 온 한글데이터 깨짐방지 목적 --%>
<%-- request 객체 : 브라우저를 이용하여, 전송한 관련정보를 참조하는 객체 --%>
<% request.setCharacterEncoding("utf-8"); %>
<h2>if-else문 예제 - 좋아하는 색 선택</h2>
<%
String name = request.getParameter("name");
String color = request.getParameter("color");
String selectColor = "";
if(color.equals("blue")){
selectColor = "파랑색";
}else if(color.equals("green")) {
selectColor = "초록색";
}else if(color.equals("red")) {
selectColor = "빨강색";
}else {
selectColor = "기타색";
}
%>
<%= name %>님이 선택한 색은 <%= color %>입니다. <br>
선택한 색 : <br>
<img src = "<%=color + ".jpg" %>" border = "0">
- 톰캣기반에서 JSP 페이지의 한글처리
- 서버에서 웹 브라우저에 응답되는 페이지의 화면 출력 시 한글처리
<%@ page contentType="text/html;charset=utf-8"%>
<%@ 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>
<h2>while문 예제 - 임의의 값을 임의의 횟수로 곱하기</h2>
<form method = "post" action = "whileTest.jsp">
<dl>
<dd>
<label for = "number"> 곱해질 값 : </label>
<input type = "number" name = "number" autofocus required>
</dd>
<dd>
<label for = "num"> 곱해질 횟수 : </label>
<input type = "number" name = "num" required>
</dd>
<dd>
<input type = "submit" value = "확인">
</dd>
</dl>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h2>while문 예제 - 임의의 값을 임의의 횟수로 곱하기</h2>
<%
int number = Integer.parseInt(request.getParameter("number"));
int num = Integer.parseInt(request.getParameter("num"));
long multiply = 1;
int count = 0;
while(count < num) {
multiply *= number;
count++;
}
%>
결과 : <%= multiply %>
< 내장 객체 (Implicit Object) >
(1) request 객체
- 웹 브라우저의 요청 정보를 저장하고 있는 객체
- 사용자의 요구사항을 얻어내는 요청 메소드
- String getParameter(name) : 파라메터 변수 name에 저장된 변수 값을 얻어내는 메소드
<%@ 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>
<h2>request 예제 - 요청메소드</h2>
<form method="post" action="requestTest1.jsp">
<dl>
<dd>
<label for = "name">이름</label>
<input type = "text" name = "name" id = "name" placeholder = "이름을 입력" autofocus required>
</dd>
<dd>
<label for = "age">나이</label>
<input type = "number" name = "age" id = "age" min = "20" max = "99" value = "20" required>
</dd>
<dd>
<fieldset>
<legend>성별</legend>
<input type = "radio" name = "gender" id = "gender" value = "m" checked>
<label for = "gender">남</label>
<input type = "radio" name = "gender" id = "gender" value = "f">
<label for = "gender">여</label>
</fieldset>
</dd>
<dd>
<label for = "hobby">취미</label>
<select id="hobby" name="hobby" required>
<option value = "잠자기">잠자기</option>
<option value = "무협지보기">무협지보기</option>
<option value = "애니메이션시청">애니메이션시청</option>
<option value = "건프라">건프라</option>
</select>
</dd>
<dd>
<input type = "submit" value = "전송">
</dd>
</dl>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<h2>request 예제 - 요청메소드</h2>
<%
String name = request.getParameter("name");
String age = request.getParameter("age");
String gender = request.getParameter("gender");
String hobby = request.getParameter("hobby");
if(gender.equals("m")) {
gender = "남자";
}else {
gender = "여자";
}
%>
<%= name %> 님의 입력정보는<br>
나이 : <%=age %><br>
성별 : <%=gender %><br>
취미 : <%=hobby %>
(2) response 객체
- 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체
- 응답 정보와 관련하여 주로 헤더 정보 입력, 리다이렉트 등의 기능을 제공
- 클라이언트 - 서버(페이지 이동이 일어나는 것이 아니다!!!!)
- 페이지 이동에 대한 정보가 클라이언트로 넘어가서 다시 클라이언트가 서버로 페이지 이동
(파견 나갔다가 거기서 퇴근하는게 아니라 본사로 돌아와서 퇴근하는 관점으로 보기) - response 객체의 메소드
void setHeader(name, value) | 헤더정보 값을 수정. |
void setContentType(type) | 웹 브라우저의 요청 결과로 보일 페이지의 contentType을 설정 |
void sendRedirect(url) | 페이지를 이동 |
(3) out 객체 ➡ 메소드는 기술의 발전으로 무의미해졌다. (출력용도로만 쓰인다.)
- JSP페이지의 출력할 내용을 가지도 있는 출력 스트림 객체.
- 표현식(<%=문장%>) 과 같음
(4) pageContext 객체
- JSP페이지 대한 정보를 저장하고 있는 객체.
- 다른 내장객체를 구하거나, 페이지의 흐름제어 그리고 에러데이터를 얻어낼 때 사용.
ServletRequest getRequest() | request객체를 얻어냄 |
ServletResponse getResopnse() | response객체를 얻어냄 |
(5) session 객체
- 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체
- 웹 브라우저(클라이언트)당 1개가 할당.
- 주로 회원관리 시스템에서 사용자 인증에 관련된 작업을 수행할 때 사용.
✨ 쉽게 이해하기!
체육관에 개인라카번호 같은 느낌!!!!! 할당받은 공간에 내 물건들을 다 집어넣을 수 있다.
우리도 문법을 이용해 할당받은 공간에 내용을 저장시킨다.
id/pw로 로그인을 성공적으로 끝났을 때 내가 로그인했다는 걸 저장시켜 줄 수 있다.
로그인 했다는 사실이 저장되어있는 메모리를 제거하는 것이 바로 로그아웃이다!!!!!
- 톰캣의 기본 세션시간 : 30분(1800초)
// session.setMaxInactiveInterval(1800);
'🏫 Open API_JAVA' 카테고리의 다른 글
[69일차] 쿠키 / 표현언어 Expression Language : EL (0) | 2022.11.03 |
---|---|
[68일차] session 객체 / application 객체 / 내장객체의 영역 / JSP 페이지의 모듈화 / 데이터베이스와 JSP의 연동 (0) | 2022.11.02 |
[66일차] 백엔드 / 웹 프로그래밍의 이해 / 각 파일들의 역할 - jsp, servlet (0) | 2022.10.31 |
[65일차] 예외처리 / 트랜잭션 (0) | 2022.10.30 |
[64일차] PL/SQL(익명블록, 변수, 상수, DML, 제어문, 함수) / 프로시저 (0) | 2022.10.25 |