JSP 정리

2016.09.11 22:58

졸리운_곰 조회 수:332

JSP 정리

 

<<<<<<<<<<<<<<<<<<<<< JSP(Java Server Pages)>>>>>>>>>>>>>>>>>>>
1. 장점

   (1) 서블릿보다 만들기 쉽고, 빠르다
   (2) 디자인(HTML/JS/CSS)과 로직(JAVA)을 분리시킬 수 있다. 즉, 디자이너와 프로그래머의 일을 분업화할 수 있다.
   (3) 프로그래머가 직접 코딩한 Servlet 보다 최적화된 Servlet을 생성시켜 효율적인 코드를 생산한다.
   (4) Java Beans 사용이 쉽다.
   (5) 웹 어플리케이션상에서 변수의 유효범위(scope) 설정이 간편

2. JSP를 이루는 구성인자
   (1) 지시어 (directive)
       <1> 형태 : <%@ 지시어 %>
       <2> 종류 : page, include, taglib ...
              [1] page - contentType(내용물 형식 MIME Type 입력)
                   "text/html; charset=euc-kr"
                    - import(자바 import 동일) "java.sql.*, java.io.*"
                    - errorPage(익셉션 발생시 갈 페이지 지정)
                   "/error/error.jsp"
                    - isErrorPage (현재 jsp를 에러페이지 지정)
                       false(기본값)| true(exception 사용가능)
              [2] include (한 페이지에 다른 페이지를 포함)
              [3] taglib (커스텀 태그를 사용시)
   (2) 스크립팅 원소
       <1> 기능 : JSP 페이지에서 자바코드를 직접 사용할 수 있게 해주는 기능 제공
       <2> 종류 및 형태
              [1] 선언(declaration) <%! 자바코드 %> : 메소드,멤버변수 선언
              [2] 스크립트릿(scriptlet) <% 자바코드 %> : 자바코드 실행
              [3] 식(expression) <%= 자바코드 %> : 화면에 문자를 표시
   (3) JSP 액션 (JSP 태그)
       <1> 정의 : JSP에서 표준으로 정의된 태그
       <2> 형태 : <jsp:태그명>
       <3> 종류 : useBean, setProperty, getProperty, include, forward ...
              [1] useBean : Bean 객체를 생성해서 특정 영역에서 사용
                    - id : 변수명이자 scope(영역)에서 저장될때 이름
                    - class : 실제 만들어질 클래스의 명 ex) dept.DeptService
                    - scope : 객체가 영향을 끼치는 범위 page < request < session < application
                    참고) useBean 태그 바디부(<jsp:useBean>바디</jsp:useBean>에 있는 내용은 Bean 객체가
                            처음으로 만들어질때만 실행된다
              [2] setProperty : Bean 객체에 특정 프로퍼티에 값을 세팅
                   - name(*) : 변수명(useBean의 id)
                   - property(*) : Bean 객체 안의 프로퍼티명(멤버변수명)
                   - param : html의 input 태그 이름같은것들(파라미터명)
                   - value : 직접 값을 세팅
              [3] getProperty : Bean 객체에서 프로퍼티의 값을 가져온다.
                   - name(*)
                   - property(*)
                     c.f.) <%=bean.getProperty()%> 와 같다
              [4] forward : 특정 페이지로 요청을 전달(다른 페이지로 이동)
                   - page : 웹어플리케이션내의 특정 자원의 주소
              [5] include : 특정 페이지를 현재 페이지에 포함
                   (참고) 변수의 범위 설정 (scope 설정)
                   - page : 하나의 jsp 페이지내에서만 유효
                   - request : 하나의 요청에 대한 응답 jsp 페이지(들)에 유효
                   - session : 사용자에 대해 유효(웹브라우져 단위)
                   - application : 하나의 웹 어플리케이션 전체 유효

3. Java Beans
   (1) Beans 의 정의
        - 넓은 의미 : 자바 컴포넌트(기능덩어리)
        - 좁은 의미 : 자바 컴포넌트 중에서 Beans 규약에 맞는 컴포넌트
   (2) Beans 규약
       <1> 기본 생성자 (default constructor) 존재해야한다.
       <2> 속성(property)을 지정(private)
              - 속성이름은 html의 <input> 태그의 이름과 같아야 한다.
       <3> 속성을 세팅하거나 접근할 수 있는 get/set메소드(public)
              - 첫번째 문자는 대문자로 ex) getName, setName
   (3) 종류
       <1> 비주얼 컴포넌트 빈즈(JSP와 상관없음)              ex) TextField, Button
       <2> 데이터 빈즈 (Data Beans) : 데이터를 담아두는 객체를 만드는 컴포넌트
       <3> 서비스 빈즈 (연산이나 서비스 기능 Beans, Worker 빈즈)

4. JSP 디폴트 객체 (9개)
   (1) 정의 : 객체를 따로 생성하지 않고 스크립트릿(<%%>) 사이에서 사용 가능한 객체들을 의미
   (2) 종류
       <1> application -- ServletContext
              -> Web Application 전체의 정보를 가지는 객체
       <2> config    -- ServletConfig
              -> 서블릿/JSP의 구성정보를 가지는 객체
       <3> session   -- HttpSession
              -> 현재 사용자의 세션정보를 가지는 객체
       <4> request   -- HttpServletRequest
              -> 클라이언트의 요청정보를 가지는 객체
       <5> response  -- HttpServletResponse
              -> 클라이언트에게 줄 응답정보를 가지는 객체
       <6> page      -- Object(this)
              -> JSP 현재 페이지 자신을 의미하는 객체
       <7> pageContext -- PageContext(Custom Tag에서 봅니다)
              -> 다른 디폴트 객체들을 자바단에서 접근할 수 있는 방법을 가지는 객체
       <8> out        -- JspWriter
              -> 클라이언트의 브라우져에 연결된 출력 객체
       <9> exception  -- JspException
              -> 에러처리 관련 객체

5. JSP의 라이프 사이클
   jspInit() --> _jspService() --> jspDestroy()

6. EL (Expression Language)
   (1) 스크립팅을 전혀 쓰지 않을 수 있는 최신 기술
   (2) 내장객체 ${map.name}
       <1> pageScope
       <2> requestScope
       <3> sessionScope
       <4> applicationScope
       <5> param   HTTP의 파라미터들 Map
       <6> paramValues  하나의(name이 같은) 파라미터의 값들 Map
       <7> header   헤더정보들 Map 
       <8> headerValues 하나의 헤더의 정보들 Map
       <9> cookie   쿠키들 Map
       <10> initParam  컨텍스트의 초기화 파라미터들 Map
       <11> pageContext jsp 내장객체 (Map 아니다)
   (3) 도트(.) 연산자 사용의 특징
       <1> .의 왼쪽은 Map 이나 Beans 타입이어야 한다.
       <2> .의 오른쪽 항상 Map 의 키값이나 Beans 의 프로퍼티명이다.
   (4) [] 연산자 사용의 특징 (${list["value"]})
       <1> []의 왼쪽은 Map, Beans, 배열, List 타입이 올 수 있다.
       <2> []안의 값은 문자열일 경우 키값, 프로퍼티명, 인덱스가 온다.
       <3> []안의 값이 숫자인 경우는 그냥 인덱스로 인식되는데, 문자여도 숫자형식이면 괜찮다.
       <4> []안은 계속해서 중첩이 가능하다. ${list[list2[0]]}
  (5) EL은 연산자들을 사용할 수 있다.
       <1> 산술연산자 : + - * /(div) %(mod)
       <2> 논리연산자 : &&(and) ||(or) !(not)
       <3> 관계연산자 : ==(eq) !=(ne) <(lt) >(gt) <=(le) >=(ge)
  (6) 예약어들 : true, false, null, instanceof(향후 사용 예정), empty(null 혹은 "" 비었는지 체크)

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

7. JSTL (JSP Standard Tag Library)
  (1) 설치 : apache -> jakarta -> taglib 에서 다운로드 standard
      <1> jstl.jar, standard.jar 파일을 톰캣의 lib 폴더나 쓰고싶은 어플리케이션의 WEB-INF/lib 폴더에 넣어준다.
      <2> (1.0) *.tld 파일들을 WEB-INF/tld 폴더에 넣는다.
      <3> (1.0) web.xml에 설정을 잡는다.

 <jsp-config>
     <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
     </taglib>
     <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
     </taglib>
 </jsp-config>

  x, sql 도 있다. 
  (2) 코어 라이브러리
      <1> 수식 : catch, out, remove, set
      <2> 제어흐름 : choose, when, otherwise, forEach, forTokens, if
      <3> URL 관리 : import, param, redirect, url

8. 보안
  (1) 보안의 4요소
      <1> 인증(Authentication) : ID와 패스워드를 확인하여 인증된 사용자인지 검증하는 작업
      <2> 인가(Authorization) : 접근 가능한 자원인지를 판단하고 확인하는 작업
      <3> 비밀보장(Confidentiality) : 인증된 사용자만이 특정한 자원에 접근할 수 있다는 개념
      <4> 데이터무결성(Data Integrity) : 전송되는 데이터가 안전하다는 개념(암호화된 데이터 전송)
  (2) 실제 Tomcat 에서 적용방식 (web.xml, server.xml)
      <1> Authentication (인증 : 사용자 검증)
             a. BASIC : 기본적인 인증방식, 데이터를 BASE64 인코딩화
             b. DIGEST : 전송 데이터의 암호화
             c. FORM : jsp 의 form 을 통해서 인증하도록 설정

<form method="post" action="j_security_check">
     <input type="text" name="j_username" />
     <input type="password" name="j_password" />
< /form>

             d. CLIENT-CERT : 클라이언트 컴퓨터의 인증서로 인증하는 방식   ex) web.xml

<login-config>
     <auth-method>BASIC</auth-method>
< /login-config>

      <2> Authorization (인가 : 인증된 사용자만 자원에 접근 가능)
             <auth-constraint> 를 이용해서 role 정보를 추가해주면 해당 role의 유저만 resource 에 접근할 수 있게 된다.
             web.xml security-constraint 태그 참조
      <3> 데이터 무결성과 비밀보장

  <user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>

  web.xml 에 설정을 잡고, 서버별 SSL(Secure Socket Layer)
  관련 설정을 잡아줘야 하고, 인증키를 가지고 있어야 한다.
  인증키에는 JKS(Java KeyStore), PKCS11 or PKCS12(인터넷 표준 혹은 Microsoft key-manager) 가 쓰인다.

 

[출처] http://cms85.tistory.com/entry/JSP-%EC%A0%95%EB%A6%AC

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
26 [bootstrap] spring 프로젝트에 bootstrap 적용 file 졸리운_곰 2017.01.29 164
25 eGov 표준프레임워크(전자정부프레임워크) 공통 컴포넌트 사용법 : Common Component file 졸리운_곰 2017.01.29 1030
24 Passing Javascript object and object list to Spring controller 졸리운_곰 2017.01.23 92
23 뷰에 모델(Model) 전달 file 졸리운_곰 2017.01.22 128
22 CentOS에서 Apache Tomcat 설치하기 졸리운_곰 2017.01.18 490
21 Spring MVC Tiles Plugin with Example file 졸리운_곰 2017.01.15 1384
20 Spring MVC Tiles 3 Integration Tutorial file 졸리운_곰 2017.01.15 173
19 Spring 3 MVC: Tiles Plugin Tutorial with Example in Eclipse file 졸리운_곰 2017.01.15 194
18 MyBatis 에서 한 insert 태그로 여러 Insert문 수행 졸리운_곰 2016.12.09 112
17 Web App Architecture - the Spring MVC - AngularJs stack file 졸리운_곰 2016.11.20 208
16 Introduction to Angular 2 with Spring MVC file 졸리운_곰 2016.11.20 676
15 Migrating a Spring Web MVC application from JSP to AngularJS file 졸리운_곰 2016.11.20 114
14 스프링(Spring) MVC 프레임워크(Model View Controller Framework) file 졸리운_곰 2016.11.16 151
» JSP 정리 졸리운_곰 2016.09.11 332
12 JSP 요약 정리 file 졸리운_곰 2016.09.11 1294
11 전자정부 eGov 프레임워크 모바일 실행환경 Upgrade 가이드 file 졸리운_곰 2016.08.02 327
10 전자정부 eGov 프레임워크 개발프레임워크 개발환경 졸리운_곰 2016.08.02 474
9 표준프레임워크 실행환경 3.5 졸리운_곰 2016.08.02 172
8 전자정부 표준프레임워크 3.5 기반 개발 시작하기(Getting Started) file 졸리운_곰 2016.08.02 291
7 스프링(Spring) MVC 프레임워크(Model View Controller Framework) file 졸리운_곰 2016.07.31 103
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED