TimeZone tz = TimeZone.getTimeZone("GMT+09:00");
Calendar oCalendar = Calendar.getInstance(tz); // 현재 날짜/시간 등의 각종 정보 얻기
System.out.println("현재 년: " + oCalendar.get(Calendar.YEAR));
String year =Integer.toString(oCalendar.get(Calendar.YEAR));
System.out.println("현재 월: " + (oCalendar.get(Calendar.MONTH) + 1));
String month = Integer.toString(oCalendar.get(Calendar.MONTH) + 1);
System.out.println("현재 일: " + oCalendar.get(Calendar.DAY_OF_MONTH));
String day=Integer.toString(oCalendar.get(Calendar.DAY_OF_MONTH));
System.out.println("현재 시: " + oCalendar.get(Calendar.HOUR_OF_DAY)); // 24시간제
이 블로그 검색
2011년 1월 30일 일요일
2011년 1월 27일 목요일
임의 정렬
8i(or higher) 이후에 참 편리한 기능이 많이 추가되었는데
그 가운데 하나가 ORDER BY 절에서 함수를 사용할 수 있다는 것입니다.
SELECT *
FROM tab
ORDER BY DECODE(book,'Y','1','B','2','U','3','A','4')
이렇게 적어주시면 book 컬럼의 Y 값이 정렬될 때는 1 로 치환되어 가장 앞에 오게 됩니다.
DECODE 함수로 적어주기에 복잡한 규칙이라면,
CASE 구문을 사용하셔도 됩니다.
여러 SQL에서 공통으로 사용한다면 사용자정의 함수를 생성하여 활용할 것을 추천해 드립니다.
정렬하는 규칙이 변경되거나 그 양이 매우 많다면
정렬 기준만을 담은 테이블을 만들고 조인하여 사용하는 것이
인덱스 활용면에서 더 좋을 것입니다.
그 가운데 하나가 ORDER BY 절에서 함수를 사용할 수 있다는 것입니다.
SELECT *
FROM tab
ORDER BY DECODE(book,'Y','1','B','2','U','3','A','4')
이렇게 적어주시면 book 컬럼의 Y 값이 정렬될 때는 1 로 치환되어 가장 앞에 오게 됩니다.
DECODE 함수로 적어주기에 복잡한 규칙이라면,
CASE 구문을 사용하셔도 됩니다.
여러 SQL에서 공통으로 사용한다면 사용자정의 함수를 생성하여 활용할 것을 추천해 드립니다.
정렬하는 규칙이 변경되거나 그 양이 매우 많다면
정렬 기준만을 담은 테이블을 만들고 조인하여 사용하는 것이
인덱스 활용면에서 더 좋을 것입니다.
2011년 1월 21일 금요일
참장공2
|
2011년 1월 20일 목요일
2011년 1월 18일 화요일
비밀번호 유효성 체크
if(/[a-zA-Z]/.test(ObjUserPassWord)){//문자가 있는지 확인
if(/[0-9]/.test(ObjUserPassWord)){//숫자가 있는지 확인
//if(/[!,@,#,$,%,^,&,*,?,_,~]/.test(ObjUserPassWord)){//특수문자가 있는지 확인
//alert('특수문자는 사용할 수 없습니다.');
//return false;
//}else{
return true;
//}
}else{
alert('비밀번호는 6~12자 영문과숫자가 조합되어야합니다.');
return false;
}
}else{
alert('비밀번호는 6~12자 영문과숫자가 조합되어야합니다.');
return false;
}
if(/[0-9]/.test(ObjUserPassWord)){//숫자가 있는지 확인
//if(/[!,@,#,$,%,^,&,*,?,_,~]/.test(ObjUserPassWord)){//특수문자가 있는지 확인
//alert('특수문자는 사용할 수 없습니다.');
//return false;
//}else{
return true;
//}
}else{
alert('비밀번호는 6~12자 영문과숫자가 조합되어야합니다.');
return false;
}
}else{
alert('비밀번호는 6~12자 영문과숫자가 조합되어야합니다.');
return false;
}
2011년 1월 17일 월요일
부모창 reload
팝업창에서 아래 코드를 실행후에 다시 아래 코드를 실행하면 부모창이 reload되지 않는다.
왜냐하면 현재(자식창)창을 reload해서 부모창이 없어져버렸기 때문이다.
opener.parent.location.reload();
window.location.reload();
왜냐하면 현재(자식창)창을 reload해서 부모창이 없어져버렸기 때문이다.
opener.parent.location.reload();
window.location.reload();
xml처리
result=xmlhttp.responseXML.documentElement.getElementsByTagName("code");
if(result[0].firstChild.nodeValue=='success'){
alert("삭제하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
document.sForm.action = "/adm/memberMgr/memberList.jsp";
document.sForm.submit();
return;
}else if(result[0].firstChild.nodeValue=='fail'){
alert("오류가 발생하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
document.sForm.action = "/adm/memberMgr/memberList.jsp";
document.sForm.submit();
return;
}else{
alert("오류가 발생하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
document.sForm.action = "/adm/memberMgr/memberList.jsp";
document.sForm.submit();
return;
}
jsp에서 xml생성
- jsp에서 xml생성 :
(이유는 모름)
<%@ page contentType="text/xml; charset=euc-kr" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>
<%@ page import = "util.Util" %>
<%@ page import = "util.DB" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DB.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from COMMENT order by ID");
%>
<result>
<code>success</code>
<data><![CDATA[
[
<%
if (rs.next()) {
do {
if (rs.getRow() > 1) { %>
,
<%
}
%>
{
id: <%= rs.getInt("ID") %>,
name: '<%= rs.getString("NAME") %>',
content: '<%= rs.getString("CONTENT") %>',
mclass: '<%= rs.getInt("mClass") %>'
}
<%
} while(rs.next());
}
%>
]
]]></data>
</result>
<% } catch(Throwable e) {
out.clearBuffer();
%>
<result>
<code>error</code>
<message><![CDATA[<%= e.getMessage() %>]]></message>
</result>
<% } finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (stmt != null) try { stmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
<%@ page contentType="text/xml; charset=euc-kr" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>
<%@ page import = "util.Util" %>
<%@ page import = "util.DB" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DB.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from COMMENT order by ID");
%>
<result>
<code>success</code>
<data><![CDATA[
[
<%
if (rs.next()) {
do {
if (rs.getRow() > 1) { %>
,
<%
}
%>
{
id: <%= rs.getInt("ID") %>,
name: '<%= rs.getString("NAME") %>',
content: '<%= rs.getString("CONTENT") %>',
mclass: '<%= rs.getInt("mClass") %>'
}
<%
} while(rs.next());
}
%>
]
]]></data>
</result>
<% } catch(Throwable e) {
out.clearBuffer();
%>
<result>
<code>error</code>
<message><![CDATA[<%= e.getMessage() %>]]></message>
</result>
<% } finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (stmt != null) try { stmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
ajax jsp단
returnVal="ok";
out.print(returnVal);
주의 : jsp에서 서블릿으로 변환시 주석이나 엔터키가 모두 out.write("\r\n"); 등으로
변환되므로 결과 파일은 공백과 엔터키가 많이 생성됨.
다른 방식으로 return해야 할 것 같은데...
out.print(returnVal);
주의 : jsp에서 서블릿으로 변환시 주석이나 엔터키가 모두 out.write("\r\n"); 등으로
변환되므로 결과 파일은 공백과 엔터키가 많이 생성됨.
다른 방식으로 return해야 할 것 같은데...
2011년 1월 16일 일요일
인코딩
- 웹브라우져에게 인코딩 정보 전달
response.setContentType("text/html; charset=euc-kr");
내용물의 형식을 알려주는것
text의 html 이고, charset 은 euc-kr 이라고 웹 브라우저에게 알려주는 구문이다.
- 이걸 해 놓지 않으면 브라우져가 알아서 문서를 인코딩함
- get방식에서 받아온 정보 인코딩 하기
기본적으로 웹 환경은 문자를 무조건 iso-8859-1 이라는 케릭셋으로 인코딩해서 전송한다.
getParameter로 받아온 값을 재처리를 해주어야한다.
iso-8859-1 -> euc-kr
첫번째로 String name 으로 받은 iso-8859-1 로 전송된 넘어온 파라메터 값을
byte 단위로 쪼갠다.
byte[] b = name.getBytes("iso-8859-1");
쪼개어 배열 b 에 저장된 데이터를 euc-kr 로 재조합하여 변수 name 에 넣는다.
name = new String(b, "euc-kr");
- post방식으로 넘어온 정보 인코딩 하기
get 방식은 iso-8859-1 로 들어온것을 byte 단위로 쪼개었다가 다시 재조합하는 과정을 거치는데 반해
post 방식에서는 request.setCharacterEncoding("euc-kr"); 한줄로 간단하게 처리가 됨을 알 수 있다.
더불어 파라메터 값이 하나가 아니고 여러개일때 get방식에서는 파라메터 하나하나를
각각 처리 해주어야하지만 post 방식에서는 저 한줄만으로 모두 처리가 되므로 아주 편리하다.
- 웹브라우져에 보낼 데이터 인코딩 하기
ajax 한글처리
- 요청 페이지
//쿼리스트링 생성
var queryString="";
var frm=document.forms[0];
var numberElements=frm.elements.length-1;
for(var i=0;i<numberElements;i++){
if(i<numberElements-1){
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
}else{
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
xmlhttp.open("POST","/adm/memberMgr/member_modi_save.jsp",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
xmlhttp.send(queryString);
- 처리페이지
request.setCharacterEncoding("euc-kr");
- 설명
- post로 전송한다고 가정하면 쿼리 스트링에서 encodeURIComponent()로 utf-8로 인코딩
- setRequestHeader()에서 charset을 utf-8로 설정
- 처리페이지에서 request.setCharacterEncoding("euc-kr")로 설정
참고로, 제우스6, 제우스설정에 euc-kr로 된 상태로 테스트하였음
ajax post 요청
document.getElementById("progressOwnArea").style.visibility="visible";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status!=200)//오류
{
alert("오류가 발생하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
return;
}
if (xmlhttp.readyState==4 && xmlhttp.status==200)//수정 성공
{
//alert("수정하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
window.parent.location.reload();
window.location.reload();
return;
}
}
//쿼리스트링 생성
var queryString="";
var frm=document.forms[0];
var numberElements=frm.elements.length-1;
for(var i=0;i<numberElements;i++){
if(i<numberElements-1){
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
}else{
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
xmlhttp.open("POST","/adm/memberMgr/member_modi_save.jsp",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
xmlhttp.send(queryString);
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status!=200)//오류
{
alert("오류가 발생하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
return;
}
if (xmlhttp.readyState==4 && xmlhttp.status==200)//수정 성공
{
//alert("수정하였습니다.");
document.getElementById("progressOwnArea").style.visibility="hidden";
window.parent.location.reload();
window.location.reload();
return;
}
}
//쿼리스트링 생성
var queryString="";
var frm=document.forms[0];
var numberElements=frm.elements.length-1;
for(var i=0;i<numberElements;i++){
if(i<numberElements-1){
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
}else{
queryString+=frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
xmlhttp.open("POST","/adm/memberMgr/member_modi_save.jsp",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
xmlhttp.send(queryString);
a:hover
- <ul>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- <li><a href="#">5</a></li>
- <li><a href="#">6</a></li>
- <li><a href="#">7</a></li>
- <li><a href="#">8</a></li>
- <li><a href="#">9</a></li>
- <li><a href="#">10</a></li>
- </ul>
- ul {
- list-style:none;
- float:left;
- display:inline;
- }
- ul li {
- float:left;
- }
- ul li a {
- float:left;
- padding:4px;
- margin-right:3px;
- width:15px;
- color:#000;
- font:bold 12px tahoma;
- border:1px solid #eee;
- text-align:center;
- text-decoration:none;
- }
- ul li a:hover, ul li a:focus {
- color:#fff;
- border:1px solid #f40;
- background-color:#f40;
- }
위내용을 정리해보면,
- 목록을 우선
float시켜서 가로로 배열하고, - 각
li들의a값을 이용해서 width 값을 고정시키고, a에 비활성화 상태의 스타일을 정의하고,a의hover선택자에서 활성화 상태의 스타일을 정의
a태그 밑줄없애기
HTML의 a태그로 만들어진 링크에는, 기본적으로 항상 밑줄(Underline)이 붙습니다.
요즘에는 링크에서 밑줄을 지우는 것이 일반적입니다. 링크에서 밑줄을 삭제하려면
style="text-decoration:none"
이라는 스타일을 지정하면 됩니다. 또는 클래스를 만들어 지정해 주어도 됩니다.
그런데 text-decoration:none 을 지정해도, 아주 복잡한 웹페이지의 경우에는 링크가 없어지지 않는 경우가 있습니다. CSS 속성들이 서로 뒤엉켜 있기 때문입니다. 이때는
!important
이라는 (느낌표+important) 구문을 추가하여 강제로 지정해야 합니다. 다음 예제와 같습니다:
/* 링크에서 밑줄 없애기 */
a.no-uline { text-decoration:none }
/* 마우스 지나갈 때만 삭제 + 강제로 없애기 */
a.noul:hover { text-decoration:none !important }
요즘에는 링크에서 밑줄을 지우는 것이 일반적입니다. 링크에서 밑줄을 삭제하려면
style="text-decoration:none"
이라는 스타일을 지정하면 됩니다. 또는 클래스를 만들어 지정해 주어도 됩니다.
그런데 text-decoration:none 을 지정해도, 아주 복잡한 웹페이지의 경우에는 링크가 없어지지 않는 경우가 있습니다. CSS 속성들이 서로 뒤엉켜 있기 때문입니다. 이때는
!important
이라는 (느낌표+important) 구문을 추가하여 강제로 지정해야 합니다. 다음 예제와 같습니다:
/* 링크에서 밑줄 없애기 */
a.no-uline { text-decoration:none }
/* 마우스 지나갈 때만 삭제 + 강제로 없애기 */
a.noul:hover { text-decoration:none !important }
2011년 1월 13일 목요일
hidden visiable
- visibility는 대상을 보이게 또는 보이지 않게 한다.
화면에 보이거나 보이지 않는다.
.notWaiting{
visibility:hidden;
}
.waiting{
visibility:visible;
}
- display
style="display:none"
document.getElementById("memName").style.display="";//보이게
document.getElementById("memName").style.display="none";//보이지 않게
2011년 1월 8일 토요일
2011년 1월 4일 화요일
a태그에 이미지 테두리 없애기
style="border: none;"
<a href="/adm/admIndex.jsp"><img style="border: none;" src="/images/adm/logo.gif" alt="로고" width="240" height="57"></a>
<a href="/adm/admIndex.jsp"><img style="border: none;" src="/images/adm/logo.gif" alt="로고" width="240" height="57"></a>
피드 구독하기:
덧글 (Atom)


