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)