2013. 1. 18. 14:55

공통되는 부분을 <jsp:include>태그를 이용하여 간편하게 작성할 수 있지만 파일의 위치가 바뀌는 등의 수정을 할 경우가 생길 경우

이 태그를 사용한 모든 부분을 고쳐야한다.

이런 번거로움을 피할 수 있는 방법이 web.xml파일에서 <jsp:include>를 설정하는 방법이다.

다음과 같이 사용할 수 있다.

<jsp-config>
<jsp-property-group>
<url-pattern>/view/*</url-pattern>
<include-prelude>/menu/top.jsp</include-prelude>
<include-coda>/menu/bottom.jsp</include-coda>
</jsp-property-group>
</jsp-config>


<태그설명>

<url-pattern>/view/*</url-pattern> : 프로퍼티를 적용할 JSP파일에 해당되는 URL 패턴을 지정
<include-prelude /> : url-pattern에서 지정한 패턴에 해당되는 JSP파일의 앞에 자동으로 삽입될 페이지

<include-coda /> : url-pattern에서 지정한 패턴에 해당되는 JSP파일의 앞에 자동으로 삽입될 페이지

위와 같이 설정해두면 URL패턴이 view 의 경로에 있는 모든 페이지들은 로드될 때 <include-prelude />, <include-coda/>에 설정한 페이지들을 포함하여 보여진다.

 

http://raidparty.net/xe/2042

'WebPrograming > JSP' 카테고리의 다른 글

뒤로가기 방지  (0) 2012.06.11
JSP 달력(CSS적용)  (2) 2012.03.29
Posted by 물색없는세상
2012. 12. 11. 09:49

OS : Windows XP
프로그램 및 버전 : Oralce11g

※ 주의사항 : 없음

1. 증상
오라클 특정 유저 패스워드 변경 후 처음에는 로그인이 잘 되었는데 어느순간 부터 ORA-28000 : the account is locked 오류 발생

2. 원인
특정 유저 패스워드 변경 후 수시로 DB에 접속하는 프로그램에서 변경된 패스워드를 반영하지 않았음. 프로그램에서 계속 잘못된 패스워드로 접속을 시도하였고 오라클 설정에 따라 자동으로 특정 유저가 LOCK됨.



3. 해결방법

1) USER 패스워드 만료 상태 확인하기

1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdba" --system계정으로 로그인
...
SQL> select * from dba_users; --DB유저 정보 확인하기

2. ACCOUNT_STATUS컬럼을 확인한다.
- OPEN : 정상
- LOCKED(TIMED) : 패스워드 설정 횟수 이상 잘못입력하여 잠김
- EXPIRED & LOCKED : 패스워드 기간이 만료되어 잠김
...
접속 시 오류난 유저의 ACCOUNT_STATUS컬럼을 보면 LOCKED(TIMED)으로 되어 있을 것 이다.


2) LOCK걸린 유저 UNLOCK하기

1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdab" --system계정으로 로그인
...
SQL> alter user 유저명 account unlock; --LOCK걸린 유저 UNLOCK하기

2. LOCK되었던 유저로 로그인을 확인한다.



3. 결과
우리가 은행에서 현금 인출할 때 비밀번호를 3번이상 잘못 입력하면 은행에 가서 풀어야 하는 것처럼 오라클도 이러한 기능을 제공을 하는 것 같다.
보안상 좋은 기능이지만 어찌보면 굉장히 위험한 기능인 것 같다. 외부에서 누군가가 악한 마음을 갖고 잘못된 패스워드로
계속 접근을 시도해서 유저를 LOCK시켜 버린다면... 에효... 물론 이에 대한 해결방안이 있겠지만... 나중에 찾아봐야겠다.

4. 추가로 알아보기
그럼 과연 몇번 패스워드 입력을 실패하면 LOCK이 걸릴까? 한번 알아보았음.

1) 패스워드 LOCK횟수 확인하기

1. system계정으로 로그인 하여 다음을 입력 한다.
C:\> sqlplus "/as sysdab" --system계정으로 로그인
...
SQL> SELECT U.USERNAME,P.PROFILE, P.RESOURCE_NAME, P.LIMIT
FROM DBA_USERS U, DBA_PROFILES P WHERE P.PROFILE=U.PROFILE
AND RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
...

2. 위 sql문을 입력 하면 계정별로 몇번의 패스워드 실패시 LOCK이 되는지 확인할 수 있다.

 

 

http://www.happytomorrow.net/116

Posted by 물색없는세상
2012. 11. 22. 19:00

자바스크립트 프로그래밍을 하다보면 종종 그런 생각이 들 때가 있다.

마우스 우클릭 한번으로 내가 쌔빠지게 짜놓은 소스를 다른 사람들이 그대로 가져가서 쓴다면..

배가 아플텐데.. 나만그런가?-_ -; 여튼.. 나같은 엉덩이에 뿔난 사람들을 위한 암호화 툴을 소개

해보고자 한다.


우선 내가 알고 있는 툴은 현재 3가지가 있다.

1. Microsoft Script Encoder

2. Packer JavaScript

3. scriptasylum.com Javascript Encoder


각각 장단이 있지만(참고 : http://www.lovelgw.com/Blog/79) ms는 인코더와 함께 디코더도

뿌리는 바람에 의미가 없고 스크립트어사일럼은.. 덩치가 너무 커진다. 나모에서 사용하는 패커

도 어사일럼같은데 정확히는 모르겠다. 비슷한 방식이다.


그래서 추천하는게 Joliclic code에서 제공하는 스크립트 인코더이다.

http://joliclic.free.fr/php/javascript-packer/en/index.php

유니코드와 브라우저 호환성이 좋다.

라이브러리를 받아다가 서버에 올려놓고 사용해도 되고,

일회성 사용자들을 위하여 사이트에서 즉시 변환해서 사용할 수도 있다.




위와 같이 소스를 넣고 [Pack]를 누르면 바로 암호화된 코드가 튀어나온다.

이걸 그대로 갖다가 붙여넣으면 된다


단, 주의할점이 두 가지 있는데,

첫 번째는 자바스크립트의 고질적인 문제인 한글 문제이다. 에러라기 보다는 깨지는 문제가 발생한다.

미리 JavaScript escapes 등을 사용해서 변환해서 사용해야 한다.

두 번째는 디코딩이 생각보다 쉽다. 디코더가 따로 있는 것은 아니지만 alert문 같은 것은 눈으로도 가능

하고 코드를 유심히 들여다보면 그리 어렵지 않게 디코딩이 가능하다. 뭐.. 디코딩이 쉬우면 무슨 인코딩

의 의미가 있겠냐마는.. 누가 하릴없이 암호화소스를 보고앉아있을까..하는생각이든다-_-a..

 

http://lunaticlobelia.tistory.com/49

Posted by 물색없는세상
2012. 10. 26. 14:21

declare
@StartDate datetime = '2010-01-25',
@EndDate datetime = '2010-02-05'

select GETDATE()  
select dateadd(day, 10, @StartDate), dateadd(day, -10, @StartDate)
select datediff(day, @StartDate, @EndDate), datediff(month, @StartDate, @EndDate)
select datepart(year,@StartDate), datepart(month,@StartDate) ,datepart(day,@StartDate)
select year(@StartDate), month(@StartDate), day(@StartDate)

 

'Database > Mssql' 카테고리의 다른 글

개행문자 치환쿼리  (0) 2012.09.06
Posted by 물색없는세상
2012. 10. 26. 01:16

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
 $('#btn').click(function() {
  //$.getJSON() 이용 - GetServlet : command - getJSON
  /*
  $.getJSON("../GetServlet","command=getJSON",function(data) {
   // 서블릿에서 넘겨줬을때 데이터가 JSON형태일때 사용하면 좋다.
   // data : JSON Object
   // alert(data.name);
   var str = data.id+"<br>"+data.name+"<br>"+data.age;
   $("div#first").html(str);
  });
  */
  $.getJSON("../GetServlet",{"command":"getJSON"},callback);//.getJSON은 함수 호출이 성공했을 경우만 호출이 되지만 onload는 성공하던 실패하던 실행이 된다.
 });
});

function callback(data, status, xhr) {
 //data : object
 if(xhr.status==200) {
  var str = data.id+"<br>"+data.name+"<br>"+data.age;
  $("#first").html(str);
  // alert(xhr.status);
  // alert(xhr.responseText);
 } else {
  alert("오류발생 : "+xhr.status);
 }
}
</script>
</head>
<body>
<input type="button" value="클릭1" id="btn">
<div id="first"></div>
</body>
</html>

 

 

 

package jquery.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jquery.dto.MemberDTO;
import jquery.service.MemberService;

import org.json.JSONObject;


public class GetServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String cmd = request.getParameter("command");

System.out.println(cmd);
if(cmd.equals("getJSON")){
getJSON(request,response);
}else if(cmd.equals("getData")){
getData(request, response);
}else if(cmd.equals("run")){
run(request, response);
}else if(cmd.equals("getMemberById")){
getMemberById(request, response);
}else if(cmd.equals("getMemberByIdJson")){
getMemberByIdJson(request, response);
}
}
protected void getMemberById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 요처파라미터 조회
String id = request.getParameter("id");
//2. B.L. 호출
MemberService ms = new MemberService();
MemberDTO mdto = ms.getMemberById(id);
//3. 응답
String str = "id : "+mdto.getId()+"<br>이름 : "+mdto.getName()+"<br>나이 : "+mdto.getAge();

response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println(str);
out.close();
}
protected void getMemberByIdJson(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 요처파라미터 조회
String id = request.getParameter("id");
//2. B.L. 호출
MemberService ms = new MemberService();
MemberDTO mdto = ms.getMemberById(id);
//3. 응답
//JSONObject - JSON 객체 형태의 문자열(string)생성
JSONObject jObj = new JSONObject(mdto);
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println(jObj.toString());
out.close();
}
protected void run(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String name=request.getParameter("name");
String isSend = request.getParameter("isSend");
String number = request.getParameter("number");
String str = id+", "+name+", "+isSend+", "+number;
System.out.println(str);
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println(str);
out.close();
}
protected void getData(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("<b>이것이 답입니다.</b><br>요청방식 : "+request.getMethod());
out.close();
}
protected void getJSON(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HashMap map = new HashMap();
map.put("id", "abcde");
map.put("name", "홍길동");
map.put("age", 30);
JSONObject jObj = new JSONObject(map);

response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println(jObj.toString());
out.close();
}

}

접기

* 결과

 

 

 

 

 

http://whakscjs.tistory.com/205

Posted by 물색없는세상
2012. 10. 17. 14:35

SqlMaps를 작성할때, 종종 SQL의 일부가 중복되곤한다. 예를 들어, FROM절이나 제약조건등이 그렇다. iBATIS는 이러한 중복되는 SQL문의 일부를 재사용하기 위한 강력한 태그를 제공한다. iBATIS사용시 대개 다음처럼 작성할것이다.

<select id="selectItemCount" resultClass="int">
  SELECT COUNT(*) AS total
  FROM items
  WHERE parentid = 6
</select>

<select id="selectItems" resultClass="Item">
  SELECT id, name
  FROM items
  WHERE parentid = 6
</select>

여기서는 FROM절 이하가 모두 중복이다. 이 중복을 제거하기 위해서, <sql> 과 <include> 태그를 사용한다. <sql> 태그는 재사용하기 위한 조각을 포함한다. <include> 태그는 이러한 조각을 포함한다.

<sql id="selectItem_fragment">
  FROM items
  WHERE parentid = 6
</sql>
<select id="selectItemCount" resultClass="int">
  SELECT COUNT(*) AS total
  <include refid="selectItem_fragment"/>
</select>
<select id="selectItems" resultClass="Item">
  SELECT id, name
  <include refid="selectItem_fragment"/>
</select>

<include> 태그는 명명공간을 인식한다. 그래서 당신은 다른 map에 위치한 조각들도 참조할수 있다(어쨌든 iBATIS가 SqlMaps를 로드하는 방식에 따라, 포함된 조각은 statement를 포함하기 전에 로드될것이다). 조각은 파라미터처럼 사용될수 있기 때문에 쿼리-수행시 포함되고 처리된다.

<sql id="selectItem_fragment">
  FROM items
  WHERE parentid = #value#
</sql>
<select id="selectItemCount" parameterClass="int" resultClass="int">
  SELECT COUNT(*) AS total
  <include refid="selectItem_fragment"/>
</select>
<select id="selectItems" parameterClass="int" resultClass="Item">
  SELECT id, name
  <include refid="selectItem_fragment"/>
</select>

http://harurun.blog.me/120055300736

Posted by 물색없는세상
2012. 10. 12. 16:40

제약조건 (Constraint)

제약조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용해 놓는거라 생각하면 됩니다. 간단하게 테이블안에서 테이터의 성격을 정의하는 것이 바로 제약조건 입니다.

데이터의 무결성 유지를 위하여 사용자가 지정할 수 있는 성질 입니다.

모든 CONSTRAINT는 데이터 사전(DICTIONARY)에 저장 됩니다.

★ 의미있는 이름을 부여했다면 CONSTRAINT를 쉽게 참조할 수 있습니다.

★ 표준 객체 명명법을 따르는 것이 좋습니다.

★ 제약조건은 테이블을 생성할 당시에 지정할 수도 있고, 테이블 생성 후 구조변경(ALTER)명령어를
통해서도 추가가 가능합니다.

★ NOT NULL제약조건은 반드시 컬럼 레벨에서만 정의가 가능합니다.


NOT NULL 조건
: 컬럼을 필수 필드화 시킬 때 사용합니다.


SQL> CREATE TABLE emp(
ename VARCHAR2(20) CONSTRAINT emp_nn_ename NOT NULL );
이런식으로 하면 ename 컬럼에는 꼭 데이터를 입력해야만 합니다.

여기서 emp_nn_ename은 (테이블이름_제약조건이름_컬럼이름) 형식으로
CONSTRAINT NAME을 정의 합니다.

CONSTRAINT NAME은 USER_CONSTRAINTS 뷰(VIEW)를 통해서 확인할수 있습니다.

SQL> SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME ='EMP' ;

CONSTRAINT_NAME
-----------------------
emp_nn_ename 이런 식으로 제약사항의 이름을 확인할수 있습니다.



UNIQUE 조건
:
데이터의 유일성을 보장(중복되는 데이터가 존재할수 없습니다.)
자동으로 index가 생성됩니다.


SQL> ALTER TABLE emp
ADD CONSTRAINT emp_uk_deptno UNIQUE (deptno) ;

테이블이 변경되었습니다.

이런식으로 하면 deptno 컬럼에 중복된 데이터가 들어갈 수 없습니다.

-- 제약 조건의 삭제

SQL>ALTER TABLE emp
DROP CONSTRAINT emp_uk_deptno ;

테이블이 변경되었습니다.



CHECK 조건 :
컬럼의 값을 어떤 특정 범위로 제한할 수 있습니다.


SQL>ALTER TABLE emp
ADD CONSTRAINT emp_ck_comm
CHECK (comm >= 10 AND comm <= 100000) ;

테이블이 변경되었습니다.

comm컬럼은 체크조건에서 제한을 하고 있으므로 1에서 100까지의 값만을 가질수 있습니다.
체크 조건에서는 IN 연산자를 사용할수 있습니다.


-- 제약 조건의 삭제

SQL>ALTER TABLE emp
DROP CONSTRAINT emp_ck_comm ;

테이블이 변경되었습니다.

SQL> ALTER TABLE emp
ADD CONSTRAINT emp_ck_comm
CHECK (comm IN (10000,20000,30000,40000,50000)) ;

테이블이 변경되었습니다.

comm 컬럼은 10000,20000,30000,40000,50000의 값만을 가질수 있습니다.



DEFAULT
(컬럼 기본값) 지정 : 데이터 입력시에 입력을 하지 않아도 지정된 값이 입력될수 있습니다.

SQL>CREATE TABLE emp(
hiredate DATE DEFAULT SYSDATE ) ;

이런식으로 하면 hiredate 컬럼에 INSERT를 하지 않아도 오늘 날짜가 들어갑니다.



PRIMARY KEY 지정
: 기본키는 UNIQUE 와 NOT NULL의 결합과 같습니다.

기본키는 그 데이터 행을 대표하는 컬럼으로서의 역할을 수행하여 다른 테이블에서
외래키들이 참조할 수 있는 키로서의 자격을 가지고 있습니다. 이를 참조 무결성이라 합니다
.

UNIQUE 조건과 마찬가지로 기본키를 정의하면 자동으로 인덱스를 생성하며
그 이름은 기본 키 제약 조건의 이름과 같습니다.


INDEX KEY
: 검색 키로서 검색 속도를 향상 시킴니다.
(UNIQUE,PRIMARY KEY 생성시 자동적으로 생김니다.)

SQL>CREATE TABLE emp(
empno NUMBER CONSTRAINT emp_pk_empno PRIMARY KEY ) ;

이런식으로 하면 empno 컬럼에 UNIQUE 제약조건과 NOT NULL제약조건을 가지게 됩니다.



FOREIGN KEY(외래 키)지정
: 기본키를 참조하는 컬럼 또는 컬럼들의 집합입니다.

※ 외래키를 가지는 컬럼의 데이터 형은 외뢰키가 참조하는 기본키의 컬럼과 데이터형이
일치해야 합니다.
이를 어기면 참조무결성 제약에의해 테이블을 생성할수 없습니다.

외래키에 의해 참조되고 있는 기본 키는 삭제할수 없다.

ON DELETE CASCADE 연산자와 함께 정의된 외래키의 데이터는 그 기본키가 삭제 될 때 같이
삭제됩니다.


SQL>ALTER TABLE emp ADD CONSTRAINT emp_fk_deptno
FOREIGN KEY (deptno) REFERENCES dept(deptno)

테이블이 변경되었습니다.

이런식으로 하면 emp 테이블의 deptno 컬럼은 dept 테이블에 deptno 컬럼을 참조하는
외래키를 가지게 됩
니다.

직접 변경해 보세요..


제약 조건의 확인

USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다.
USER_CONSTRAINTS : 유저가 소유한 모든 제약 조건을 불 수 있습니다.
이 두개의 데이터사전을 참조 하면 됩니다.

SQL> SELECT SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME,  
     DECODE(B.CONSTRAINT_TYPE,
'P','PRIMARY KEY',
           'U','UNIQUE KEY',
           'C','CHECK OR NOT NULL',
'R','FOREIGN KEY') CONSTRAINT_TYPE,  
     A.CONSTRAINT_NAME   CONSTRAINT_NAME  
FROM  USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B  
WHERE  A.TABLE_NAME = UPPER('&table_name')  
AND  A.TABLE_NAME = B.TABLE_NAME  
AND  A.CONSTRAINT_NAME = B.CONSTRAINT_NAME  
ORDER BY 1;  

-- 테이블 명을 입력 하면 됩니다.
table_name의 값을 입력하십시오: emp2


COLUMN_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
------------------------------ ----------------- --------------
DEPTNO CHECK OR NOT NULL SYS_C001362
FOREIGN KEY EMP2_FK_DEPTNO
EMPNO PRIMARY KEY EMP2_PK_EMPNO
ENAME CHECK OR NOT NULL EMP2_NN_ENAME
MGR UNIQUE KEY EMP2_UP_MGR

================================================
* Oracle Community OracleClub.com
* http://www.oracleclub.com
* http://www.oramaster.net
* 운영자 : 김정식 (oramaster _at_ empal.com)
================================================


- 제약조건의 기능은 MS-SQL도 비슷하지만 구문은 조금 다를 수 있다.

 

 

 

http://blog.naver.com/wangno/90152515426

Posted by 물색없는세상
2012. 9. 24. 18:12

jquery 플러그인 중 하나인 jquery.validator 의 옵션을 분석(해석?)해 본 겁니다.
뭐 별 쓸데도 없는 문서지만 기왕 정리한거 저 같이 영어레벨이 쎄멘바닥인 분들한테는 조금이나마 도움이 될까 하여 올려봅니다.
스프링노트에 적어두었던걸 그대로 옮긴거라 경어가 아닌점 양해바랍니다.
중간 중간 몰라서 분석 못한것도 있구요 잘못된 부분이 있을지도 모릅니다. ㅠㅠ 말씀해 주시면 수정하겠습니다.

jquery.validator

Option 정리

debug

기본값: false

디버그 할 수 있도록 입력값이 유효해도 submit 하지 않는다

$(".selector").validate({
debug: true
})

submitHandler

폼이 submit 될때 마지막으로 뭔가 할 수 있도록 핸들을 넘겨준다.

$(".selector").validate({
submitHandler: function(form) {
$(form).ajaxSubmit();
}
})

invalidHandler

입력값이 잘못된 상태에서 submit 할때 자체처리하기전 사용자에게 핸들을 넘겨준다.

<arguments>

form

validator

ignore

유효성검사에서 제외할 Element를 지정한다.

$("#myform").validate({
ignore: ".ignore"
})

rules

체크할 항목들의 룰을 설정한다.

$(".selector").validate({
rules: {
// simple rule, converted to {required:true}
name: "required",
// compound rule
email: {
required: true,
email: true
}
}
})

$(".selector").validate({
rules: {
contact: {
required: true,
email: {
depends: function(element) {
return $("#contactform_email:checked")
}
}
}
}
})

message

무효한 필드일때 왜 무효한지 설명하는 메세지를 설정한다.

$(".selector").validate({
rules: {
name: "required",
email: {
required: true,
email: true
}
},
messages: {
name: "Please specify your name",
email: {
required: "We need your email address to contact you",
email: "Your email address must be in the format of name@domain.com"
}
} })

$(".selector").validate({
rules: {
name: {
required: true,
minlength: 2
}
},
messages: {
name: {
required: "We need your email address to contact you",
minlength: jQuery.format("At least {0} characters required!")
}
} })

groups

다수의 Element를 그룹을 지어서 한쪽에서 에러메세지를 보여준다.

임의의 위치를 설정하기 위해서는 errorPlacement 안에서 할 수 있고 따로 설정이 없을경우 지정한 마지막 엘리먼트끝에 출력된다.

$("#myform").validate({
groups: {
username: "fname lname"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "fname"
|| element.attr("name") == "lname" )
error.insertAfter("#lastname");
else
error.insertAfter(element);
},
debug:true
})

onsubmit

유효성체크 없이 무조건 submit 한다

$(".selector").validate({
onsubmit: false
})

onfocusout

기본값 : true

포커스가 떠날때 유효성 검사를 한다. onkeyup도 false가 되어 있어야 눈으로 체감할 수 있다.

$(".selector").validate({
onfocusout: false
})

onkeyup

기본값 : true

키를 뗄때 유효성검사를 한다.

$(".selector").validate({
onkeyup: false
})

onclick

기본값 : true

checkbox 와 radio 버튼이 클릭될때 유효성 검사를 한다.

$(".selector").validate({
onclick: false
})

focusInvalid

기본값 : true

유효성 검사 후 포커스를 해당 무효필드에 둘 것인가 여부

$(".selector").validate({
focusInvalid: false
})

focusCleanup

기본값 : false

true 로 설정되어 있을 경우 잘못된 필드에 포커스가 가면 에러메세지를 지운다

$(".selector").validate({
focusCleanup: true
})

meta

엘리먼트에 class="..." 형식으로 지정하려고 하는데 다른 플러그인과 겹칠경우 이를 {[이름]{옵션1, 옵션2}} 와 같이 싸서 이용할 수 있도록 한다 (이건 정확한건지는 모르겠음)

$("#myform").validate({
meta: "validate",
submitHandler: function() { alert("Submitted!") }
})

HTML : <input type="text" name="email" class="{validate:{ required: true, email:true }}" />  

errorClass

기본값 : error

에러메세지의 CSS 클래스이름을 설정한다.

기본값은 .error 로 출력되는데 이 class 명을 바꿀 수 있다.

예를 들어 기본값일 경우에는 CSS 정의에서

.error{color:#00f}

이런식으로 사용할 수 있는데 만약 class 명을 invalid 라고 바꿨다면

.invalid{color:#00f}

라고 사용할 수 있다.

$(".selector").validate({
errorClass: "invalid"
})
validClass

유효성체크에서 성공한 값들의 클래스이름을 설정한다.

errorClass 와 같은 개념이다.

$(".selector").validate({
validClass: "success"
})

errorElement

에러메시지를 출력하는 엘리먼트의 태그요소를 결정한다.

errorClass의 개념과 같으나 HTML 태그를 바꾼다.

$(".selector").validate({
errorElement: "em"
})

wrapper

에러 메세지들을 임의의 태그로 묶는다.

만약 에러메세지들이 아래와 같이 생성되었다면

<label class='error'>This field is required</label>

<label class='error'>Your lastname, please!</label>

wraper:'li' 라고 했을때

<li>

<label class='error'>This field is required</label>

<label class='error'>Your lastname, please!</label>

</li>

로 묶어버린다. 이 기능은 주로 errorLabelContainer 와 같이 사용된다.

$(".selector").validate({
wrapper: "li"
})

errorLabelContainer

에러메세지들의 해당 무효필드 옆에 보여주는게 아니라 한곳에 묶어 보여줄때 이용된다.

출력을 원하는 위치의 엘리먼트 아이디를 써주면 된다.

$("#myform").validate({
errorLabelContainer: "#messageBox",
wrapper: "li",
submitHandler: function() { alert("Submitted!") }
})

errorContainer

기존 상세 에러메세지 외에 대표적 에러메세지를 보여줄때 사용한다.

예를 들어 아래와 같다.

아이디 : 아이디가 입력되지 않았습니다. <== 기존 상세에러메세지

비밀번호 : 비밀번호가 입력되지 않았습니다 <== 기존 상세에러메세지

***************************************************************

입력폼에 에러가 있습니다. 입력폼을 다시 확인하세요 <== 이 부분에 해당

***************************************************************

지정한 상세에러메세지가 모두 사라질 때까지 이 메세지는 사라지지 않는다.

errorContainer 로 선언한 것 중 errorLabelContainer 로 선언되지 않은 것이 이에 해당한다.

해당되는 메세지는 자동으로 입력되는 메세지가 아니다. 이건 원본의 데모페이지를 봐야 이해가 가능할거 같다.

http://docs.jquery.com/Plugins/Validation/validate 여기서 Options 탭을 눌러 검색

showErrors

에러처리를 하기전에 사용자에게 핸들을 넘겨준다. 그러므로 에러처리를 override 하거나 선행처리할 때 사용할 수 있다. 맨아래 팁이 이걸 응용한거다.

$(".selector").validate({
showErrors: function(errorMap, errorList) {
$("#summary").html("Your form contains "
+ this.numberOfInvalids()
+ " errors, see details below.");
this.defaultShowErrors();
} })

errorPlacement

기본값 : 무효한 필드 바로 뒤

에러 메세지의 위치를 지정할 수 있다. 이건 실험을 안해봤음. 뭐 되겠지 ^ ^;

$("#myform").validate({
errorPlacement: function(error, element) {
error.appendTo( element.parent("td").next("td") );
},
debug:true
})

success

이건 validClass 하고 똑같은 효과던데 차이가 뭔지 잘 모르겠다. 나중에 알아봐야겠다.. ㅜㅜ

$("#myform").validate({
success: "valid",
submitHandler: function() { alert("Submitted!") }
})

highlight

기본값 : errorClass 를 추가시킨다

필드가 Invalid 됐을때 어떻게 하이라이트 시킬까를 결정할 수 있다.

예를 들어 아래와 같이 페이드 인, 아웃 효과를 주는것도 가능하다 ^^

$(".selector").validate({
highlight: function(element, errorClass) {
$(element).fadeOut(function() {
$(element).fadeIn();
});
}
})

unhighlight

기본값 : errorClass 를 제거한다.

highlight 된걸 다시 되돌릴때 무엇을 할까를 지정할 수 있다.

아규먼트는 highlight하고 동일하다.

ignoreTitle

별 필요없는 거 같다. 뭐 제거될거란 이야기인가? ㅋ 사실 잘 모르겠다 ㅜㅜ

$(".selector").validate({
ignoreTitle: true
})




 

※ 팁 : invalidate 할때 페이지에 메세지를 뿌리는게 아니라 기존방식대로 경고창(alert)으로 띄우고 싶다면 아래처럼 옵션을 주면 된다.

클라이언트들이 구식방식을 선호할때가 있음 -_-;;;

jQuery.validator.setDefaults({
onkeyup:false,
onclick:false,
onfocusout:false,
showErrors:function(errorMap, errorList){
var caption = $(errorList[0].element).attr('caption') || $(errorList[0].element).attr('name');
alert('[' + caption + ']' + errorList[0].message);
}
});
< input type="text" name="mb_name" caption="이름" class="required" /> caption 은 임의로 정한 attribute 명입니다. caption="이름" 이런식으로 주면 됨

 

http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=72358

 

http://phpschool.com/link/tipntech/72358

Posted by 물색없는세상
2012. 9. 24. 18:07

eclipse를 사용하다 보면 jquery를 받아서 사용하다보면 Script의 Validate 오류가 나서 컴파일 시, 프로젝트가 정상적으로 작동하지 않을 경우가 있다.


이 때, 해결할 수 있는 방법은 아래와 같다.


[해당 project] --> [Properties] --> [JavaScript] --> [Include Path] --> [Source] --> [Excluded] --> [Edit] --> [Exclusion patterns] --> ["**/jquery*.js"를 입력 ]

 

http://biyam.tistory.com/24

Posted by 물색없는세상
2012. 9. 12. 10:02

출처 : http://snoopybox.co.kr/1622


댓글로 소개해주신 분이 계셔서 올려둡니다.

Universal Termsrv.dll Patch는 이름 그대로 Termsrv.dll 파일을 패치해주는 툴인데, 윈도우 클라이언트 제품군에서(XP, 비스타, 세븐 등) 원격 터미널 세션 제한을 패치해줍니다. 원래 클라이언트 제품군은 로그인 세션을 1개만 허용합니다. 만약 현재 로컬 콘솔로 로그인된 상태인데, 터미널로 접속이 들어오게 되면 로컬 연결은 끊어지게 됩니다. 또한 터미널로 다른 계정이 또 로그인 하게 되면, 기존 터미널 로그인은 끊어지게 됩니다.

즉 로컬이든 터미널이든 로그인 세션은 1개만 허용된다는 말입니다.

홈 페이지
http://deepxw.blogspot.com/2009/04/universal-termsrvdll-patch.html

다운로드


사용법은 간단합니다. 비트에 맞는 파일을 실행하셔서 패치하시고, 리부팅 한번 해주시면 됩니다.


윈도우 7의 경우 패치만 해주면 되는데, 윈도우 XP와 비스타는 안에 들어있는 레지스트리 파일도 병합해줘야 적용되는 듯 합니다.

아래 그림은 윈도우 7 SP1 32비트에 패치를 적용한 후 터미널 접속 테스트를 해본 것입니다. 로컬 포함해서 터미널 세션 4개를 연결했는데도 문제가 없었습니다.


다만 아쉬운 점이 하나 있다면, 동일 계정에 대한 다중 접속은 패치 적용이 안 되더군요. 그래도 여러 계정이 동시에 로그인 할 수 있다는 점에서 꽤 유용한 패치라 생각됩니다.

 

 

http://blog.naver.com/nawoo/80151988255

UniversalTermsrvPatch_20090425.7z

'OS' 카테고리의 다른 글

[Windows] 원격 데스크톱 연결 목록 지우기.  (0) 2012.09.12
Posted by 물색없는세상