2011년 12월 12일 월요일

[Jsp][ 자바스크립트 ]스크롤 기억 아이패드


아이패드에서 스크롤을 기억할 필요가 있었다.
(페이지 이동시 전페이지의 스크롤을 기억할...)
document.body.scrollTop으로쿠키값을 대입하면
유독 아이패드에서는 제대로 될 때와 제대로 되지않은 경우가 발생하여,
타이머로 맞을때까지(오차1정도까지는 허용해주고 ) 재설정하도록 해보았다.

onload에서는 쿠키값을 읽어서 맞을때까지 화면을 재조정하고

<SCRIPT TYPE="TEXT/JAVASCRIPT">
function onload(){
//plan6이라는 frame이 onload될때 스크립트를 실행.
var strCook = document.cookie;//저장된 쿠키 값을 받아온다.
if(strCook.indexOf("!~")!=0) {
 var intS = strCook.indexOf("!~");
 var intE = strCook.indexOf("~!");
 var strPos = strCook.substring(intS+2, intE);//스크롤 위치를 구한다.
 //document.body.scrollTop = strPos;//스크롤 위치를 적용시킨다.
 if(strPos <= 0){
 return;
 }
 var diff=strPos-window.pageYOffset;
 if(diff > 30){
 document.body.scrollTop = strPos;
   TimeOutInterval = 10;
 }else{
 document.body.scrollTop = strPos;
 TimeOutInterval = 5;
 }
 if(diff > 2){
  setTimeout ("onload()", TimeOutInterval);
 }
}
}

스크롤 위치 쿠키에 저장하는건 각 필요 이벤트에 넣어줬다
Body의 onscroll에 넣어도 되려나...

function SetDivPosition()
{
             var abswindowbottom = 0;
 
   if (typeof(window.pageYOffset) == 'number')
    abswindowbottom = abswindowbottom + window.pageYOffset;
   else if (document.body && document.body.scrollTop)
       abswindowbottom = abswindowbottom + document.body.scrollTop;
   else if (document.documentElement &&                document.documentElement.scrollTop)
       abswindowbottom = abswindowbottom + document.documentElement.scrollTop;
  
   alert(abswindowbottom);
  var intY = abswindowbottom;
document.cookie = "yPos=!~"+intY+"~!";
}
</script>
</HEAD>
<BODY onload="onload()">

웹어딘가에서 얻은 어느 분들의 소스를 조금씩 합쳐서 우선 해결했다.
급하게 하다보니 출처를 모르겠다...

2011년 11월 8일 화요일

[Jsp] 파라미터 한글깨짐

톰캣의 server.xml을 열어서
8080포트 써있는 <>안에
 URIEncoding="UTF-8"를 추가 기입한다.

2011년 11월 4일 금요일

[Jsp][자바스크립트] CheckBox length undefined



체크박스선택 여부를 판단하려고 하는데,
체크박스 1개일 경우에는 length가 undefined 라고 출력.
우선은 아래처럼 바꿔봤더니 돌아감.

function check_checkBox() {
count = 0;
len = document.fmAdd.chkBig.length;
if (typeof len == "undefined") {
len = 1;
}

if (len == 1) {
if (document.fmAdd.chkBig.checked == true)
return true;

} else {
for ( var i = 0; i < len; i++) {
if (document.fmAdd.chkBig[i].checked == true) {
count++;
}
}
}
if (count == 0)
return false;
if (count > 1) {
alert("ひとつのみ移動可能です。");
return false;
}
}

2011년 11월 2일 수요일

[Jsp][자바스크립트] 최대 크기 팝업 띄우기, 중복 팝업 금지


최대크기로 팝업 열기, 중복 팝업 금지

win="";
function onMaxPop(URL){
if(!win.closed && win){
return;
}
win = window.open("", "", "scrollbars");
win.moveTo(0, 0);
win.resizeTo(screen.availWidth, screen.availHeight);
win.location =URL
}

2011년 10월 13일 목요일

[Jsp][자스] 이전 페이지로 돌아가기


history.back();

사용예

<input type="reset" value="CANCEL" onClick="history.back()">


부자되고 싶다.

2011년 10월 6일 목요일

[Jsp][HTML] CSS 스타일 버튼

아래와 같은 스타일을 만들어 놓고,

<style type="text/css">
.myButton {
color: #150;
font: bold 84% 'trebuchet ms', helvetica, sans-serif;
background-color: #fed;
border: 1px solid;
border-color: #696 #363 #363 #696;
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,
StartColorStr='#aabbccdd', EndColorStr='#aabbccdd' );
}

.myButtonh {
color: #100;
font: bold 84% 'trebuchet ms', helvetica, sans-serif;
border: 1px solid;
border-color: #696 #363 #363 #696;
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,
StartColorStr='#ffffff', EndColorStr='#ffeeddaa' );
border-color: #c63 #930 #930 #c63;
}
</style>


<input type="submit" value="選択削除" class=myButton
onmouseover="this.className='myButtonh'"
onmouseout="this.className='myButton'">

버튼 마우스 오버, 마우스 아웃에 스타일을 연결 시킨다.

더 참고할 만한 싸이트는 요기
http://www.webreference.com/programming/css_stylish/

100억, 우선 1억 ㅠㅠ

[Jsp][HTML] 공백 삽입

공백 문자 삽입
&nbsp;


2개이상의 공백문자 삽입은?


응용하자.
생각하자.

[Jsp][HTML] Form 태그 후 자동 줄 바꿈


<Form>태그를 사용하면 자동 줄바꿈이 일어난다.
스타일태그안에 아래내용을 추가하면 해결.

form {
display: inline;
}

100억, 우선 1억 ㅎ

2011년 10월 4일 화요일

[Jsp] 창 닫을 때 리프레쉬(refresh) 시키기


<script type="text/javascript">
function beforeClose() {
opener.location.href="chkTop.jsp";
}
</script>
<TITLE>리프레쉬연숩</TITLE>
</HEAD>
<BODY onbeforeunload="beforeClose()">

위처럼 onbeforeunload 에다 걸거나

아님 버튼 눌리거나 할 때 걸어도 되지 않을까 싶다.

리프레쉬를 시키기위해

pener.location.reload()를 사용해 봤으나

먼가 경고 메시지 박스가 떠서 요렇게 해봤더니 아직까진

문제 없이 움직인다.

목표 100억 우선은 1억 ㅋ

[Jsp][HTML] 자동 REFRESH

3초 간격으로 c.jsp가 자동 리프레쉬

<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=c.jsp">
</HEAD>

허나 껌뻑거림이 문제이다..

2011년 10월 3일 월요일

[Jsp]Can not issue data manipulation statements with executeQuery()

update 쿼리를 실행시키는데

stmt.executeQuery(sql)를 사용했더니 나온 에러

stmt.executeUpdate(query)를 사용하자.

100억

[Jsp][Html] target 태그

target="_self"      현재 브라우저,프레임
target="_blank"   새 브라우저에
target="_parent" 호출한 브라우저,프레임
 
target="_top"      창분할 무시 전체 브라우저,프레임

2011년 9월 29일 목요일

[Jsp] 커넥션 풀 사용 준비 / JOCL 설정 파일


1. 아래를 참조해서 필요 라이브러리를 설치한다.
http://soatofedora.blogspot.com/2011/09/linux-dbcp-pool-collections.html


2. 아래파일을 WEB-INF->classes폴더안에넣는다.


JOCL파일 샘플

<object class = "org.apache.commons.dbcp.PoolableConnectionFactory"
xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
<object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
<string value="jdbc:mysql://localhost:3306/testserver?autoReconnect=true"/>
<string value="root"/>
<string value="12345"/>
</object>
<object class="org.apache.commons.pool.impl.GenericObjectPool">
    <object class="org.apache.commons.pool.PoolableObjectFactory" null="true" />
    <int value="80" />  <!-- max active -->
    <byte value="1" />  <!-- when exhausted action, 0 = fail, 1 = block, 2 = grow -->
    <long value="2000" />  <!-- max wait -->
    <int value="10" />  <!-- max idle -->
    <boolean value="true" />  <!-- test on borrow -->
    <boolean value="true" />  <!-- test on return -->
    <long value="10000" />     <!-- time between eviction runs -->
    <int value="5" />   <!-- number of connections to test per eviction run -->
    <long value="5000" />    <!-- min evictable idle time -->
    <boolean value="true" />   <!-- test while idle -->
  </object>

  <object class="org.apache.commons.pool.impl.StackKeyedObjectPoolFactory">
    <int value="10" />
  </object>

  <string value="select now()" />  <!-- validation query -->
  <boolean value="false" />  <!-- default read only -->
  <boolean value="true" /><!-- default auto commit -->

</object>




2011년 9월 18일 일요일

[Jsp] 클라이언트의 IP주소 가져오는 메서드

ServletRequest 클라이언트의 IP주소 가져오는 메서드
  String clientAddr = request.getRemoteAddr();

[Jsp] Log 저장

로그파일 경로를 초기화 파리미터값에서 가져오기
  String filename = config.getInitParameter("FILE_NAME");

초기화 파라미터값은 web.xml에 등록해놓는다
  <init-param>
    <param-name>FILE_NAME</param-name>
    <param-value>C:\\logs\\myfilter.log</param-value>
   </init-param>

아...돈벌고싶다..
좋은하루~

2011년 9월 16일 금요일

[Jsp] SimpleTagSupport 상속 간단 클래스

package tool;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class StarLineTag extends SimpleTagSupport{
  public void doTag() throws JspException, IOException{
    JspContext context = getJspContext();
    JspWriter out = context.getOut();
    out.println("*****************************************<BR>");
    return;
  }
}
오타가 있을 수 있다.-_-;

컴파일전에는
톰캣의 lib폴더에 있는 jsp-api.jar파일을 Java/JDK(version)/jre/lib/ext에 복사해두자.

컴파일쌔리고

TLD파일에 클래스 등록하고

web.xml에 tld등록하고

고고고.

좋은하루~

[Jsp] 태그 파일 만드는 법

1. 만든 파일을 WEB-INF폴더아래 tags라는 서브디렉토리에 저장

2. 파일이름은 (커스텀액션명).tag 의 형식으로 한다.

3. 사용할 JSP파일에 다음 라인을 추가
   ->  <%@page contentType....................................>
         <%@taglib prefix="util" tagdir="/WEB-INF/tags" %>
        <HTML>
              ....
              <util:커스텀액션명/>




2011년 9월 15일 목요일

[Jsp] 태그 파일에서 사용 가능한 지시자


  • tag지시자:웹 컨테이너가 태그 파일을 처리할 때 필요한 정보를 기술
        예) <%@tag body-content="empty" %>//커스텀 액션이 본체를 가질 수 없음
  • include지시자:다른 태그 파일을 포함
  • taglib지시자:태그파일에서 사용할 다른 커스텀 액션의 태그 라이브러리에 대한 정보를 기술
  • attribute지시자:커스텀액션의 애트리뷰트에 대한 정보를 기술
  • variable지시자:커스텀액션의 변수에 대한 정보를 기술

[Jsp] 태그 클래스 설치 순서

1. 태그 클래스의 소스 코드를 작성한다.

2. 작성한 소스 코드를 컴파일 한다.

3. 컴파일 결과를 WEB-INF/classes 폴더 안에 넣는다

4. 태그 클래스의 정보를 TLD파일에 등록한다.
  -><short-name>tld파일이름</short-name>
       <tag>
          <name>커스텀액션이름</name>
          <tag-class>태그클래스이름</tag-class>
          <body-content>empty</body-content> //본체의 형태
       </tag>

5. TLD 파일은 WEB-INF폴더 및이나 그아래의 서브디렉토리에 저장

5. TLD파일을 web.xml파일에 등록한다.
  -><taglib>
        <taglib-uri>/taglibs/tools.tld<taglib-uri>
        <taglib-location>/WEB-INF/tlds/tools.tld</taglib-location>
      </taglib>

[Jsp] JSTL 포매팅 라이브러리


커스텀액션 사용방법
1.<fmt:formatDate> 액션


  <fmt:formatDate value="${date}" type="time" />
    -> 오후 1:11:11

  <fmt:formatDate value="${date}" type="date" dateStylet="long" />
   -> 2011년 8월 15일

  <fmt:formatDate value="${date}" type="date" pattern="YYYY/MM/DD" />
   -> 2011/08/15

p454

2. <fmt:formatNumber> 액션


  <fmt:formatNumber value="1234500" groupingUsed="true" />
   -> 1,234,500
  
  <fmt:formatNumber value="10.5" pattern="#.00" />
   ->10.50

3. <fmt:setLocale> 액션


  <fmt:setLocale value="ko_kr" />

4. <fmt:timeZone> 액션


  <fmt:timeZone value="America/New_York" />
   타임존 얻기
   -> String arr[] = TimeZone.getAvailablesIDs();

 


[Jsp] JSTL 코어라이브러리

커스텀액션 사용방법
1.<c:set>액션

  <c:set var="num" value="100" scope="request" />
   ......
   ......
   ${num}

2.<c:remove>액션

  <c:remove var="num" scope="request" />

3. <c:if>액션

  <c:if test="${param.NUM1 - param.NUM2 >= 0}" >
   ....
   </c:if>
   <c:if test="true"> 요건 무조건 참!!
    무조건 거짓은 아주 깊게 심오하게  생각, 추측하면 알수 있을 듯..

4. <c:choose> 액션

  <c:choose>
    <c:when test= "${param.NUM == 0 }">
      ....
    </c:when>
     ....
    <c:otherwise>
     .....
    </c:otherwise>
  </c:choose>

5. <c:forEach> 액션

  <c:forEach var="cnt"  begin="1" end="10" step="2">
    <FONT size=${cnt} > 소녀시대짱! </FONT><BR>
  </c:forEach>

  <c:forEach var="str" items="${배열이름}">
     ${str}
  </c:forEach>

6. <c:forTokens> 액션

  <c:forTokens var="love" items="태연*유리/제시카-수지?" delims="*/-?">
     ${love} <br>
  </c:forTokens>

7. <c:catch> 액션

  <c:catch var="e">
    <% int result = num1/ num2; % >
        result = <%=result%>
    </c catch>
  <c:if test="${e!=null}">
        error = ${e.message}
  </c:if>

8. <c:redirect> 액션


  <c:redirect url="http://soato387.jsp">
    <c:param name = "NUM1" value="5" />
  </c:redirect>

9. <c:import> 액션

  <c:import url="http://soato387.jsp">
    <c:param name = "NUM1" value="5" />
  </c:import>

10.<c:out> 액션


  <c:out value="<FONT size 7> 소녀시대</FONT> "/>
  <c:out value="<FONT size 7> 소녀시대</FONT> " escapeXml = "false/>
   차이점은?
  











 

[JSP] JSTL 라이브러리

코어 : 접두어 c
  -> 일반 프로그래밍 언어에서 제공하는 것과 유사한 변수 선언,
       실행흐름의 제어기능을 제공하고,
       다른 JSP페이지로 제어를 이동하는 기능을 제공
       URI = "http://java.sun.com/jsp/jstl/core"

포매팅 : 접두어  fmt
 ->  숫자, 날짜, 시간을 포매팅하는 기능과 국제화, 다국어 지원 기능을 지원
       URI = "http://java.sun.com/jsp/jstl/fmt"

데이터베이스 : 접두어 sql
 ->  데이터베이스의 데이터를 입력/수정/조회/삭제 기능
       URI = "http://java.sun.com/jsp/jstl/sql"

XML처리 : 접두어 x
 ->  XML문서를 처리할 때 필요한 기능을 제공
       URI = "http://java.sun.com/jsp/jstl/xml"

함수 : 접두어 fn
 ->  문자열을 처리하는 함수를 제공
       URI = "http://java.sun.com/jsp/jstl/functions"

사용 예 )
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>