Servers 에서 설정한 톰켓서버 더블클릭 하고...
Server modules without publishing 체크한 위에 보면...
Open launch configuration 이라고 있는데... 클릭해서 창을 띄운 후
Classpath 탭에 Bootstrap Entries 에서 Add External JARs... 로
톰캣 디렉토리 lib 폴더에 있는 servlet-api.jar 를 추가 하니까...
해결(?) 되네요...
javax.servlet.Filter 를 찾는것이니...
일단 위의 에러는 나지 않습니다...

 

필요한  오픈 컴포넌트

ajaxfileupload.js

http://www.phpletter.com/Our-Projects/AjaxFileUpload/

 

 

  스크립트 부분

 function ajaxFileUpload(index)
{
 var filePath = document.fileUploadForm.elements["file_img_"+index].value;
 if ( !(filePath.match(/\.(gif|jpg|jpeg|png)$/i)) ){ 
  modal.alert("이미지 파일을 선택해주세요.");
  return true;
 }
 
 $.ajaxFileUpload
 (
  {
   url:'주소',
   secureuri:false,
   fileElementId:'file_img_'+index,
   dataType: 'json',    
   success: function (data, status)
   {
       //처리프레서스

      //data  json 객체 이미 처리되어 넘어옴
     },
   error: function (data, status, e)
   {
    alert(e);
   }
  }
 )
 return false;
}

 

# 작동 방식

페이지에 파일 input 박스를 찾는다 [이름지정]

그후 아이프레임 만든후 넘어온 데이터를 success에다가 데이터를 넣어준다.

 

ps : iframe가 안돼는 부라우저에서는 실행 불가능할것으로 예상된다.

 

 

참고 자료

http://whitememo.tistory.com/167

http://malsup.com/jquery/form/progress3.html

 

 

한번에 10개 데이터 받아와 5개식층을 지어 만드는 테크

 

<c:set  var="listLength"  value="${fn:length(resultList)%5}"  /> 
<c:out value="${fn:length(resultList)/5}"></c:out> <br/>
<c:forEach items="${resultList}" var="result" varStatus="status">
 <c:if test="${status.count ==1}">
 start
 </c:if>
 <c:out value="${(status.count) %5}"/>
    내용
 <c:if test="${status.count %5==0 and status.count !=1}">
  end
 </c:if>
 </br>
</c:forEach>
<c:out value="${(fn:length(resultList)%5 ) + 1 }" />
<c:set  var="tempCnt"  value="${(fn:length(resultList)%5 ) + 1 }"  />
<c:forEach begin="${tempCnt}" end="5"  varStatus="status"> 
 <c:out value="${(tempCnt) %5}"/>
    내용
 <c:if test="${tempCnt %5==0}">
  end
 </c:if>
 <c:set  var="tempCnt"  value="${tempCnt+1}"  />
 </br>
</c:forEach>

 


Expression Language는 JSP에서 기본으로 지원한다
세팅해야 할 것은 JSTL( JavaServer Pages Standard Tag Library ) 이다

1. 다운로드
http://tomcat.apache.org/ - Taglibs - Standard - JSTL 1.1 download - binaries - jakarta-taglibs-standard-1.1.2.zip

2. 설치

다운로드 받은 파일에 압축을 풀고 lib 폴더의 jstl.jar 와 standard.jar 파일을 /WEB-INF/lib 에 복사 후
JSP 파일 상단에 다음의 지시문을 추가한다
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
( core 태그 lib만 추가하였고 그외 fmt, sql, x 태그를 사용하기 위해선 지시문을 추가해야 한다 )
tip) 이클립스에서 JSP 생성시 자동으로 소스 추가하는 방법
window - Prefrences - Web - JSP Files - Templates - JSP HTML에 내용 추가

3. Expression language

EL이란 JSP에서 저장객체를 출력할때 스크립팅을 전혀 쓰지 않을 수 있는 기술이다
이것으로 인해 <%=request.getParameter("name")%> 와 같은 스크립팅 들을 쓸필요가 없어진다
(1) 저장객체 접근

${param.name} => request.getParameter("name");

${member} => request.getAttribute("member");

저장객체의 attribute 에 자동으로 접근하는데
자동검색순위는 page, request, session, application 순이다

${member.name} => Member m = (Member)request.getAttribute("member");
m.getName();

attribute 저장된 member의 name속성(또는 키)에 접근
도트(.) 의 왼쪽은 Beans 이거나 Map 타입이어야 한다


$
{list["0"]} => List list = (List)request.getAttribute("list");
list.get(0);
attribute 저장된 list를 가져온다
[]안에 값은 list의 키값 or 프로퍼티명 or 인덱스이다
[]의 왼쪽은 Map, Beans, 배열, List 타입이 올 수 있다

여기서 알아야 할 점이 하나 있는데 EL에서는 해당값이 null이거나 공백일 경우에는
아무 내용도 표시하지 않고 에러도 발생하지 않는다..

(2) 연산자
EL은 연산자들을 사용할 수 있다. 예제는 JSTL에서 같이 사용하는걸 보자

1) 산술연산자 : + - * / (div) % (mod)
2) 논리연산자 : &&(and) ||(or) !(not)
3) 관계연산자 : ==(eq) !=(ne) <(lt) >(gt) <=(le) >=(ge)
4) 삼항연산자 : ?:
예) ${colors == null ? "transparent" : colors}

5) 그 외 예약어 : true, false, null, instanceof, empty( null이거나 공백일때 )

4. JSTL

core태그 중에서 유용한 것들만 살펴보자
모든 내용을 보고 싶다면 JSTL 매뉴얼 참조
태그에 진하게 표시된 속성은 필수 항목이다

(1) <c:out>

단순히 내용을 출력하는 기능이다

<c:out value="${member.name}" default="이재원" />

위와 과 같이 쓸 경우 일반적으로 ${member.name} 을 쓴것과 같지만
${member.name}이 null일 경우 dafault에 있는 값으로 대채한다

(2) <c:set>

저장객체의 setAttriubte 기능을 한다

<c:set var="addr" value="myaddr" scope="session" />
<c:set var="no" value="${member.age+1}" />
첫번째는 session 에 addr 이란이름으로 myaddr 스트링을 저장한 것이다
두번째는 no 이란이름으로 member.age+1으로 산술연산된 값을 저장하는데
scope를 생략하면 기본으로 page에 저장된다

(3) <c:remove>
removeAttribute의 기능을 한다

<c:remove var="no" scope="page" />

지정된 scope의 no란 이름이 attribute를 remove한다
scope를 생략할 경우 모든 범위의 attribute 가 지워진다


(4) <c:if>

if 조건문을 사용한다.. 단 else if 와 else는 지원하진 않고 유사한 <c:choose> 가 존재한다

<c:if test="${member.age < 20}" var="result" scope="page">
당신은 미성년자입니다
</c:if>
<c:if test="${!empty list}" >
content
</c:if>

test에서 조건을 검사하고 true 일 경우에만 <c:if>태그안의 내용이 보여진다
여기서 EL 의 연산자들을 쓸 수 있다!!

var는 조건을 검사하고 리턴되는 boolean값을 저장하는 attribute이름이고
scope는 var가 저장되는 범위입니다. scope가 없을시 기본값은 page이다


(5) <c:choose>

if, else if, else 와 유사하다. 아니 똑같다고 봐도 된다
<c:choose> 태그안에는 <c:when> 과 <c:otherwise>가 들어간다
<c:choose>
<c:when test="${vo.type==1}">
<img src="<%=cp%>/images/antenna/type1.jpg" />
</c:when>
<c:when test="${vo.type==2}">
<img src="<%=cp%>/images/antenna/type2.jpg" />
</c:when>
<c:when test="${vo.type==0 or vo.type==3}">
<img src="<%=cp%>/images/antenna/type_ment.jpg" />
</c:when>
<c:otherwise>
<img src="<%=cp%>/images/antenna/type_heart.jpg" />
</c:otherwise>
</c:choose>

<c:choose>안에서 순서대로 <c:when> 의 조건문을 검사해 true가 나오면
해당 <c:when> 태그안에 내용을 보여주고 <c:choose>문은 끝나게 된다

만약 모든 <c:when>의 조건문이 false일 경우 <c:otherwise>안에 내용을 보여주게된다


(6) <c:forEach>

Collection을 반복할때 쓰인다. 게시판 같은 반복적인 처리를 할때 매우 유용하다

지원되는 컬렉션을 다음과 같다
Arrays ( 배열 )
java.util.Collection
java.util.Iterator
java.util.Enumeration
java.util.Map

<table>
<c:forEach items="${list}" var="notice" varStatus="status">
<tr>
<td>${status.count}</td>
<td>${notice.title}</td>
<td>${notice.writer}</td>
<td>${notice.wdate}</td>
<td>${notice.readcount}</td>
</tr>
</c:forEach>
</table>

items는 Collection 객체를 말한다
var는 Collection에서 객체를 하나씩 가져올때마다 담는 객체다
객체가 Beans일 경우 Beans클래스를 자동으로 찾아 담는다
varStatus는 일련의 속성들을 정의한 객체다 ( javax.servlet.jsp.jstl.core.LoopTagStatus )

다음은 일반적은 for문 처럼 사용한 예다

<c:forEach var="x" begin="0" end="10" step="2">
${x},
${x*x}
</c:forEach>
(7) <c:forTokens>

<c:forEach> 와 같이 반복 태그로 이것은 StringTokenizer 클래스를 이용한다.. 그다지 쓸일은 없다
구분자( delims ) 를 공백, 쉼표, 마침표 로 한 예이다

<c:forTokens items="${param.text}" delims=" ,." var="word" begin="1" end="10" step="1" >
${word}
</c:forTokens>

 

 

 1. 스프링 XML 설정

 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>

 설명

리턴값중 text 일경우 UTF-8형태를 가추라는 부분

 

 

 2. 전송부 jsp - script

 

function fn_Ajax(){
$.ajax({
type: 'post'
, async: true
, url: '/admin/templet/templetAjax.do'
, data: $("#listForm").serialize()
, beforeSend: function() {
//$('#ajax_load_indicator').show().fadeIn('fast');
//alert("1");
}
, success: function(data) {
// var response = data.trim();
// console.log("success forward : "+response);
// 메세지 할당
alert(data);
//alert(response);
/*
switch(response) {
case "nomatch":
msg = "아이디 또는 비밀번호가 일치하지 않습니다."; break;
case "fail":
msg = "로그인에 실패 했습니다."; break;
default :
msg = "존재하지 않는 사용자입니다."; break;
} */
}
, error: function(data, status, err) {
alert('서버와의 통신이 실패했습니다.');
}

, complete: function() {
//$('#ajax_load_indicator').fadeOut();
// alert("2");
}

});



}

 설명

jsp 단 스크립트로 전송하는 AJAX 부분  JQUERY 이용 하였다. 

 

 

 3. JAVA 구현 및 RESPON 부분

 

@RequestMapping(value="/admin/templet/templetAjax.do", method = RequestMethod.POST)
public @ResponseBody String getTime(@ModelAttribute("templetVO") TempletVO templetVO,@ModelAttribute("SessionVO") SessionVO sessionVO) {
String result = "Time for is " + new Date().toString();
return result;
}

 설명

 위함 수부분에 이노테이션설정

 

 

 

 1. 체크박스 선택 유무   :::::   방법 1

 var iCkecked = 0 ;
   $("input[name^=ckbTemplet]").each(function(){
        if(this.checked){
         iCkecked++;
        }
       });
   if(iCkecked ==0 ){
    modal.alert(" 파일을 선택해주세요.");
    return;
   }

 

 체크박스 선택 유무 ::::: 방법 2

 

 $('input:checkbox[name=userGroup]:checked').length

 

 

 라디오 값 가져오기
 
$('input:radio[name=timeType]:checked').val()

 

 

 

 

 2.  trim

  var str = $.trim(value);

 

 

 

3. 선택된 값 읽기

 

$("#select_box option:selected").val();
$("select[name=selectbox]").val();

jQuery로 선택된 내용 읽기
$("#selectbox option:selected").text();

 

 

 

 

 

 

 

http://hanjiq.egloos.com/2358924 기초 예제

http://pat.im/906 -박스 서서히 사라지는 예제

http://rubis.tistory.com/294  ajax 예제

http://leandrovieira.com/projects/jquery/lightbox/ 이미지 박스에 하이라이트

http://www.mimul.com/pebble/default/2007/11/10/1194695220000.html  이미지 로더 ? 반만 다운후 다보이게

포문

 <html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
 src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">    function test() {        var a = 0;        var su =1;        $('div:[id^=div]').each(//각각div:안에 있는  div로 시작()^=)하는 id 호출함                function(){                    a +=0.25;//this는 자바 속성인데 $(안에 들어가면 jquery 추가됨)                    $(this).html(su++).css('background', 'rgba(255,0,0,'+a+')')                    .css('textAlign', 'center');//html(이안에 html로 쓰겠다는 소리)                })    }</script>
</head>
<body>
 <input type="button" value="바꾸기" onclick="test()">
 <div id="div1" style="border: 1px dotted; width: 300px; height: 50px;"></div>
 <div id="div2" style="border: 1px dotted; width: 300px; height: 50px;"></div>
 <div id="div3" style="border: 1px dotted; width: 300px; height: 50px;"></div>
 <div id="div4" style="border: 1px dotted; width: 300px; height: 50px;"></div>
</body>
</html>

 

http://findfun.tistory.com/404  --예제 많음

--> http://findfun.tistory.com/421  ---- trim

--> http://findfun.tistory.com/414   ----- 오브젝트 배열로 만들기 ~

--> http://findfun.tistory.com/410 ---숫자 체크

--> http://findfun.tistory.com/408 -- isPlainObject()  오브젝트 가 맞는지 확인

--> http://findfun.tistory.com/403 -- each 반복문 ..

--> http://findfun.tistory.com/401   -- ajax 할때 파라메타 쉽게 만들기

--> http://findfun.tistory.com/400 -- ajax post

http://blog.naver.com/tweety2411?Redirect=Log&logNo=100161568560   ajax 파일 업로드

http://malsup.com/jquery/form/#file-upload 파일 업로드

http://stackoverflow.com/questions/2259551/spring-3-0-making-json-response-using-jackson-message-converter?rq=1  

전자정부프레임워크 공통컴포넌트 첫난관! 전자정부프레임워크

2012/04/09 17:25

복사http://blog.naver.com/9942077/150136043232

에러 내용 :

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener


전자정부프레임워크의 개발 준비를 마친 후 기본 프로젝트를 생성하고 공통컴포넌트를 추가하면 이와같은 에러가 빡 난다!!


아놔~ 이거 뭐야..


ClassNotFoundException

pom.xml

즉, tomcat을 띄울때 이넘이 jar파일(pom.xml에 설정해준(dependencies로))을

설정


프로젝트의 오른쪽마우스 클릭 -> Properties -> Deployment Assembly -> Add -> Java Build Path Entries -> Next -> Maven Dependencies -> Finish

package util;

import java.io.File;

public class ShowFileList  {

 public static void main(String[] args) throws Exception {
   try {
           

     String dir = "D";//
             (new ShowFileList()).showFileList(dir);

         } catch (Exception ex) {
             ex.printStackTrace();
         }


 }
 
 public void showFileList(String path) throws Exception {
        File dir = new File(path);
        File[] files = dir.listFiles();

        for (int i = 0; i < files.length; i++) {
            File file = files[i];

            if (file.isFile()) {
             String strFileName = file.getCanonicalPath().toString().toLowerCase();
             if( strFileName.indexOf(".svn") == -1 &&  (strFileName.indexOf(".java") > -1  || strFileName.indexOf(".xml") > -1)   )
              System.out.println("[File]"+file.getCanonicalPath().toString().replace("\\", "/").replace(".java", ".class"));
              
            } else if (file.isDirectory()) {
               // System.out.println("[Directory]"+file.getCanonicalPath().toString());
                try {
                    showFileList(file.getCanonicalPath().toString());
                } catch (Exception e) {
                }
            }

        }
    }

 
 
 
}


java.util.Date d = new java.util.Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    //marketSearchBean.setStartDt(DateCalcUtil.addDate(-365, df.format(d)));    
    //marketSearchBean.setEndDt(DateUtil.toDate());

인터넷 익스플로러에서 작업을 하는 중에,
AJAX로 만들어진 요청이 계속해서 같은 값만을 불러 오는 경우가 발생..

익스플로러에서 같은 파라미터 값을 갖는 URL 요청을,
캐쉬되어 미리 저장하고 있던 페이지로만 반복해서 리턴해서 발생한 문제였다.

이러한 문제의 해결법은, 아래와 같은 방법이 있을 수 있겠다.

response.setDateHeader("Expires", -1);
response.setHeader("Pragma", "no-cahce");
response.setHeader("Cache-Control", "no-store"); //HTTP 1.0
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1

또는,

ajax 요청에 사용되는 URL 끝에 유니크한 파라미터 값을 붙여서 날리는 방법이 있다.

ex) Math.round(Math.random()* (new Date().getTime())); :)

참고 :
http://savour.tistory.com/tag/cache-control