1.
스트럿츠 태그 라이브러리

 - 스트럿츠는 JSP에서 스트럿츠와 상호 작용을 편리하게 하고, JSP에서 자바 코드 없
    이 프레젠테이션 로직
을 구현할 수 있도록 설계된 커스텀 태그 라이브러리들을 제공

 - 스트럿츠 태그 라이브러리 종류

1. html : HTML 태그와 HTML 폼 객체에 관련된 태그

2. bean : 자바빈즈와 자바빈즈의 속성, 쿠키, 입력 파라미터, 리소스 번들 등에 접근
                  하기 위한 태그

3. logic : 루프나 분기 등 프레젠테이션 로직의 구현에 필요한 태그

4. nested : 스트럿츠 태그의 중첩 사용을 위한 태그

 

1.1 스트럿츠 태그 라이브러리 설치

 - web.xml 디스크립터의 위치를 지정

<taglib>

         <taglib-uri>/WEB-INF/tlds/struts-html.tld</taglib-uri>

         <taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>

       </taglib>

       <taglib>

         <taglib-uri>/WEB-INF/tlds/struts-bean.tld</taglib-uri>

         <taglib-location>/WEB-INF/tlds/struts-bean.tld</taglib-location>

       </taglib>

       <taglib>

         <taglib-uri>/WEB-INF/tlds/struts-logic.tld </taglib-uri>

         <taglib-location>/WEB-INF/tlds/struts-logic.tld</taglib-location>

       </taglib>

       <taglib>

         <taglib-uri>/WEB-INF/tlds/struts-nested.tld </taglib-uri>

         <taglib-location>/WEB-INF/tlds/struts-nested.tld</taglib-location>

       </taglib>

 - jsp 페이지에서 내용 추가

             <%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>

 


1.2 Struts-html

 1. 일반적인 HTML 요소를 위한 태그

태그

설 명

html

HTML <html>…</html>요소를 표시한다.

base

HTML내에서 상대 경로의 기준이 되는 경로를 지정한다.

errors

Action 수행 중 발생한 메시지나 에러를 표시한다.

messages

Action 수행 중 발생한 메시지나 에러를 표시한다.

frame

HTML <frame>요소를 표시한다.

img

HTML <img>요소를 표시한다.

link

앵커 또는 하이퍼링크를 표현한다.

rewrite

link태그와 동일하지만 HTML <a>요소를 만들지 않고 URL문자열만 만들어낸다.

자바스크립트 내에서 URL을 지정하는데 사용하면 유용하다.

xhtml

JSP 페이지가 XHTML 형식임을 지정한다.

 

 - html 태그

   * lang : “true”로 지정했을 경우, 세션에 저장된 사용자의 로케일 정보를 참조하여
                HTML
lang 속성을
지정한다. 스트럿츠 1.2부터 지원

   * xhtml : HTML 4.01 대신 XHTML 1.0을 사용하고자 한다면 true로 설정

 - errors 태그

   JSP에서 ActionForm validate() 메서드에서 리턴한 ActionErrors를 표시해 주기
   위해서 사용.
<html:errors/> 라고 표기

   * bundle : 메시지를 출력할 때 사용할 리소스 번들 이름을 지정. 별도로 지정하지
                   않으면 모듈의 디폴트
리소스 번들을 사용.

   * footer : footer의 리소스 키로 “errors.footer” 대신 다른 것을 지정하고 싶을 때
                 사용.

   * header : header의 리소스 키로 “errors.header” 대신 다른 것을 지정하고
                   싶을 때 사용.

   * locale : 세션 스코프에 저장되어 있는 사용자 로케일의 이름

   * name : 메시지를 조회할 때 사용할 이름

   * prefix : prefix의 리소스 키로 “errors.prefix” 대신 다른 것을 지정하고 싶을 때
                사용.

   * property : 에러 메시지를 하나하나 꺼내어 사용할 때 조회하고자 하는 에러 메시
                     지의 이름. 에러 메시
를 저장할 때 각 ActionMessage property
                     지정해 주는데 이 이름으로 지정

   * suffix : suffix의 리소스 키로 “errors.suffix” 대신 다른 것을 지정하고 싶을 때 사용

 - messages 태그

   messages 태그는 ActionForm validate() 메서드에서 리턴한 ActionErrors 뿐 아
   니라 Action에서 발생
ActionMessages JSP에 표시할 때도 사용. message
   태그는 errors 태그와 같이 모든 메시지를 단
순히 출력하는 형태보다는 각각 메시지
   를 하나하나 꺼내 페이지 스코프에 저장해 두었다가 bean 태그
라이브러리의 write
   태그 등을 이용하여 하나하나 출력하는 형태의 사용에 적합.

   * 모든 메시지를 출력할 경우

             <logic:messagesPresent>

                           <bean:message key=”errors.header”/>

                           <ul>

                           <html:messages id=”error”>

                                        <li><bean:write name=”error”/></li>

                           </html:messages>

</ul><hr>

             </logic:messagesPresent>

   * 한 개의 메시지를 출력할 경우

             <html:password name=”passwordForm” property=”oldPassword” maxlength=”30” size=”30”/>

             <html:messages id=”error” property=”error.oldPassword”>

                           <bean:write name=”error”/>

             </html:messages>

 

   * id : 검색된 ActionMessages를 페이지 스코프에 저장할 때 사용할 이름.

   * bundle : 메시지를 출력할 때 사용할 리소스 번들 이름을 지정. 별도로 지정하지
                   않으면 모듈의 디폴트
리소스 번들을 사용

   * locale : 세션 스코프에 저장되어 있는 사용자 로케일의 이름.

   * name : 메시지를 저장할 때 사용한 이름.

   * property : 메시지를 하나하나 꺼내어 사용할 때 조회하고자 하는 에러 메시지의
                     이름.

   * header : 메시지를 조회하는 루프 전에 출력할 메시지의 리소스 번들 상의 키 값.

   * footer : 메시지를 조회하는 루프의 끝에 출력할 메시지의 리소스 번들 상의 키 값.

   * message : 에러인지 메시지인지를 지정.

 - link 태그

   앵커나 하이퍼링크를 지정하기 위해서 사용.

   <html:link page=”/code/list_code.do?cmd=listCode”>리스트</html:link>

   * forward : 모듈에 정의된 global ActionForward를 지정.

   * action : 모듈에 정의된 Action을 지정.

   * href : HTML <a> 태그의 href 속성을 지정하는 것과 동일한 방법으로 지정.

   * page : 모듈의 경로를 기준으로 URL을 지정.

 - img 태그

   HTML <img>요소를 표현

   <html:img page=”/img/blank.gif”/>

   * page : 모듈의 경로를 기준으로 이미지의 URL을 지정.

   * pageKey : page 속성과 동일하나, 이미지의 URL을 지정할 때 리소스 번들로부
                      터 pageKey의 값으로
지정된 URL을 조회. 로케일별로 다른 이미지를
                      사용하고자 할 때 사용.

   * action : 모듈의 ActionMapping에 정의된 Action을 지정.

   * src : HTML <img> 태그의 src 속성을 지정하는 것과 동일한 방법으로 이미지의
             URL
을 지정.

   * srcKey : src 속성과 동일하나, 이미지의 URL를 직업 정의하는 것이 아니라
                   리소스 번들로부터 srcKey
의 값으로 지정된 URL을 조회. 로케일별로
                   다른 이미지를 사용하고자 할 때 사용.

 - frame 태그

   HTML <frame>요소를 통해 화면 영역을 분리

   * frameName : HTML frame 태그의 name 속성.

   * scrolling : 스크롤바 지정.

   * noresize : 프레임의 크기 변경 가능 여부 true, false 중 한 가지를 지정.

   * marginheight : 프레임 마진 높이.

   * marginwidth : 프레임 마진 넓이.

   * frameborder : 프레임 테두리.

 

 2. HTML 입력 폼과 관련된 태그

태그

설 명

button

버튼을 표시

cancel

취소 버튼을 표시

checkbox

checkbox 입력 필드를 표시

file

파일 업로드를 위한 file 선택 입력 필드를 표시

form

HTML <form>요소를 정의

hidden

hidden 입력 필드를 정의

image

image 입력 필드를 정의

multibox

checkbox 입력 필드를 정의

option

select 입력 필드의 <option> 요소를 정의

options

select 입력 필드의 <option> 요소를 정의

optionsCollection

select 입력 필드의 <option> 요소를 정의

password

password 입력 필드를 정의

radio

radio 입력 필드를 정의

reset

리셋 버튼을 표시

submit

전송 버튼을 표시

text

text 입력 필드를 정의

textarea

textarea 입력 필드를 정의

  

 - form 태그

   HTML <form>요소를 표현하고 요청 스코프나 세션 스코프에 저장된 ActionForm
   과 form 입력 필드를
연결하는 역할

   * action : HTML <form> 요소의 action 속성으로 표현되며, form을 전송할 URL
                  을 지정

   * acceptCharset : HTML <form> 요소의 accept-charset 속성으로 표현되며, 서버
                                가 인식해야 하는 문자 
인코딩의 리스트를 지정

   * enctype : HTML <form> 요소의 enctype 속성으로 표현되며, form을 전송할 때
                    요청 파라미터들을
어떤 형식으로 인코딩 할지를 지정.

   * focus : 입력 폼이 초기화될 때 포커스를 받을 입력 필드 명.

   * focusIndex : focus로 지정한 입력 필드가 radio 버튼과 같은 배열의 형태일 때,
                         그 중 포커스를 받을
인덱스 번호를 지정.

   * method : 입력 폼의 전송 방법을 지정. GET 또는 POST로 지정.

   * onreset : 입력 폼이 reset될 때 호출될 자바스크립트 이벤트 핸들러를 지정.

   * onsubmit : 입력 폼이 action으로 지정된 페이지로 전송될 때 호출될 자바스크립
                      트 이벤트 핸들러를
지정.

   * scriptLanguage : focus 속성에 지정된 입력 필드에 포커스를 지정하는 자바스크
                                립트를 생성할지 여부
를 지정.

   * style : CSS 스타일을 지정.

   * styleClass : CSS 스타일 클래스를 지정.

   * styleId : HTML <form> 요소의 id 속성을 지정.

   * target : HTML <form> 요소의 target 속성을 지정.

 - button 태그

   type속성이 “button”으로 지정된 <input> 요소를 표현

   <html:button styleClass=button”>클릭</html:button>

 - text 태그

   HTML 입력 폼에 관련된 태그 중 가장 흔히 사용되는 태그로 type 속성이 “text”로 지
   정된 <input> 요소
를 표현

   <html:text name=”employeeForm” property=”employeeName”/>

   * accesskey : 입력 필드로 즉시 입력 포커스를 이동할 때 사용할 키보드 문자

   * alt : HTML <input> 요소의 alt 속성을 지정.

   * altKey : alt 속성에 지정할 값을 리소스 번들로부터 조회할 때 사용할 리소스 키.

   * bundle : altKey titleKey 속성이 지정됐을 때 해당 문자열을 조회할 리소스 번들
                   의 이름.

   * disabled : 입력 필드의 비활성화 여부.

   * errorKey : 요청 스코프에 저장되어 있는 ActionErrors 또는 ActionMessages
                      이름.

   * errorStyle : 입력 필드에 에러가 있을 경우 사용할 CSS 스타일.

   * errorStyleClass : 입력 필드에 에러가 있을 경우 사용할 CSS 스타일 클리스.

   * errorStyleId : 입력 필드에 에러가 있을 경우 사용할 Id.

   * indexed : 이후에 살펴보게 될 스트럿츠의 Logic 태그 라이브러리의 iterate 태그
                    안에서만 유효

   * maxlength : 입력 필드의 최대 입력 가능 길이.

   * name : 입력 필드의 초기 값을 조회할 때 사용할 객체의 이름. 일반적으로 입력 필
                 드에서 사용할
요청 스코프나 세션 스코프에 저장된 ActionForm의 이름.

   * property : 입력 필드의 이름.

   * readonly : 읽기 전용 여부.

   * size : 입력 필드의 길이.

   * style : 입력 필드의 CSS 스타일.

   * styleClass : 입력 필드의 CSS 스타일 클래스.

   * styldId : 입력 필드의 Id.

   * tabindex : 입력 포커스를 탭 키로 이동할 때 순서.

   * title : 입력 필드의 풍성 도움말.

   * titleKey : 입력 필드의 풍선 도움말을 지정할 때 사용하는 리소스 번들상의 키.

   * value : 필드의 초기 값.

 - textarea 태그

   HTML <textarea> 요소를 표현.

 - hidden 태그

   HTML <hidden> 요소를 표현.

 - checkbox

   type 속성이 “checkbox”로 지정된 <input> 요소를 표현.

   <html:checkbox property=”booleanProperty”/>

 - multibox 태그

   type 속성이 “checkbox”로 지정된 <input> 요소를 표현하지만, checkbox 태그와
   같이 선택 여부를
전달하는 것이 아니라 매핑된 ActionForm의 프로퍼티 값이 전달.

   <html:multibox property=”stringMultibox”>String 0</html:multibox>

   <html:multibox property=”stringMultibox”>String 1</html:multibox>

 - radio 태그

   type 속성이 “radio”로 지정된 <input> 태그를 표현

   <html:radio property=”dispYn” value-“전시”/>

   <html:radio property=”dispYn” value-“비전시”/>

 - file 태그

   파일 업로드를 위한 파일 선택 입력 필드를 표시. file 태그의 사용을 위해서는 file
   그를 포함하고 있는
form 태그의 enctype 속성을 “multipart/form-data”, method
   는 “post”로 지정해야함.


 - select 태그

   HTML <select> 요소를 표현하며, 단독으로 사용되기 보다는 option 태그나
   options
또는
optionCollection 태그와 함께 사용

   <html:select property=”singleSelect”>

             <html:option value=”Single 0”>Single 0</html:option>

             <html:option value=”Single 1”>Single 1</html:option>

             <html:option value=”Single 2”>Single 2</html:option>

   </html:select>

   * collection : 사용 가능한 스코프 내에서 <option> 요소의 value label을 담고 있
                       는 객체들을 조회
하기 위해 사용할 이름.

   * property : collection으로 조회된 객체들로부터 value를 조회하기 위해 조회할
                     프로퍼티의 이름을 지정.

   * labelProperty : collection으로 조회된 객체들로부터 label을 조회하기 위해
                             조회할 프로퍼티의 이름을
지정.

 

 3. 이벤트 핸들러

태그

설 명

onblur

포커스를 잃었을 때

onchange

값이 변경되었을 때

onclick

마우스로 클릭했을 때

ondbiclick

마우스로 더블 클릭했을 때

onfocus

포커스를 얻었을 때

onkeydown

사용자가 키보드를 눌렀을 때

onkeypress

사용자가 키보드를 눌렀다가 놓았을 때

onkeyup

사용자가 키보드를 놓았을 때

onmousedown

사용자가 마우스 버튼을 눌렀을 때

onmousemove

사용자가 마우스를 움직였을 때

onmouseout

사용자가 마우스를 입력 필드 밖으로 나갔을 때

onmouseover

사용자가 마우스를 입력 필드 안으로 들어왔을 때

onmouseup

사용자가 마우스 버튼을 놓았을 때

onreset

입력 폼이 초기화될 때

onsubmit

입력 폼이 전송될 때

 

1.3 Struts-bean

 Struts-bean 태그 라이브러리의 태그들은 새로운 자바빈즈 또는 변수를 생성하거나,
 자바빈즈의 프로퍼티
를 출력하는 등, 주로 자바빈즈에 편리하게 접근하기 위해 사용.

태그

설 명

cookie

지정한 쿠키 값에 근거해 변수를 정의

define

지정한 자바 빈의 프로퍼티 값에 근거해 변수를 정의

header

지정한 요청 해더 값에 근거해 변수를 정의

include

다른 외부 컴포넌트를 포함

message

리소스 번들로부터 메시지를 조회하여 출력

page

페이지 스코프에서 자바빈즈를 조회해 프로퍼티 값에 근거해 변수를 정의

parameter

지정한 요청 파라미터 값에 근거해 변수를 정의

resource

지정한 웹 애플리케이션의 자원을 사용

size

Collection 또는 Map이 가지고 있는 항목의 수에 근거해 변수를 정의

struts

스트럿츠의 내부 설정에 근거해 변수를 정의

write

지정한 프로퍼티 값을 출력

 

 - define 태그

   지정하는 빈 프로퍼티로부터 값을 조회하여 새로운 변수로 선언

   <bean:define id=”defineBoolean” name=”testBean” property=”booleanProperty”/>

   <bean:define id=”defineString” value=”abcd”/>

   * id : 선언할 변수명.

   * name : 변수의 값을 설정하는데 사용할 객체를 조회하기 위해 사용할 이름

   * property : name 속성으로 지정된 이름으로 조회된 객체로부터 값을 설정하기
                     위해 조회할 프로퍼티
이름.

   * scope : name 속성으로 지정된 이름의 객체를 검색할 스코프. “page”,
                  “request”, “session”,
“application”을 지정할 수 있으며, 별도로 지정하
                   지 않으면 모든 스코프를 검색.

   * toScope : 생성한 변수를 저장할 스코프. 별도로 지정하지 않으면 “page” 스코프
                     에 저장.

   * type : 생성할 변수의 타입.

   * value : 생성한 변수의 초기 값.

 - include 태그

   애플리케이션의 다른 컴포넌트나 외부 URL을 호출하고 그 응답을 문자열 형태로
   저장.

   <bean:include id=”welcome” page=”/welcome.jsp”/>

   ……

   <%=welcome %>

   ……

   <bean:write name=”welcome”/>

   * forward : global ActionForward로 정의되어 있는 내부 웹 리소스의 이름을 지정

   * href : 호출할 URL을 직접 지정. include 태그 내에서는 별도로 URL을 계산하는
               과정없이 직접 지정된
URL에 접속

   * page : 모듈 내의 action을 지정

 - message 태그

   사용자의 로케일에 따라 언어에 맞는 리소스 번들을 조회하여 지정된 메시지를 출력.

   <bean:message key=”status”/>

 - write 태그

   strtus-bean 태그 라이브러리의 태그 중 가장 많이 사용하는 태그로, 지정된 객체의
   프로퍼티 값을 조회
하여 출력.

   <bean:write name=”employeeForm” property=”name”/>

 

1.4 Struts-logic

 Struts-logic 태그 라이브러리는 값 비교, 부분 문자열 매칭, 재전송과 포워딩, 반복
 수행등 프레젠테이션
로직에서 흐름을 제어하는 태그들을 제공

 1. 값 비교를 위한 태그

태그

설 명

empty

지정된 변수가 null이거나 빈 문자열일 경우 true

equal

지정된 변수가 지정된 값과 동일할 경우 true

greaterEqual

지정된 변수가 지정된 값보다 크거나 같을 때 true

greaterThan

지정된 변수가 지정된 값보다 클 때 true

lessEqual

지정된 변수가 지정된 값보다 작거나 같을 때 true

lessThan

지정된 변수가 지정된 값보다 작을 때 true

notEmpty

지정된 변수가 null이 아니고 빈 문자열이 아닌 경우 true

notEqual

지정된 변수가 지정된 값과 동일하지 않은 경우 true

notPresent

지정된 값이 검색 가능한 스코프 안에 존재하지 않는 경우 true

present

지정된 값이 검색 가능한 스코프 안에 존재할 경우 true

 - 공통적으로 같은 속성들

   * name : value 속성으로 지정된 상수와 비교하거나, 변수의 존재 여부를 검사할 때
                 사용할 객체의 이름.

 - empty notEmplty 태그를 제외한 Struts-logic 태그 라이브러리들이 같은 속성

   * property : value 속성으로 지정된 상수와 비교하거나 변수의 존재 여부를 검사할
                     때 사용할 name 속성
으로 지정된 객체의 프로퍼티.

   * value : 태그의 다른  속성을 통해 지정된 변수와 비교할 상수 값.

   * cookie : value 속성으로 지정된 상수와 비교할 쿠키 값.

             <logic:equal value=”admin” cookie=”userId”>

                           <bean:message key=”user.admin”/>

             <logic:equal>

   * header : value 속성으로 지정된 상수와 비교할 헤더 값.

             <logic:equal value=”ko_KR” header=”Accept-Language”>

                           <bean:message key=”language.korean”/>

             </login:equal>

   * parameter : value 속성으로 지정된 상수와 비교할 파라미터 값.

             <logic:greaterThan value=”1000” parameter=”refCount”>

                           <bean:message key=”hot”/>

             </logic:equal>

   * scope : name 속성을 지정했을 때 객체를 검색할 스코프.

  - present notPresent 태그에 대해서 추가적인 속성

   * role : 사용자가 지정된 롤을 가지고 있는지 검사.

   * user : 사용자의 로그인 Id를 검사.

 

 2. 부분 문자열 매칭

   value 속성을 통해 지정한 문자열과 다른 속성을 통해 지정된 값을 부분 문자열 비교
   하는데 사용.

태그

설 명

match

지정된 값이 지정된 변수의 문자열의 일부와 일치하면 true

notMatch

지정된 값이 지정된 변수의 문자열의 일부와 일치하지 않으면 true

 

             <logic:match parameter=”action” value=”login” location=”start”>

                           Processing Login…

             </logic:match>

 

 3. 재전송과 포워딩

태그

설 명

forward

global ActionForward로 지정되는 웹 리소스로 포워드

redirect

다른 URL로 재전송을 수행

 

 4. 반복 수행

   반복 수행을 위한 태그는 iterate 태그 하나뿐이지만, 가장 유용하고 많이 사용.

             <logic:iterate name=”empolyeeListForm” property=”employeeList” id=”element”>

             <tr>

                           <td><bean:write name=”element” property=”name”/></td>

             </tr>

             </logic:iterate>

   * collection : 반복할 컬렉션을 지정하는 런타임 표현식.

   * id : 조회된 요소를 페이지 스코프에 저장할 때 사용할 이름.

   * indexed : 반복 수행 중 페이지 스코프에 현재 인텍스를 저장할 때 사용할 이름.

   * length : 최대 반복 횟수.

   * name : 반복할 컬렉션을 조회하기 위해 사용할 이름.

   * offset : 반복의 시작 지점.

   * property : name 속성을 통해 조회된 객체에서 컬렉션 객체를 조회할 때 사용할
                     프로퍼티 이름.

   * scope : name 속성을 통해 지정된 객체를 조회할 스코프

   * type : 컬렉션 객체에 저장되어 있는 객체의 타입 id 속성을 통해 지정된 객체의
              타입.

 

 5. 메시지

   요청 스코프에 ActionMessages ActionErrors가 존재하는지 여부에 따라 바디
   컨텐츠를 수행할지
여부를 결정.

태그

설 명

messagesNotPresent

지정된 메시지가 존재하지 않으면 true

messagesPresent

지정된 메시지가 존재하면 true

 

             <logic:messagesPresent>

                           <bean:message key=”errors.header”/>

                           <ul>

                           <html:messages id=”error”>

                                        <li><bean:write name=”error”/></li>

                           <html:messages>

                           </ul><hr>

             </logic:messagesPresent>

   * name : 메시지를 저장할 때 사용한 이름.

   * property : 메시지를 하나하나 꺼내어 사용할 때 조회하고자 하는 에러 메시지의
                     이름.

   * message : 에러인지 메시지인지를 지정
신고


1. Validator

 - Form Bean validate() 메소드로 데이터를 검증하려면, 각각의 Form Bean
   대해 코드를 작성하고,
오류 메시지를 저장하는 등의 코드를 작성해야 한다. 그러나
   validator
를 사용하면 검증이나 오류 메시지
저장을 위한 코드를 Form bean에서 작
   성할 필요가 없다. 대신에 Form Bean은 이 기능을 제공하는
Validator
   ActionForm
하위 클래스 중 하나를 확장하면 된다.

 

1.1 Validator 플러그인 등록

 - Validator를 플러그인 형태로 스트럿츠에 등록

 ex> struts-config.xml 파일에 추가

             <plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>

                 <set-property property=”pathnames”

                      value=”/WEB-INF/validator/validator-rules.xml,

                                 /WEB-INF/validator/validation.xml”/>

             </plug-in>

 - 검증 규칙을 외부의 설정 파일에 정의 : validator-rules.xml, validator.xml

 

1.2 Validator 프레임워크의 내장 검증규칙

 - validator-rules.xml 파일은 애플리케이션의 종류와 관계없이 Validator 프레임워크
    에서 기본으로 제공하는
규칙을 정의, 스트럿츠 배포판과 함께 배포됨.

 - 기본 검증기

validator

목 적

required

공백이 없는 특정 캐릭터를 포함해야 한다.

mask

값이 mask 속성에 의해 주어진 정규 표현식과 일치해야 한다.

range

값이 min, max 속성에 값 이내에 있어야 한다.

maxLength

최대길이가 max 속성값보다 작거나 같아야 한다.

minLength

최소길이가 min 속성값보다 크거나 같아야 한다.

byte,

short,

integer,

long,

float,

double

해당 primitive casting 가능해야 한다.

date

값이 유효한 날짜를 표현해야 한다.

creditCard

신용카드번호 형식 이어야 한다.

email

이메일 주소가 형식 이어야 한다.

 

 - 기본 메시지

errors.required={0}() 필수 값 입니다.

errors.minlength={0}() {1}자보다 작아야 합니다.

errors.maxlength={0}() {1}자보다 커야 합니다.

errors.invalid={0}() 올바르지 않습니다.

errors.byte={0}() byte 타입이어야 합니다.

errors.short={0}() short 타입이어야 합니다.

errors.integer={0}() integer 타입이어야 합니다.

errors.long={0}() long 타입이어야 합니다.

errors.float={0}() float 타입이어야 합니다.

errors.date={0}() date 타입이어야 합니다.

errors.range={0}() {1} {2} 사이의 수여야 합니다.

errors.creditcard={0}() 올바르지 않은 신용카드 번호입니다.

errors.email={0}() 올바르지 않은 e-mail 주소입니다.

 


1.3 애플리케이션의 검증 규칙 정의

 - 애플리케이션에 의존적인 검증규칙은 validator.xml 파일에 정의함

 

……………………

<global>

             <constant>

                           <constant-name>password</constant-name>

                           <constant-value>^[A-Za-z0-9_]*$</constant-value>

             </constant>

</global>

 

<formset>

…………

<form name=”LoginForm”>

             <field property=”userId” depends=”required,maxlength,minlength”>

             <arg key=”user.userId” position=”0”>

             <arg name=”maxlength” key=”${var:maxlength}” resource=”false” position=”1”/>

             <arg name=”minlength” key=”${var:minlength}” resource=”false” positioin=”1”/>

             <var>

                          <var-name>maxlength</var-name>

                           <var-value>12</var-value>

             </var>

             <var>

                           <var-name>minlength</var-name>

                           <var-value>5</var-value>

             </var>

             </field>

             <field property=”password” depends=”required,mask,maxlength,minlength”>

             <msg name=”mask” key=”errors.password”>

<arg key=”user.password” position=”0”/>

             <arg name=”maxlength” key=”${var:maxlength}” resource=”false” position=”1”/>

             <arg name=”minlength” key=”${var:minlength}” resource=”false” positioin=”1”/>

             <var>

                           <var-name>mask</var-name>

                           <var-name>${password}</var-value>

             </var>

             <var>

                           <var-name>maxlength</var-name>

                           <var-value>12</var-value>

             </var>

             <var>

                           <var-name>minlength</var-name>

                           <var-value>5</var-value>

             </var>

             </field>

</form>

……………………

</formset>
신고


1. struts-config.xml

<struts-config>

    <form-beans>

        <form-bean 

            name="LoginForm"
            type="org.apache.struts.validator.DynaValidatorForm">           

            <form-property name="adminId"  type="java.lang.String"/>

            <form-property name="pwd"  type="java.lang.String"/>           

        </form-bean>
   
</form-beans>

 

<action-mappings>

        <action

            path="/bo/admin/login"

                       name="LoginForm"

                       scope="request"

                       type="com.epiontech.jump.action.bo.AdminAction"

                       parameter="cmd"

                       validate="true"

                       input="/jsp/bo/login_form.jsp" >

                     <forward name="bo_main"  path="/jsp/bo/index.jsp" redirect="true"/>            

         </action>

    </action-mappings>

</struts-config>

 

 1.1 form-beans

             -> name : ActionForm의 고유한 이름

             -> type : ActionForm의 패키지 명을 포함한 클래스의 이름

             -> form-property : form-bean type 속성에 DynaActionForm이나 그
                 하위 클래스를 지정할
 경우 DynaActionForm이 가질 필드들을 정의

 1.2 action-mappings

             -> path : action 요소가 매핑될 요청 경로. 항상 ”/”로 시작해야 함.

             -> name : Action에서 사용할 ActionForm의 고유한 이름

             -> scope : ActionForm을 담아 둘 스코프. “request” 또는 “session”을 지정
                 할수 있다.
name속성이 지정됐을 때만 유효하며 지정하지 않으면
                  “session”
으로 지정됨.

             -> type : Action의 패키지 명을 포함한 클래스 명.

             -> parameter : Action에 전달해줄 파라미터

             -> validate : ActionForm의 검증 로직의 수행 여부를 지정

             -> input : 이 액션을 호출한 웹 리소스 명. 검증 시 에러가 발생하면 이 곳에
                 지정한 리소스로 컴백
신고


1. 기본적인 ActionForm

 - validate()

2. 다른 형태의 ActionForm

 - ActionForm은 웹 애플리케이션에서 사용자와의 데이터 교환을 위해 사용

 

2.1 DynaActionForm

- 여러 개의 ActionForm으로 분리되어 있어야 할 속성들을 하나의 ActionForm으로
      구성

- struts-config.xml 파일에 속성들과 타입을 선언해 주면 DynaActionForm에 의해
      실행시에 속성들과
getter/setter 메서드들이 동적으로 생성.

 

2.2 Map-backed ActionForm

- ActionForm에 전달될 요청 파라미터를 예측할 수 없는 경우에 사용

- Map을 사용. String 형태의 key를 사용

 

2.3 List-backed ActionForm

- Map-backed ActionForm과 비슷한 개념으로 Map 대신 List를 사용하며 String
      형태의 key 대신
  int형식의 index를 사용.

신고


1.
기본적인 Action

 - Action은 모델영역과 ActionForm은 뷰 영역과의 접점 역할을 한다.

 - 사용자의 요청이 있으면 요청과 함께 전달된 파라미터는 ActionForm에 담겨 Action
    에 전달되며,

   Action은 이 파라미터를 기초로 모델영역에 접근하며 필요한 정보를 조회.

 - 모델영역에서 조회한 데이터는 다시 ActionForm에 담겨 뷰에 전달된다.

 - 모델영역의 비즈니스 프로세스의 수행결과에 따라 ActionForward를 선택하고
    이를 반환

 1.1 execute()

             -> Action 클래스를 선언한 이후에는 execute() 메서드를 재정의하여
                  사용자의 단일업무 요청을
처리하는 단위 동작을 정의

 1.2 ActionForward

             -> Action 클래스에서 모델영역에 비즈니스 로직의 수행을 요청하고 난 후에
                  할 일은 비즈니스
로직의 수행 결과에 따라 어떤 뷰를 사용해야 할지를
                  결정

 1.3 Messages

             -> 사용자의 요청을 받아 처리한 후 처리 결과에 대한 메시지 처리를 위해
                 ActionMessages
ActionErrors를 제공함.

 

2. 다른 형태의 Action

 1. ForwardAction

   - 별다른 동작없이 곧바로 JSP로 포워딩하는 경우에 사용

             <action path=”/login”

                           parameter=“/login.jsp”

                           type=”org.apache.struts.actions.ForwardAction” />

             <action path=”/login” forward=”/login.jsp”>

 

 2. IncludeAction

   - ForwardAction과 동일한 목적으로 IncludeAction을 이용

   - 차이점이 있다면 JSP를 수행하고 컨트롤이 RequestProcessor로 돌아오느냐
      아니냐의 차이인데
결과는 동일

             <action path=”/login”

                           parameter=“/login.jsp”

                           type=”org.apache.struts.actions.IncludeAction” />

             <action path=”/login” include=”/login.jsp”>

 

 3. LocaleAction

   - 한번 판별된 사용자의 로케일 정보는 세션에 저장되어 다음 요청부터는 로케일을
     판별하는 과정을
거치지 않고 재사용

 

 4. DispatchAction

   - 여러 개의 작은 Action들을 하나의 클래스에 모으는 역할을 함.

             <action path=”/user/insert_user”

                           parameter=”cmd”

                           …………

 

 5. LookupDispatchAction

   - DispatchAction의 서브 클래스로 그 목적과 기능이 유사함.

   - getKeyMethodMap() 메서드를 구현하고 리소스 번들의 키와 메서드명을 매핑한
      java.util.Map
을 반환

             protected Map getKeyMethodMap() {

                           HashMap map = new HashMap();

                           map.put(“button.add”, “add”);

                           map.put(“button.sub”, “sub”);

                           return map;

             }


   - message-resources 요소에 정의

             button.add=더하기

             button.sub=빼기

 

             <action path=”/user/insert_user”

                           parameter=”cmd”

                           …………

 

 6. MappingDispatchAction

   - DispatchAction의 서브 클래스로 그 목적과 기능이 유사

   - 메서드별로 각각 서로 다른 ActionMapping을 선언

             <action path=”/user/insert_user”

                           parameter=”insertUser”

                           …………

             <action path=”/user/update_user”

                           parameter=”updateUser”

                           …………

 

 7. SwitchAction

   - 애플리케이션 내에 여러 개의 모듈이 있을 때, 현재 작업이 이루어지고 있는 모듈
      에서 다른 모듈로
이동하는 방법으로 SwitchAction은 현재 작업중인 모듈에서
      다른 모듈로 전환하고, 새로운 모듈내의
URI로 포워드 하는 일을 수행.

신고


1.
스트러츠란?

 - 오픈소스 프레임워크로서 웹 어플리케이션 구축시에 재사용성이 부족했던 많은 부
   분을 재사용이 가능 하
도록 미리 구현해 놓은 오픈소스 프레임워크로서 MVC 패턴에
   서 컨트롤러(Controller) 역할을 수행한다.

 - JSP 아키텍쳐에는 Model1 Model2가 있으며 Model2 MVC 패턴에 적합한 모델
    이다.
※ 여기서 스트러츠는 Controller를 담당하며 부분적으로 View를 지원하는 유틸리티
    를 가지고 있음.

 

2. 스트러츠의 주요 구성 요소

 - 크게 3가지로 분류

 - 스트러츠 태그라리브러리

-> 스트러츠 컨트롤러와 상호작용할 수 있는 태그 라이브러리를 제공.

 - Action, ActionForm, ActionServlet ..

             -> 요청 정보를 Action 클래스에 매칭시키고 이를 처리하기 위한 클래스를 제
                  공.

 - xml 유틸리티

             -> xml 파싱, 국제화 등을 지원하기 위한 클래스를 제공.

 

3. 스트러츠의 주요 클래스

 - ActionServlet

             -> 요청(request)을 처리하는 컨트롤러로서 스트러츠의 핵심요소이다.

 - ActionMapping

             -> 요청 URI ActionServlet에게 알려주는 역할을 한다.

 - Action

             -> 요청을 처리하고 그 결과를 ActionForward로 반환하는 역할을 담당

 - ActionForm

             -> 컨트롤러에서 HTML 폼을 표현하며 FormBean으로 참조된다.

 - ActionForward

             -> 이름으로 실제 JSP 파일이 위치한 경로를 연결하는 클래스이다.

 - ActionMessage, ActionErrors

             -> 컨트롤러와 뷰 사이에 데이터를 주고받을 때 데이터를 검증하는데 사용되
                 는 클래스들.

 

4. ModuleConfig

 - ActionServlet은 웹 애플리케이션이 초기화 될 때 외부 설정 파일인
    struts-config.xml
을 읽어 생성된
객체

 

5. ActionServlet

 - ActionServlet은 사용자의 요청을 받는 단일 진입점의 역할을 수행하며 web.xml
   struts-config.xml
파일의 설정에 따라 모듈별로 정의되어 있는 RequestProcessor
   의 인스턴스를 생성한 후 RequestProces
sor process() 메소드를 호출

 

6. RequestProcessor

 - struts-config.xml 파일의 설정에 따라 모듈별로 정의되는 클래스 파일
신고


1. Fedora Core6 + MySql 5.x 설치(Non RPM)

- http://dev.mysql.com/downloads/mysql/5.0.html#linux 에 접속 해서

Linux (non RPM, Intel C/C++ compiled, glibc-2.3) 에서
      
mysql-5.0.41-linux-i686-icc-glibc23.tar.tar
다운로드

- 해당 mysql 파일이 /usr/local/ 밑에 있다고 가정

- 압축 풀기

  [root@localhost local]# tar –xzvf mysql-5.0.41-linux-i686-icc-glibc23.tar.tar

- mysql 폴더에 복사

  [root@localhost local]# cp –r mysql-5.0.41-linux-i686-icc-glibc23 mysql

- 그룹 추가

  [root@localhost local]# groupadd mysql

- 사용자 추가

  [root@localhost local]# useradd –g mysql mysql

- mysql 폴더로 이동

  [root@localhost local]# cd mysql

- 권한 설정 및 그룹 변경(root -> mysql)

  [root@localhost mysql]# chown –R mysql .

  [root@localhost mysql]# chgrp –R mysql .

- 디비 초기화

  [root@localhost mysql]# script/mysql_install_db –user=mysql

- 권한 설정(mysql -> root), data mysql 권한으로

  [root@localhost mysql]# chown –R root .

  [root@localhost mysql]# chown –R mysql data

- 실행

  [root@localhost mysql]# bin/mysqld_safe –user=mysql

- mysql 작동 확인 방법

  [root@localhost mysql]# ps -aux | grep mysqld

mysql    14666  0.0  1.4 117828 14268 pts/2    Sl   18:19   0:00
       /usr/local/mysql/bin/mysqld –

basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=mysql

--pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking
       --socket=/var/lib/mysql/mysql.sock

  이런 문구가 나왔을 때 정상적으로 작동..

  

mysql이 정상적으로 작동 안할 때

[root@localhost mysql]# vi /etc/my.cnf

파일을 열어서 [client] 가 없으면 아래와 같이 추가

[client]

port=3306

socket=/var/lib/mysql/mysql.sock

  

2. MySql 5.x 사용하기

- 설정에 앞서 root 비밀번호는 cts0323, DB 명은 phboard, 사용자는
     qkrgns208/gnsl208
입니다.

- root 암호 설정

  [root@localhost mysql]# cd bin

  [root@localhost bin]# ./mysqladmin –u root password cts0323

- DB 접속

  [root@localhost bin]# ./mysql –u root –pcts0323

- DB 생성

    mysql> create database phboard;

- 사용사 생성

  mysql> grant all privileges on phboard.* to qkrgns208@’%’ identified by
                ‘gnsl208’;

  qkrgns208 이라는 사용자를 gnsl208 이라는 비밀번호를 갖도록 하여 추가한다.

     qkrgns208 phboard이라는 데이터베이스에 대해 모든 권한을 가지고 있습니
        다.

     현재는 다른 호스트에서 접속할 수 있게끔 %으로 한 것이며, 로컬만 허용할
        경우 localhost라고
하면 됩니다.

  - 이제는 SQLyog를 통해서 테이블 생성합니다.
신고


1. Fedora Core6 + MySql 5.x 설치(Source)

- http://dev.mysql.com/downloads/mysql/5.0.html 에 접속 해서

Source downloads 에서 mysql-5.0.51.tar.tar 다운로드

- 압축 풀기

  [root@localhost local]# tar –xzvf mysql-5.0.51.tar.tar

- 압축 푼 디렉토리 이동

  [root@localhost local]# cd mysql-5.0.51

- mysql 설치

  [root@localhost mysql-5.0.51]# ./configure –-prefix=/usr/local/mysql –-
                    localstatedir=/usr/local/
mysql/data –-with-charset=euckr

  [root@localhost mysql-5.0.51]# make

  [root@localhost mysql-5.0.51]# make install

- 복사

  [root@localhost mysql-5.0.51]# cp support-files/my-large.cnf /etc/my.cnf

- 그룹 추가

  [root@localhost mysql-5.0.51]# cd ..

  [root@localhost mysql-5.0.51]# groupadd mysql

- 사용자 추가

  [root@localhost mysql-5.0.51]# useradd –g mysql mysql

- 권한 설정

  [root@localhost mysql-5.0.51]# chown mysql:mysql –R /usr/local/mysql

- 사용자 변경

  [root@localhost mysql-5.0.51]# su mysql

- 디비 초기화

  [mysql @localhost mysql-5.0.51]# cd /usr/local/mysql/bin

  [mysql @localhost bin]# ./mysql_install_db –user=mysql

- 실행

  [mysql @localhost mysql]# bin/mysqld_safe –user=mysql

- mysql 작동 확인 방법

  [mysql @localhost mysql]# ps -aux | grep mysqld

mysql    14666  0.0  1.4 117828 14268 pts/2    Sl   18:19  0:00
       /usr/local/mysql/bin/mysqld –
basedir=/usr/local/mysql
       --datadir=/var/lib/mysql --user=mysql
      
--pid-file=/var/run/mysqld/mysqld.pid
       --skip-external-locking --socket=/var/lib/mysql/mysql.sock

  이런 문구가 나왔을 때 정상적으로 작동..

  

2. MySql 5.x 사용하기

- 설정에 앞서 root 비밀번호는 cts0323, DB 명은 phboard, 사용자는
      qkrgns208/gnsl208
입니다.

- DB 접속

  [mysql @localhost bin]# ./mysql –u root

- 사용자 암호 설정

  [mysql @localhost bin]# ./mysqladmin –uroot password 원하는 비밀번호

- DB 생성

    mysql> create database phboard;

- 사용사 생성

  mysql> grant all privileges on phboard.* to qkrgns208@’%’ identified by
                 ‘gnsl208’;

  qkrgns208 이라는 사용자를 gnsl208 이라는 비밀번호를 갖도록 하여 추가한다.

     qkrgns208 phboard이라는 데이터베이스에 대해 모든 권한을 가지고 있습니
         다.

     현재는 다른 호스트에서 접속할 수 있게끔 %으로 한 것이며, 로컬만 허용할 경
        우 localhost라고
하면 됩니다.

  - 이제는 SQLyog를 통해서 테이블 생성합니다.

3. 설치 명령어

 - configure : 프로그램이 설치된 리눅스의 환경이 모두 다르고, 용도도 다르
                   므로 자신이 원하는 다양한 설치
옵션을 지정한다. 결과는
                   Makefile
이라는 파일이 만들어진다.

        # ./configure                    : 일반적으로 설치할 때

        # ./configure –-width-charset=euckr          : 언어설정

        # ./configure –-without-server                   : 클라이언트 프로그램만으로 사용

        # ./configure –-prefix=/usr/local/mysql
                             –-localstatedir=/usr/local/mysql/data

              : 기본설치 디렉토리를 /usr/local/mysql로 하고, 데이터베이스
                디렉토리를 /usr/local/mysql/data

         # ./configure –-with-unix-socket-path=/path/to/socket/dir

              : 소켓디렉토리를 /path/to/socket/dir로 변경(기본값은 /tmp Or /var/run)

         # ./configure –-with-client-ldflags=-all-static
                              –-with-mysqld-ldflags=-all-static

              : 정적으로 프로그램을 컴파일 하는 경우

 

 - make : 실제 소스 파일을 컴파일하는 과정, configure에서 만들어진 
             Makefile
을 이용해서 컴파일을 한다.

 

 - make install : 컴파일이 완료된 실행 파일 및 관련 파일들을 해당
                       디렉토리에 설치한다.
신고


-- Oracle 10g 에서 dmp 파일 import 명령어


 Oracle 로 접속후..

 dmp파일이 위치한 디렉토리로 이동

 [oracle@localhost qkrgns208]$ imp

 그 이후에는 설명을 잘 보고 Yes/No

---------------------------------------------------------
imp userid=id/password file=test.dmp fromuser=id touser=id
신고


1.
기본 명령어

 - ls : 도스의 dir과 같은 역할로, 해당 디렉토리에 있는 파일의 목록을 나열

    # ls                                 : 현재 디렉토리의 파일 목록

    # ls /usr/bin                   : /usr/bin/ 디렉토리의 목록

    # ls –a                             : 현재 디렉토리의 목록(숨김 파일 포함)

    # ls –l                              : 확장자가 txt인 목록을 보여줌

    # ls –l /usr/bin/a*           : /usr/bin/ 디렉토리에 있는 목록 중 앞 글자가 ‘a’인 것
                                             의 목록
을 자세히 보여줌

 

 - cd : 디렉토리 이동

    # cd                                : 현재 사용자의 홈 디렉토리로 이동

    # cd ~root                       : root 사용자의 홈 디렉토리로 이동

    # cd ..                              : 바로 상위 디렉토리로 이동

    # cd /usr/bin                   : /usr/bin 디렉토리로 이동

 

 - pwd : 현재 디렉토리의 전체 경로 출력

 

 - rm : 파일이나 데렉토리 삭제, 해당 파일이나 디렉토리에 삭제 권한이 있어
          야 함.

    # rm abc.txt                       : 그냥 삭제(내부적으로 rm –i로 연결됨)

    # rm –I abc.txt                    : 삭제 시 확인

    # rm –r abc                        : 디렉토리 삭제

    # rm –rf abc                       : abc 디렉토리와 그 하위 디렉토리 강제로 삭제

 

 - cp : 파일이나 디렉토리 복사

    # cp abc.txt cba.txt            : abc.txt 파일을 cba.txt 파일로 복사

    # cp –r abc cba                 : 디렉토리 복사

 

 - touch : 크기가 0인 새 파일을 생성하거나 이미 존재하는 파일인 경우 수정
              시간을 변경

    # touch abc.txt                   : abc.txt 파일 생성 존재하면 파일의 수정시간을 현재
                                                시간으로

 

 - mv : 파일과 디렉토리의 이름 변경이나 위치 이동 시 사용

    # mv aaa bbb ccc ddd       : aaa, bbb, ccc 파일을 ddd 디렉토리로 이동

    # mv abc.txt www.txt           : 이름 변경


 - mkdir : 새로운 디렉토리 생성, 생성된 디렉토리는 명령어를 수행한 사용자
             의 소유가 됨.

    # mkdir abc                      : 현재 디렉토리 아래에 abc라는 디렉토리 생성

    # mkdir –p def/fgh             : def라는 디렉토리 생성하고 그안에 fgh 디렉토리 생성

 

 - rmdir : 디렉토리 삭제, 해당 디렉토리의 삭제 권한이 있어야 함, 해당 디렉
             토리는 비어 있어야 함.

    # rmdir abc

 

 - cat 텍스트로 작성된 파일을 화면에 출력

    # cat install.log

 

 - more : 텍스트로 작성된 파일을 화면에 페이지 단위로 출력, ‘space’키는
             다음페이지, ‘B’키는 앞 페이지

    # more install.log

 

 - ps : 현재 메모리에서 작동 중인 프로세스를 나타내는 명령

    # ps –auxm

      a       : 모든 프로세스를 나타낸다.

          u       : 프로세스를 실행한 사용자와 실행 시간을 나타낸다.

          x       : 터미널 제어 없이 프로세스 현황을 나타낸다.

          m      : 메모리 정보를 나타낸다.

 

2. 사용자와 그룹

 - cat /etc/passwd : root 사용자부터 리눅스에서 기본적으로 존재하는 표준
                             사용자들
   
ex> root:x:0:0:root:/root:/bin/bash
     
사용자 이름:비밀번호:사용자ID:사용자가 소속된 그룹ID:전제 이름:홈 디렉토리:
     기본 쉘
    
※ 비밀번호 부분이 ‘x’로 되어 있는 것은 /etc/shadow 파일에 별도로 지정되어 있
         는 것을 의미

 

 - cat /etc/group : 그룹 정보

 

 - adduser : 사용자 등록

    # adduser –d <홈 디렉토리><사용자명>   : 별도로 사용자의 홈 디렉토리를 지정

    # adduser –u <사용자 id><사용자명>       : 사용자 id를 순차 번호가 아닌 임의로
                                                                    지정

    # adduser –g <그룹명><사용자명>           : 별도의 그룹을 지정

    # adduser –s <셸 파일명><사용자명>       : /bin/bash 외의 별도의 셸을 지정

 

- passwd <사용자명> : 비빌번호 변경

             # passwd user1

 

- adduser 명령을 수행하면 다음과 같이 수행

    1. /etc/passwd /etc/shadow 파일에 사용자를 추가

    2. 별도로 그룹을 지정하지 않았다면, 사용자명과 동일하게 /etc/group 파일에 그
        룹추가

    3. 별도로 홈 디렉토리를 지정하지 않았다면 ‘/home/<사용자명>’으로 디렉토리에
         복사

    4. /etc/skel 디렉토리의 파일을 ‘/home/<사용자명>’ 디렉토리에 복사

 

- userdel <사용자명> : 사용자 삭제

    # userdel user1                   : user1이라는 사용자 삭제

    # userdel –r user1               : user1이라는 사용자 삭제와 동시에 home 디렉토리
                                                  삭제

    # usermod –s /bin/false      : 계정은 있지만 사용자가 로그인 하지 못하게 할 때

    # usermod –s /bin/bash      : 다시 로그인 할 수 있게

 

 - groupdel <그룹명> : 그룹 삭제

 

 

3. 파일과 디렉토리의 소유와 허가권
   
ex> drwxr-xr-x 2 mysql mysql 4096 12 12 15:10 bin

 - 파일유형 : 이 파일이 어떤 파일인지를 의미

      디렉토리 d, 일반적인 파일 -, 블록 디바이스 b, 문자 디바이스 c, 링크 l

 

 - 파일 허가권 : rwx로 구성되면 읽고, 쓰고, 실행 이라는 의미

      소유자, 그룹, 그외 사용자를 의미

      ex> # chmod 777 install.log           : 사용자, 그룹, 그외사용자에게 rwx 모든 권
                                                             한을 줌

            # chmod u+x install.log           : 사용자가에게 x 권한을 줌.

            # chmod g+x install.log           : 그룹에게 x 권한을 줌

            # chmod o-x install.log           : 그외사용자에게 x 권한을 제거

      # umask 022                : 디폴트 파일 허가권 제한 설정으로 user, group,
                                                other
가 최대 설정
할 수 있는 권한은 7,5,5이다.

 

 - 링크 수

 - 파일 소유자 이름 : chown <새로운 사용자명>.<새로운 그룹명> <파일명>

      ex> # chown qkrgns208 install.log              : install.log 파일의 소유자를
                                                                           qkrgns208
로 변경

             # chown qkrgns208.mysql install.log    : 파일의 그룹도 mysql로 변경

             # chown mysql:mysql –R /usr/local/mysql       :
                       mysql
그룹과 mysql 사용자에게 mysql
그 하위 디렉토리, 파일 모
                       든 권한 주기

 

 - 파일 소유 그룹 이름 : chgrp

      ex> # chgrp mysql mysql              : mysql이라는 폴더가 mysql그룹으로 변경

 

 - 파일 크기

 - 마지막 변경 날짜/시간

 - 파일 이름

 

 

4. 관리 명령어

 - RPM(Redhat Package Manager)

       # rpm –Uvh <패키지 파일>            : 설치

        U : 기존에 패키지가 설치되지 않았다면 i와 같이 일반적인 설치를 하고, 기존
                 에 패키지가 설치
되어 있다면 업그레이드를 한다.

           v : 설치 과정의 확인

           h : 설치 진행 과정을 #마크로 화면에 출력함

       # rpm –e <패키지 파일>        : 삭제

       # rpm –e –-nodeps <패키지 파일> : 의존성을 검사하지 않고 삭제

       # rpm –qa <패키지 파일>      : 시스템에 패키지가 설치되었는지 확인

       # rpm –qf <패키지 파일>       : 이미 설치된 파일이 어느 패키지에 포함된 것인지
                                                    확인

       # rpm –ql <패키지 파일>       : 특정 패키지에 어떤 파일들이 포함되었는지 확인

       # rpm –qi <패키지 파일>       : 설치된 패키지의 상세 정보

            

- YUM(Yellowdog Update Manager) : RPM의 단점인 의존성 문제를 완전
  하게 해결

       # yum –y install <패키지 이름>       : -y를 붙여줌으로 자동 패스

       # yum check-update                     : 업데이트가 가능한 패키지의 목록

       # yum remove <패키지 이름>         : 삭제

       # yum info <패키지 이름>  : 정보 확인

 

 

5. 파일 압축과 파일 묶기

 - gzip : 확장명 gz으로 압축을 하거나 풀어줌

       # gzip <파일명>                : <파일명>을 압축 파일인 <파일명>.gz 으로 만들어줌

       # gzip –d <파일명>.gz       : 압축 파일을 일반 파일인 <파일명>으로 만들어줌

 

 - gunzip : gzip –d 와 동일한 의미

 

 - bzip2 : 확장명 bz2로 압축을 하거나 풀어줌, gzip과 유사하며 텍스트 압축
              에서 강력함.

       # bzip2 <파일명>        : <파일명>을 압축 파일인 <파일명>.bz2 으로 만들어줌

       # bzip2 –d <파일명>.bz2      : 압축 파일을 일반 파일인 <파일명>으로 만들어줌

 

 - bunzip2 : bzip2 –d 와 동일한 의미

 

 - tar : 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어줌

       # tar cvf xinetd.tar /etc/xinetd.d/                : 생성

       # tar cvfz xinetd.tar.gz /etc/xinetd.d/          : 생성 + gzip 압축

       # tar cvfj xinetd.tar.bz2 /etc/xinetd.d/         : 생성 + bzip2 압축

       # tar tvf xinetd.tar                                        : 확인

       # tar xvf xinetd.tar                                       : 풀기

       # tar xvfz xinetd.tar.gz                                 : gzip 압축 해제 + tar 풀기

       # tar xvfj xinetd.tar.bz2                                : bzip2 압축 해제 + tar 풀기

       [동작]            c : 새로운 묶음

                                 x : 묶인 파일을 풀어줌

                                 t : 묶음을 풀기 전에 묶인 경로를 보여줌

           [옵션]            f(필수) : 묶음 파일명 지정

                                 v : visual 파일이 묶이거나 풀리는 과정을 보여줌

                                 z : tar + gzip

                                 j : tar + bzip2
신고

티스토리 툴바