반응형

JSTL - c:forEach문


jsp의 for문이라고 생각하시면 될것같습니다.

물론 조금다릅니다.

주로 자바에서 모델로 Attribute에 담아서 JSP에 뿌려줄때 사용합니다.

forEach를 사용하는 것에대해 작성해보겠습니다.



JSP - HTML


<c:forEach var="i" begin="1" end="10" step="1">

${i}

</c:forEach>


일단 바로 for문처럼 숫자의 반복을 사용하려면 아래와 같이

begin = 시작숫자

end = 마지막숫자

step = 증가할 수

이렇게 작성하시면 1부터 10까지 나올겁니다.



다음은 JAVA에서 mode에 담긴 값을 가져오는 예제입니다.


JAVA


@RequestMapping(value="/selectGateEntrnSttstList")

    public String selectUserList (@ModelAttribute("paramVO") UserVO paramVO, ModelMap model) throws Exception {

List<EgovMap> userList = userService.selectUserList(paramVO);  

// paramVO에 담긴 파라메터로 selectUserList에서 검색한쿼리의 데이터를 List에 담아줍니다. 저는 egovMap를 사용했습니다.


model.addAttribute("resultList", userList );   // 리스트에 담긴 userList를 모델에 resultList라는 이름으로 담아줍니다.


return "common/user/userList";  // JSP경로

}



JSP - HTML ( userList.jsp )


<--    위에서 모델로 담아준 result를 가져오겠습니다. 가져올때 item="${resultList}" 로가져오면됩니다.    -->

 <--    var로 리스트명을 변경해준뒤 변경 안해줘도 됩니다.   -->

 <--    위에서 result로 변경해줘서 ${result.컬럼}으로 가져왔습니다. 변경안해줬다면 ${resultList.userId}가 되겠습니다.    -->


<c:forEach var="result" items="${resultList}" varStatus="status">     

${result.userId} 

</c:forEach>




JSTL - c:if문


if문과 상당히 비슷하지만 else문이 없어서 그것에 대체는 choose문을 사용하면됩니다.

아래와같이 작성해서 사용하면 됩니다.


<c:if test="조건식"></c:if>

주의하실점은 ${result.userId}와 ${result.adminId} 두개를 비교하고싶다 그러면

${result.userId} == ${result.adminId} 이게아니고

${result.userId == result.adminId} 이렇게 작성해주시면됩니다.





JSTL - c:choose


jstl에는 if문에 else문이 없어서 당황하셨을텐데 choose문을 사용하면됩니다.

choose문은 아래와 같이 사용하면됩니다.


<c:choose>

<when test="조건식">


</when>

<otherwise>


</otherwise>

</c:choose>


when이 if문이고 otherwise가 else라고 생각하시면 됩니다.

if문이 많이 필요하시면 when을 여러개 쓰시면 됩니다.

test="조건식"과 test!="조건식"을 활용한다면 어떤것도 다사용할수 있을것 같습니다.

반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSP - 아이디 중복 체크  (0) 2017.11.01
JSP - 페이징처리  (0) 2017.10.20
반응형

티스토리 구글 애드센드 연결하기


구글애드센스로 접속에서 구글아이디?등으로 로그인을 해주세요!

https://www.google.co.kr/adsense 


로그인하고 나라설정및 기본적인 정보입력 후에 이용약간 동의를 누르시면 

아래와 같이 애드센스에 사이트 연결이라는 화면이 나옵니다.





저번에 네이버 피드등록처럼 헤드에 스크립트를 넣어줘야됩니다.

티스토리 홈페이지의 관리자 페이지로 이동해주세요.







관리자 페이지에서 HTML / CSS 편집으로 눌러서 이동하시면

아래와같은 화면이 나옵니다.







그러면 <head> 아래쪽에 이쁘게 잘넣어주시면됩니다....

<태그></태그>사이말고 </태그>가 끝나는지점에 맞게 넣어주시면됩니다!

저장을 하시고! 아까 애드센스 페이지로 갑니다!.

 

1번째 사진에 코드를 사이트에 붙여넣었습니다. 이부분에 체크를 해주시고 제출!

제출을 하시면은 3일에서 최대~한달?정도 검토한후에 

메일로 보내준다고하니

메일이오면 다시 작성하도록 하겠습니다.



반응형

'기타' 카테고리의 다른 글

티스토리 초대장 나눔해드립니다!  (33) 2017.10.27
사업자등록번호  (0) 2017.10.24
티스토리 피드등록  (0) 2017.10.12
반응형

자바스크립트 - 스크립트 내에서 HTML 테이블 생성

아래와 같이 htmlStr에 태그를 넣어서 제이쿼리로 $("#id").html( htmlStr ); 이렇게 해주면
HTML에 id가 list인 DIV안에 테이블이 생성됩니다.
json값이면 each로 돌리거나 for문으로도 넣어줄수있습니다.
주의하실점은 <input>태그에서 함수나 "를 많이사용하는경우에서는
"앞에 \를 넣어서 써주시면 "를 문자로 처리합니다.
ex) htmlStr = " <input type=\"button\" onclick=\" 함수( \'"+데이터1+"\', \'"+데이터2+"\' ) \"> "
위와같이 써주면 되겠습니다. 생각보다 되게 헷갈리니까 주의해주세요.

자바스크립트


function 함수1(){

var htmlStr = "";

htmlStr += "<table>";

// jquery를 이용한 JSON 결과 데이터 파싱

$(jsonStr.results.juso).each(function(){

htmlStr += "<tr>";

htmlStr += "<td>"+this.zipNo+"</td>";

htmlStr += "<td>"+this.roadAddrPart1+this.roadAddrPart2+"</td>";

htmlStr += "<td><input type=\"button\" onclick=\"함수()\"></td>";

htmlStr += "</tr>";

});

htmlStr += "</table>";

// 결과 HTML을 FORM의 결과 출력 DIV에 삽입

$("#list").html(htmlStr);

}


JSP - HTML


<div id="list"> <!-- 검색 결과 리스트 출력 영역 --> </div>

반응형
반응형

오라클 - 문자형 데이터 인덱스 자동증가

시퀀스나 자동증가같이 숫자형 컬럼에서만 사용할 수 있는데

그래서 문자형에서도 사용할수있는 자동증가 쿼리입니다.

데이터를 숫자 1~n으로 넣어놓고 데이터의 최대 max값( n값 )을 찾아 그것보다 높은 것으로

insert해줍니다.


INSERT INTO 테이블명(컬럼명) VALUES ( SELECT NVL( MAX(컬럼명 + 1),1 ) FROM 테이블명 )

반응형
반응형

오라클 테이블 컬럼추가 및 코멘트,설정 수정


컬럼 추가

ALTER TABLE 테이블명 ADD (컬럼명 타입());

ex) ALTER TABLE user_info ADD ( user_phone char(10) );


컬럼 DEFAULT, NOT NULL 수정

ALTER TABLE 테이블명 MODIFY(컬럼명 NOT NULL);

ALTER TABLE 테이블명 MODIFY(컬럼명DEFAULT '디폴트값');


컬럼명 수정

ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경할컬럼명;


컬럼 코멘트 수정

COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트';


테이블 코멘트 수정

COMMENT ON TABLE 테이블명 IS '코멘트';



반응형

'IT > DB' 카테고리의 다른 글

오라클 쿼리 오류  (0) 2017.11.01
오라클 - 문자형 데이터 인덱스 자동증가  (0) 2017.10.26
오라클, mysql, mssql 문자열 합치기  (0) 2017.10.25
RDBMS, RDB 정의 및 기능  (0) 2017.10.12
SQL 문법 - SELECT문 및 함수  (0) 2017.10.11
반응형

도로명주소 API - 검색API 적용


도로명주소 API에서 검색형 API로 적용을 해보겠습니다.

검색형과 팝업형이있는데 레이어팝업을 사용해야되거나 팝업이 싫으시나 하시는 분들은

이방법으로 사용하시면 됩니다.

방식은 xml, json이 있는데 json으로 사용해볼겠습니다.


앞에 팝업형에서도 작성한것과 같이 

주소 api를 사용하려면 아래 링크에서 샘플 및 정보를 받을수 있습니다.

https://www.juso.go.kr/addrlink/main.do

접속해서 api키를 발급받아야 사용이 가능하니 api키를 발급 받으시길 바랍니다.

기본적인 정보만 입력하면 쉽게 발급받으실수 있습니다.

sample과 api활용 가이드도 있으니 참고하시면 좋을것 같습니다.

이번에는 검색형 주소검색을 사용했고 제가 적용한것을 작성하겠습니다.



자바스크립트


아래서 에러코드를 사용했는데 에러코드는 다음과 같습니다.

0         정상

-999         시스템에러 도로명주소 도움센터로 문의하시기 바랍니다.

E0001 승인되지 않은 KEY 입니다. 정확한 승인키를 입력하세요.(팝업API 승인키 사용불가)

E0005 검색어가 입력되지 않았습니다. 검색어를 입력해주세요.

E0006 주소를 상세히 입력해 주시기 바랍니다. 시도명으로는 검색이 불가합니다.



// 주소 검색후 데이터 받아오기

function getAddr(){

// AJAX 주소 검색 요청

$.ajax({

url:"http://www.juso.go.kr/addrlink/addrLinkApiJsonp.do" // 주소검색 OPEN API URL

,type:"post"

,data:$("#form").serialize() // 요청 변수 설정

,dataType:"jsonp" // 크로스도메인으로 인한 jsonp 이용, 검색결과형식 JSON 

,crossDomain:true

,success:function(jsonStr){ // jsonStr : 주소 검색 결과 JSON 데이터

$("#list").html(""); // 결과 출력 영역 초기화

var errCode = jsonStr.results.common.errorCode;

var errDesc = jsonStr.results.common.errorMessage;

if(errCode != "0"){ 

$("#pageApi").html("");

if(errCode ==  "E0001"){ alert("승인되지 않은 KEY입니다."); }

else if(errCode ==  "E0005"){ alert("검색어를 입력해주세요."); }

else if(errCode ==  "E0006"){ alert("시도명으로는 검색이 불가합니다."); }

else { alert("에러가 발생하였습니다. 잠시후 다시 시도해주세요."); }

}else{

if(jsonStr!= null){

makeListJson(jsonStr); // 결과 JSON 데이터 파싱 및 출력

pageMake(jsonStr);

}

}

}

,error: function(xhr,status, error){

alert("에러발생"); // AJAX 호출 에러

}

});

}


// 주소검색한 리스트를 html에 생성

function makeListJson(jsonStr){

var htmlStr = "";

htmlStr += "<table>";

// jquery를 이용한 JSON 결과 데이터 파싱

$(jsonStr.results.juso).each(function(){

htmlStr += "<tr>";

htmlStr += "<td>"+this.roadAddrPart1+"</td>";

htmlStr += "<td>"+this.roadAddrPart2+"</td>";

htmlStr += "<td>"+this.engAddr+"</td>";

htmlStr += "<td>"+this.zipNo+"</td>";

     htmlStr += "<td>

<input type=\"button\" onclick=\"addressing(\'"+this.zipNo+"\',\'"+this.roadAddrPart1+"\',\'"+this.roadAddrPart2+"\')\" value=\"선택\"></td>";

htmlStr += "</tr>";

});

htmlStr += "</table>";

// 결과 HTML을 FORM의 결과 출력 DIV에 삽입

$("#list").html(htmlStr);

}


// 주소값 넣어주기

function addressing(zipNo,roadAddrPart1,roadAddrPart2){

document.form.zipNo.value = zipNo; // 우편번호

document.form.addr.value = roadAddrPart1;//+" "+roadAddrPart2; // 도로명주소

}


//페이지 이동

function goPage(pageNum){

document.form.currentPage.value=pageNum;

getAddr();

}


// json타입 페이지 처리 (주소정보 리스트 makeListJson(jsonStr); 다음에서 호출)

function pageMake(jsonStr){

var total = jsonStr.results.common.totalCount; // 총건수

console.log("총건수:"+total);

var pageNum = document.form.currentPage.value;// 현재페이지

var paggingStr = "";

if(total < 1){

var htmlStr = "";

htmlStr += "<table>";

htmlStr += "<tr>";

htmlStr += "<td>검색결과가 없습니다.</td>";

htmlStr += "</tr>";

htmlStr += "</table>";

$("#list").html(htmlStr);

$("#pageApi").html("");

}else{

if(total > 1000){

total=1000;

}

var PAGEBLOCK=10; // 10

var pageSize=10; // 10

var totalPages = Math.floor((total-1)/pageSize) + 1; // 총페이지

var firstPage = Math.floor((pageNum-1)/PAGEBLOCK) * PAGEBLOCK + 1; // 리스트의 처음 ( (2-1)/10 ) * 10 + 1 // 1 11 21 31

if( firstPage <= 0 ) firstPage = 1; // 처음페이지가 1보다 작으면 무조건 1

var lastPage = firstPage-1 + PAGEBLOCK; // 리스트의 마지막 10 20 30 40 50

if( lastPage > totalPages ) lastPage = totalPages; // 마지막페이지가 전체페이지보다 크면 전체페이지

var nextPage = lastPage+1 ; // 11 21 

var prePage = firstPage-PAGEBLOCK ;

if( firstPage > PAGEBLOCK ){

paggingStr +=  "<a href='javascript:goPage("+prePage+");'>◁</a>  " ; // 처음 페이지가 아니면 <를 넣어줌

}

for(var i=firstPage; i<=lastPage; i++ ){

if( pageNum == i )

paggingStr += "<a style='font-weight:bold;color:blue;font-size:15px;' href='javascript:goPage("+i+");'>" + i + "</a>  ";

else

paggingStr += "<a href='javascript:goPage("+i+");'>" + i + "</a>  ";

}

if( lastPage < totalPages ){

paggingStr +=  "<a href='javascript:goPage("+nextPage+");'>▷</a>"; // 마지막페이지가 아니면 >를 넣어줌

}

$("#pageApi").html(paggingStr);

}

}


JSP - HTML


<form name="form" id="form" method="post">

  <input type="hidden" name="currentPage" value="1"/> <!-- 요청 변수 설정 (현재 페이지. currentPage : n > 0) -->

  <input type="hidden" name="countPerPage" value="10"/> <!-- 요청 변수 설정 (페이지당 출력 개수. countPerPage 범위 : 0 < n <= 100) -->

  <input type="hidden" name="resultType" value="json"/> <!-- 요청 변수 설정 (검색결과형식 설정, json) --> 

  <input type="hidden" name="confmKey" value="승인키"/> <!-- 요청 변수 설정 (승인키) -->

  <input type="text" name="keyword" value=""/> <!-- 요청 변수 설정 (키워드) -->

  <input type="button" onClick="getAddr();" value="주소검색하기"/>

  <div id="list"> <!-- 검색 결과 리스트 출력 영역 --> </div>

  <div class="paginate" id="pageApi"></div>

</form>



반응형
반응형

mysql 문자열 합치기


SELECT 

add1, 

add2, 

CONCAT(add1,'-',add2) as add

FROM juso



오라클 문자열 합치기


SELECT 

add1, 

add2,

add1||', '||add2 as add

FROM juso



mssql 문자열 합치기

SELECT 

add1, 

add2,

add1+', '+add2 as add

FROM juso

반응형
반응형

사업자등록번호


XXX-XX-XXXXX

일련번호코드(3)-개인.법인구분코드(2)-일련번호코드(4)검증번호(1)


*일련번호코드 101~999


*개인.법인구분코드

  1.개인과세사업자 01~79

  2.개인면세사업자 90~99

  3.법인이아닌 종교 89

  4.3이아닌 아파트관리사무소 등 다단계판매원 80

   영리법인 본점 81,86,87,88

   국가, 지방자치단체(조합) 83

   외국 본지점 연락사무소 84

   영리법인지점 85


*일련번호코드 0001~9999

*검증번호

반응형

'기타' 카테고리의 다른 글

티스토리 초대장 나눔해드립니다!  (33) 2017.10.27
티스토리 구글 애드센드 연결하기  (0) 2017.10.26
티스토리 피드등록  (0) 2017.10.12
반응형

간단한 클래스 선언 및 함수호출


클래스를 만들고 달러로 변환해주는 함수를 만들어 보겠습니다.


클래스생성

public class TestClass{

public int testMethod(int dollar){       //  int -> 함수의 return받을 타입설정 / 함수명(데이터 받을 타입과 변수명)

int testVal = dollar*1139;

return testVal; // int의 함수라 return은 int만가능 

}

}


호출

TestClass testClass = new TestClass();  // 클래스 호출

testClass.testMethod(1);  // 클래스 접근후 함수사용

반응형
반응형

replace(치환)


var 변수;

변수.replace(,);


g : 모든 패턴 체크(global)

i : 대소문자를 구별없이 체크

m : 여러줄 체크


^ : 처음

$ : 끝

. : 한문자


.replace(' ','')          : 첫번째 공백 제거

.replace(/\-/g,'')        : - 제거

.replace(/[-]/g,'')        

.replace(/,/g,'')         : , 제거

.replace(/^\s+/,'')       : 앞의 공백 제거

.replace(/\s+$/,'')       : 뒤의 공백 제거

.replace(/^\s+|\s+$/g,'') : 앞뒤 공백 제거

.replace(/\s/g,'')        : 문자열 내의 모든 공백 제거

2가지 이상사용시 .replace(/[-]|\s/gi, ''); 등으로 |(or)을 가지고 사용가능 (-,공백제거)



정규표현식



var Patten = /^[0-9\-]{12,12}$|^[0-9]{10,10}$/;   // 0~9의 숫자와 특수문자 -사용가능한 12자리수 or 0~9의 숫자의 10자리수


var Patten = /^[a-zA-Z0-9]{1,20}$/;   // a~z,A~Z,0~9인 1~20자리수까지


var Patten = /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/;  // 영문,숫자,특수문자로 이루어진 8~15자리 (비밀번호에 많이사용)


테스트시

var test="abc1234";

if( !Patten.test( test ) ){}


반응형

+ Recent posts