- Filter 란?

필터란, 서블릿 2.3버전에 추가된 것으로, 클라이언트의 요청을 서블릿이 받기 전에 

가로채어 필터에 작성된 내용을 수행하는 것을 말한다.

따라서, 필터를 사용하면 클라이언트의 요청을 가로채서 서버 컴포넌트의 추가기능 수행


- Filter 기능

      1. 인증(사용자 인증)

2. 로깅 및 감사필터

3. 이미지 변환

4. 데이터압축

5. 암호화 필터

6. 토크나이징(Toknizing) 필터

7. XML 컨텐츠를 변경하는 XSLT 필터

8. Mime-Type 체인필터

9. URL 및 기타정보들을 캐시하는 필터


- 필터 적용 순서

1. 필터인터페이스 구현하는 자바 클래스 생성

2. /WEB-INF/web.xml 에 FIlter 엘리먼트를 사용해서 필터 클래스 등록


- 필터의 라이프 사이클

필터는, 서블릿과 비슷한 라이프 사이클을 가지며 생성, 초기화, 필터, 종료 4단계로 이루어진다.

또한, 서블릿 컨테이너 필터 객체가 초기화 파라미터에 접근하는데 사용하는 환결설정 객체

(FilterCOnfig) 의 레퍼런스를 제공한다.


서블릿 컨테이너가 필터의 init() 메서드를 호출하면 필터 인스턴스는 바로 요청을 처리할수 있는

상태가 된다.

service() 메서드를 이용해서 요청을 처리한 것처럼 필터는 doFilter() 메서드를 통해서 요청을

처리한다.

모든 요청에 대한 처리가 끝나면 destory() 메서드가 호출되면서 필터는 피활성 상태로 변경된다.


- 필터 클래스

필터 클래스는 javax.servlet.Filter 인터페이스를 구현해야 한다.

Filter 인터페이스는 init(), doFilter(), destory() 메서드를 정의 되어 있다


- init(FIlterConfig config) : void throws ServletException

서블릿 컨테이너가 필터 인스턴스를 초기화 하기 위해서 호출하는 메서드

- doFilter(ServletRequest req, ServletResponse res, FilterChain chain)

: viod throws IOException, ServletException

필터의 조직을 작성하는 메서드

- destory() : void

필터 인스턴스를 종료시키기 전에 호출하는 메서드

- Spring 외부 설정프로퍼티

가장 많이 사용하는 db.properties 를 예로 설명

1. 우선 확장자 .properties 접속정보 파일 생성

jdbc.driverClassName = oracle.jdbc.OracleDriver
jdbc.url = jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username = scott
jdbc.password = scott

 

2. applicationContext.xml 내에 외부 설정 프로퍼티 사용위한 PropertyPlaceholderConfigurer 클래스 빈 등록

    <!-- Property Configurer -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>WEB-INF/database.properties</value>
        </property>
    </bean>

 

3. dataSource bean 에 properties 값 등록

    <!-- Data Source -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <!-- JDBC 드라이버 클래스명 설정 -->
        <property name="driverClassName">
            <value>${jdbc.driverClassName}</value>
        </property>
        <!-- JDBC 접속 문자열 설정 -->
        <property name="url">
            <value>${jdbc.url}</value>
        </property>
        <!-- MySQL 유저ID 설정 -->
        <property name="username">
            <value>${jdbc.username}</value>
        </property>
        <!-- MySQL 패스워드 설정 -->
        <property name="password">
            <value>${jdbc.password}</value>
        </property>
    </bean>


4. 한개 이상의 프로퍼티 파일을 지정하려면 <list> 태그를 이용하여 프로퍼티 목록을 지정해 주면된다.

    <!-- Property Configurer -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
          <list>
             <value>WEB-INF/database.properties</value>
             <value>WEB-INF/monitor.properties</value>
          </list>
        </property>
    </bean>

 

※ bean "dataSource" 생성 중 class org.apache.commons.dbcp.BasicDataSource 이용에 필요한 jar 파일

commons-dbcp-1.4.jar

commons-pool-1.6.jar

 

 

- web.xml 의 ContentLoaderListener

스프링에 대해 아무것 도 모르는 사람이 봐도 이해가 되도록 하자. 난 천재가 아니니깐

스프링 설정 방법 중 web.xml 에 Spring DispatcherServlet 를 서블릿 클래스로 등록 하고

예)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>spring_Item</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>springItem</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springItem</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

 

<servlet-name> 에 입력한 값-servlet,xml(springItem-servlet.xml) 에 웹 계층, 비지니스 로직 계층 모두 선언을 해서 사용을 하지만 이렇게 하면 파일 한개로 관리가 가능은 하지만, 보기에도 수정하기에도 마니 힘들다.

그래서 웹계층 / 비지니스로직 계층 설정 파일을 분리해서 관리를 한다.

그렇게 하려면 web.xml 에 <listener></listener> 을 등록 해주어야 한다.

      <listener>
        <listener-class>

org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

※ 위의 설정 기본 설정파일 /WEB-INF/applicationContext.xml 이다.

 

혹시나 이거 외에 더 등록을 해야 한다거나, 명칭을 바꾸려면

<context-param>

                 <param-name> contextConfigLocation </param-name>

                 <param-value>

                            /WEB-INF/applicationContext.xml ,

                       /WEB-INF/applicationContext-acegi-security.xml ,

                       /WEB-INF/applicationContext-common-authorization.xml,

                       /WEB-INF/applicationContext-acegi-security-memory.xml

                 </param-value>

       </context-param>

이라고 web.xml 에 등록을 해주어야 한다.

-주키 테이블 생성시 선언-
create table 테이블명
(
empno varchar2(4),
jumin varchar2(10),
constraint pk_테이블명 primary key(empno)
);

 

 

-테이블생성후 주키선언-
alter table 테이블명
add constraint pk_테이블명 primary key(empno);

 

 

-외래키 테이블생성시 선언-
create table 테이블명
(
empno varchar2(4),
jumin varchar2(10),
constraint fk_테이블명 foreign key(empno)
reference 참조테이블명(empno)
[on delete cascade] //부모를삭제하면 자식까지 삭제
);

 

 

-테이블생성후 외래키선언-
alter table 테이블명
add constraint fk_테이블명 foreign key(empno)
reference 참조테이블명(empno);

'공부 > ORACLE_SQL' 카테고리의 다른 글

ORACLE_[ 집계함수(Aggregate function) ]  (0) 2013.05.20
ORACLE_[ OUTER JOIN ]  (0) 2013.05.20
ORACLE_[ JOIN ]  (2) 2013.05.20
ORACLE_[CASE문 사용법]  (0) 2012.10.05
ORACLE_[DECODE문_사용법]  (0) 2012.10.05

- 날짜 약자 

학창시절 공부를 안하니... 별게 다 신경 쓰게 하는구나... 휴

January-> Jan 1월
february-> Feb 2월
March-> Mar 3월
April->Apr 4월
May->May 5월
June->Jun 6월
july->jul 7월
August->Aug 8월
September-> Sep 9월
October->Oct 10월
November->Nov 11월
December-> Dec 12월

'공부 > ETC' 카테고리의 다른 글

ETC_[ Win7 Telnet 설정 ]  (0) 2014.11.04
ETC_[Apache Error Code]  (0) 2013.08.24
학교숙제자료  (0) 2013.04.16
ETC_[제발 a href="#" 좀 쓰지 말자]  (0) 2013.03.13
NHN_NEXT 학교(?)를 설립하다  (0) 2012.06.30

- JQuery 특정 태그 선택 : find()

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script>
   
        //변수 선언
        var xml = "";
        xml += "<friends>";
        xml += "    <friend>";
        xml += "        <name>연하진</name>";
        xml += "        <language>Ruby</language>";
        xml += "    </friend>";
        xml += "    <friend>";
        xml += "        <name>윤명월</name>";
        xml += "        <language>Basic</language>";
        xml += "    </friend>";
        xml += "    <friend>";
        xml += "        <name>윤하린</name>";
        xml += "        <language>C#</language>";
        xml += "    </friend>";
        xml += "</friends>";

        $.noConflict();
        var J = jQuery;
        J(function () {
            var xmlDoc = J.parseXML(xml);
            J(xmlDoc).find("friend").each(function () {
                var outPut = "";
                outPut += "<div>";
                outPut += "     <h1>" + J(this).find("name").text() + "</h1>";
                outPut += "     <p>" + J(this).find("language").text() + "</p>";
                outPut += "</div>";

                document.body.innerHTML += outPut;
            });
        });
    </script>
    <title>Untitled Page</title>
</head>
<body>
</body>
</html>

 

- JQuery_[JQuery filter() 메서드 사용]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script>
        $.noConflict();
        var J = jQuery;
        J(function () {
            // h3 행(0 부터 시작)이 홀수이면 배경 : 검정, 폰트 : 하얀색
            J("h3").filter(function (index) {
                return index % 3 == 0;
            }).css({
                backgroundColor: "Black",
                color: "White"
            });

            // filter & end 사용 법( filter : 문서 객체 선택 후 체이닝 처리, end : 문서 객체 선택을 한 단계 뒤로 이동 )
            J("h3").css("background", "Orange").filter(":odd").css("color", "Red").end().filter(":even").css("color", "Blue");
        });
    </script>
    <title>Untitled Page</title>
</head>
<body>
    <h3>Header - 0</h1>
    <h3>Header - 1</h1>
    <h3>Header - 2</h1>
    <h3>Header - 3</h1>
    <h3>Header - 4</h1>
    <h3>Header - 5</h1>
</body>
</html>

- JQuery_[JQuery 를 이용한 객체 확장]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script>
        $.noConflict();
        var J = jQuery;
        J(function () {
            var object = {};
            object.name = "RintIanTta";
            object.gender = "Male";
            object.part = "Second Guitar";

            J.extend(object, {
                age: "28"
            });

            var outPut = "";
            J.each(object, function (key, item) {
                outPut += key + ": " + item + "\n";
            });
            alert(outPut);
        });
    </script>
    <title>Untitled Page</title>
</head>
<body>

</body>
</html>

- JQuery 를 이용한 배열 관리(1) : 자바 스크립트 배열을 이용한 배열관리

사용 예) array : 받은 배열, index : 배열인덱스 자동, item :  array 배열의 해당 인덱스에 속한 객체의Key 값

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script>
        $.noConflict();
        var J = jQuery;
        J(function () {
            var array = [
                { name: "hanbit", link: "http://hanb.co.kr" },
                { name: "Naver", link: "http://naver.com" },
                { name: "Yahoo", link: "http://yahoo.co.kr" },
                { name: "PAran", link: "http://paran.com" }
            ];

            J.each(array, function (index, item) {

                var output = "";
                output += "<a href='" + item.link + "'>";
                output += "<h1>" + item.name + "</h1>";
                output += "</a>";
                document.body.innerHTML += output;
            });
        });
    </script>
    <title>Untitled Page</title>
</head>
<body>
</body>
</html>

 

- JQuery 를 이용한 배열 관리(1) : 선택자를 이용한 배열관리

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <style>
        .high_light_0 { background : Yellow; }
        .high_light_1 { background : Pink; }
        .high_light_2 { background : Blue; }
        .high_light_3 { background : Red; }
        .high_light_4 { background : Orange; }
        .high_light_5 { background : Green; }
    </style>
    <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
    <script>
        $.noConflict();
        var J = jQuery;
        J(function () {
            J("h1").each(function (index, item) {
                J("item").addClass("high_light_" + index);
            });
        });
    </script>
    <title>Untitled Page</title>
</head>
<body>
    <h1>item - 0</h1>
    <h1>item - 1</h1>
    <h1>item - 2</h1>
    <h1>item - 3</h1>
    <h1>item - 4</h1>
    <h1>item - 5</h1>
</body>
</html>


 

'공부 > JQuery' 카테고리의 다른 글

JQuery_[JQuery filter() 메서드 사용]  (0) 2013.01.07
JQuery_[JQuery 를 이용한 객체 확장]  (0) 2013.01.07
JQuery_[필터 선택자]  (0) 2013.01.07
JQuery_[속성 선택자]  (0) 2013.01.07
JQuery_[JQuery 자식, 후손 선택자]  (0) 2013.01.07

- JQuery 필터 선택자

앞의 속성 선택자(요소[속성=값]) 보다 조금 더 간단한 방법으로 쓰고 싶다면 필터 선택자 사용

양식 필터 선택자(1)

 선택자 형태 

 설명 

 요소:button

 input 태그 중 type 속성이 button인 문서 객체와  button 태그를 선택

 요소:checkbox

 input 태그 중 type 속성이 checkbox인 문서 객체를 선택
 요소:file  input 태그 중 type 속성이 file인 문서 객체를 선택
 요소:image

 input 태그 중 type 속성이 image인 문서 객체를 선택

 요소: password

 input 태그 중 type 속성이 password인 문서 객체를 선택
 요소:radio

 input 태그 중 type 속성이 radio인 문서 객체를 선택

 요소:reset  input 태그 중 type 속성이 reset인 문서 객체를 선택
 요소:submit  input 태그 중 type 속성이 submit인 문서 객체를 선택
 요소:text  input 태그 중 type 속성이 text인 문서 객체를 선택

 

양식필터 선택자(2)

 선택자 형태  설명 
 요소:checked

 체크된 입력 양식을 선택 

 요소:disabled  비활성화된 입력 양식을 선택
 요소:enabled  활성화된 입력 양식을 선택
 요소:focus

 초점이 맞춰져 있는 입력 양식을 선택

 요소:input

 모든 입력 양식을 선택(input, textarea, select, button 태그)

 요소:selected

 option 객체 중 선택된 태그를 선택

 

+ Recent posts