ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 내에서 화면과 프로그램이 섞여 있으면 유지보수가 힘들고 디자이너들과의 협업이 어려움

    반응형

    댓글

Designed by Tistory.