-
[JSP] 프로젝트로 배우는 자바 웹 프로그래밍 5장 개념, 실습Languages/jsp 2021. 10. 26. 00:39반응형
JSP의 기본 코드 구성
<%@ page contentType = "text/html; charset=utf-8" import="java.util.Date"%> <html> <head> <title> 문서 제목</title> </head> <body> 안녕하세요. <br> <% String bookTitle = "JSP 기초"; String author = "KJH"; Date da = new Date(); %> <h5><%= bookTitle %></h5>(<%= author %>)입니다. <br> 현재 날짜와 시간은 : <%= da %> </body> </html>
주석
텍스트로 된 간단한 설명문을 넣는 것을 말한다.
C 언어를 비롯한 대부분의 프로그램 언어가 주석을 사용하기 위한 문법을 제공
HTML 주석 : 클라이언트로 전달되는 주석
<!--- 주석입니다. --->
JSP 주석 : 클라이언트로 전달되지 않는 주석
<%--- 주석 ---%>
지시어(Directives)란?
지시어는 jsp 파일의 속성을 기술하는 jsp문법
jsp 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용을 담고 있다.
지시어는 크게 page, include, taglib으로 나눌 수 있으며, 각각에서 다루는 속성
-------------------------------------- page 지시어 ---------------------------------------------------
page 지시어는 현재 jsp 페이지를 컨테이너에서 처리하는데 필요한 각종 속성을 기술하는 부분
보통 jsp 페이지 맨 앞에 위치함.
<%@ page 속성1="속성값1" 속성2="속성값2" ... %>
여러 줄에 나누어 작성할 수도 있음
<%@ page contentType="text/html;charset=UTF-8"
import="javax.sql.*, java.util.*" errorPage="error.jsp"%>
<%@ page import="java.util.*" %>
page 지시어와 jsp의 한글 처리
page 지시어에서 중요한 부분 중 하나는 한글 처리 부분임.
jsp 에서는 다음과 같이 3단계로 캐릭터셋을 설정함.
pageEncoding="UTF-8", contentType="text/html;chatsert=UTF-8"
1. import
import는 jsp 스크립트 부분에 자바 클래스를 사용하는 경우 해당 클래스의 패키지에
대한 import 설정으로 기본적으로 자바에서와 동일하다.
<%@ page import="java.sql.*,java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*, java.util.*" %>
2. session
세션은 웹 브라우저와 웹 서버가 지속적인 클라이언트 인식을 위해 필요한 정보를 임시로 저장
주로 웹 사이트에 로그인하거나 쇼핑몰에서 장바구니 등을 구현할 때 사용된다.
기본 값이 true(세션을 사용한다)이므로, 일부러 사용을 제한할 목적이 아니라면 별도로
설정하디 않아도 됨.
<%@ page session="true" %>
3. buffer
jsp 페이지 데이터를 출력하기 위한 jspWriter 즉 out 내장객체의 버퍼크기를 지정
기본값은 8kb 이고 jsp 페이지에 동적으로 많은 내용이 포함될 경우 버퍼 크기 조정이
필요할 수도 있으나 일반적으로는 변경하지 않아도 됨.
<%@ page buffer="8kb" %>
4. autoFlush
autoflush는 버퍼를 자동으로 비울 것인지를 지정하는 속성으로, 기본 값은 true이다.
<%@ page autoFlush="true" %>
5. isThreadSafe
기본적으로 서블릿은 스레드로 동작하기 때문에 스레드로 인한 동기화 문제를 해결하기
위한 옵션임.
기본값은 true로, 일반적으로 false로 설정하는 경우는 거의 없다.
<%@ page ifThreadSafe="true" %>
6. info
해당 jsp에 대한 간단한 설명으로 저작권이나 작성일 등 간단한 정보 기술에 사용
<%@ page info=“JSP Example" %>
7. errorPage, isErrorPage
두 속성은 jsp파일의 오류 처리를 위한 것으로 , errorPage는 현재 페이지에 오류 발생 시
호출할 페이지를 지정하는 속성이고 isErrorPage는 오류 처리를 위한 전용 페이지임을 알리는 속성
errorPage : 일반적인 jsp 파일에 사용
<%@ page errorPage=“오류_처리_파일.jsp” %>
isErrorPage : 오류 처리 파일에만 사용
<%@ page isErrorPage=“true” %>
8. contentType
현재 jsp 페이지를 클라이언트에서 처리하기 위한 콘텐츠 유형을 지정하는 부분
윈도우에서 파일 확장자(.doc, .hwp등)에 따라 연결 프로그램이 동작하는 것과 마찬가지로
웹 브라우저에서도 contentType에 따라 전달되는 내용을 어떻게 처리할지 결정할 수 있다.
<%@ page contentType=“text/html” %>
text/thml이 아니라 application/msword로 지정할 경우 브라우저는 서버가 전달되는 콘텐츠를
ms word문서로 인식해 처리할 것은 사용자에게 요청함
<%@ page contentType=“application/msword” %>
9. pageEncoding
pageEncoding은 컨테이너에서 처리할 jsp파일의 인코딩을 설정
<%@ page pageEncoding=“UTF-8” %>
******************************* 중요 ******************************
10. include 지시어
include 지시어는 현재 jsp파일에 다른 html이나 jsp문서를 포함하기 위한 기능을 제공
include 지시어는 다음 절에서 살펴볼 include 액션과 비슷한 기능을 한다.
<%@ include file=“포함할 파일_이름” %>
ex) 배너 화면 구성, 네이버 서비스, 뉴스캐스트, 쇼핑, ...
****************************(나중에 또 나옴)****************************
11. taglib 지시어
JSP 기능을 확장하기 위해 만들어진 커스텀 태그 라이브러리를 사용하기 위한 지시어
간단한 문법만 참조
<%@ㅇ taglib url="/META-INF/mytag.tld" prefix="mytag" %>
------------------------------------- 액션 ----------------------------------------
JSP 액션의 종류
JSP 액션은 JSP고유 기능으로 빈즈 클래스 연동 및 동적 페이지 관리를 위한 기능을 제공
<jsp:action_name attribute="value" /> 형태를 가짐
jsp 페이지간의 흐름 제어
자바 애플릿 지원
자바 빈즈 컴포넌트와 jsp 상호작용 지원
1. include 액션(중요)
<jsp:include page="포함할 파일_이름" />
include 지시사와 개념이 유사
include 지시어 - 해당 파일을 포함 후 컴파일
include 액션 - 실행 시점에서 해당 파일을 호출 하여 결과를 포함
[실습] include 지시어/ include 액션 사용하기
<%@ page contentType = "text/html; charset=utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>main</title> <link rel="stylesheet" href="05style.css"> </head> <body> <header> <%@ include file="05top.jsp"%> // include 액션 </header> <section> <a>main</a> </section> <footer> <jsp:include page="05footer.jsp" flush="false" /> // include 지시어 </footer> </body> </html>
2. forward 액션
include 액션과 사용법은 유사하지만 요청 파이지를 다른 페이지로 전환할 때 사용한다
response 내장객체의 sendRedirect() (6장내용) 와 유사 하지만 forward된 페이지에 파라미터를
전달할 수 있다는 점에 차이가 있다.
<jsp:forward page="포워딩할 파일_이름" />
[실습] forward 액션 사용하기
02forwardParamForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta name="viewport" content="width=device-width,initial-scale=1.0"/> <h2>포워딩될 페이지에 파라미터값 전달 예제</h2> <form method="post" action="02forwardParamTo.jsp"> <dl> <dd> <label for="name">이름</label> <input id="name" name="name" type="text" placeholder="홍길동" autofocus required> </dd> <dd> <label for="color">색선택</label> <select id="color" name="color" required> <option value="blue">파랑색 <option value="red">빨강색 <option value="yellow">노랑색 </select> </dd> <dd> <input type="submit" value="확인"> </dd> </dl> </form>
02forwardParamTo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta name="viewport" content="width=device-width,initial-scale=1.0"/> <% request.setCharacterEncoding("utf-8");%> <h2>포워딩하는 페이지 : forwardParamTo.jsp</h2> <% String name = request.getParameter("name"); String selectedColor = request.getParameter("color"); String selectedPage = "02"+selectedColor + ".jsp"; %> <jsp:forward page="<%=selectedPage%>"> <jsp:param name="selectedColor" value="<%=selectedColor%>"/> <jsp:param name="name" value="<%=name%>"/> </jsp:forward>
02Red.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta name="viewport" content="width=device-width,initial-scale=1.0"/> <style> <! -- img{ border : 0; width : 70px; height : 30; } --> </style> <% String name = request.getParameter("name"); String selectedColor = request.getParameter("selectedColor"); %> <h2> 포위당하는 페이지 - <%=selectedColor+".jsp" %></h2> <b><%=name%></b>님의 좋아하는 색은 "<%=selectedColor%>"이고 자기탐구와 내적성장을 상징하는 색입니다.<br> <img src="img/<%=selectedColor+".jpg"%>">
02Blue , 02Green 이하 생략(red와 동일)
실행결과1
실행결과2 (form -> to)
3. plugin 액션
웹 브라우저에서 자바 플러그인을 사용하여 자바 애플릿이나 자바 빈즈 컴포너틑를 실행할수 있게 한다.
plugin 액션을 사용하면 자동으로 <object> 혹은 <embed>와 같은 태그를 통해 애플릿 등을 실행하도록 한다.
but 애플릿을 사용하는 경우가 드물기 때문에 참고만 한다.
<jsp:plugin type="bean|applet" code="objectCode" codebase="objectCodeBase" { align = alignment } { archive = archiveList } { height = height } { hspace = hspace } { name = name } { vspace = vspace } { width = width } { nspluginurl = url } { iepluginurl = url } { <jsp:params> {<jsp:params name="paramName" value="paramValue" />} </jsp:params> } {<jsp:fallback> Plugin S/W를 지원하지 못하는 경우의 설명</jsp:fallback> } </jsp:plugin>
4. usebean 액션 - 7장에서 확인
-------------------------------------------------- 선언과 표현식 --------------------------------------------------
선언
jsp 페이지에서 메서드나 멤버변수를 선언하기 위한 구문
jsp가 서블릿으로 변환된 자바 코드에서는 모든 내용이 _jspService()메서드에 들어가기 때문에 jsp에서
선언한 변수는 로컬변수가 되고 메서드 안에서 다른 메서드를 선언하는 자바 문법상 잘못된 것이므로 컴파일
에러가 발생
<%! %>는 jsp페이지에서 이러한 제약 사항 없이 멤버변수와 메서드 선언을 가능하게 함
<%! // 멤버변수 선언이나 메서드 선언이 올 수 있다. String str = "test"; public boolean check() { return false; } %>
표현식(Expression)
간단한 데이터 출력이나 메서드 호출 등에 사용
<%= %>
코드 마지막에 ;(세미콜론) 사용 x
메서드 호출 : <%= calculator() %> 변수 출력 : <%= result %> 사칙 연산과 문자열 결합 : <%= “i+2=“+(i+2)+”입니다” %>
스크립트릿(scripttlet)
jsp 문서 내에서 자바 코드를 기술할 수 있는 부분으로 jsp의 가장 큰 특징 중 하나
현재 권장 x
- 알아만 두자
<% // 로컬 변수 선언이나 프로그램 로직이 올 수 있다. String str = "test"; for (int i=0; i < 10; i++) { out.println(i); } %>
[연습문제]
1. HTML소스에는 보이지 않는 JSP 주석 표기법은 무엇인가?
<%--- 주석 ---%>
2. page 지시어의 기본적인 사용 예를 들어 설명하시오.
페이지 지시어에는 import, session, buffer, ... 등이 있으며 다른 문서를 포함하거나 java 라이브러리를 포함할
때 주로 사용한다.
3. 현재 페이지에 특정 위치에 다른 jsp를 포함할 수 있는 jsp 문법 두가지를 쓰고 차이를 설명하시오.
include 지시어와 include 액션
include 지시어 - 해당 파일을 포함 후 컴파일
<%@ include file=“포함할 파일_이름” %>
include 액션 - 실행 시점에서 해당 파일을 호출 하여 결과를 포함
<jsp:include page="포함할 파일_이름" />
4. 표현식과 스크립트릿에 대해 간단히 설명하고, 스크립트릿이 MVC패턴의 권장되지 않는 이유를
설명하시오.
표현식(Expression)
간단한 데이터 출력이나 메서드 호출 등에 사용
<%= %>
스크립트릿(scripttlet)
jsp 문서 내에서 자바 코드를 기술할 수 있는 부분으로 jsp의 가장 큰 특징 중 하나
-권장되지 않는 이유
JSP 내에서 화면과 프로그램이 섞여 있으면 유지보수가 힘들고 디자이너들과의 협업이 어려움
반응형'Languages > jsp' 카테고리의 다른 글
[JSP] 프로젝트로 배우는 자바 웹 프로그래밍 6장-1 개념,실습 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 3장 개념,실습 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 번외 계산기 만들기 (0) 2021.10.25 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 4장 개념,실습 (0) 2021.10.25 [jsp] 프로젝트로 배우는 자바 웹프로그래밍 2장 개념, 실습 (0) 2021.10.25