반응형

JSP - JSTL 데이터 포맷


jstl 태그 및 디펜더시를 추가
상단에 추가해준다.

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


에러가뜨면 아래와 같이 pom.xml에 dependency를 추가해주거나 .jar을 넣어준다.

<dependencies>

  <dependency>

  <groupId>jstl</groupId>

  <artifactId>jstl</artifactId>

  <version>1.2</version>

  </dependency>

  </dependencies>


데이터 format (시간)


태그립아래쪽에 c:set을 추가해서 써줘도 되고

<c:set var="date" value="<%=new Date() %>"/>
<fmt:formatDate value="${date}" type="date"/><br/> 


그냥써도됨
<fmt:formatDate value="<%=new Date() %>" type="date"/><br/> 



type

type="date"    --> ex) 2017.4.13
type="both"    --> ex) 2017. 4. 13 오후 5:12:33
type="time"    --> ex) 오후 5:12:33


both

dateStyle="short" timeStyle="short"              --> ex) 17. 4. 13 오후 5:12
dateStyle="medium" timeStyle="medium"      --> ex) 2017. 4. 13 오후 5:12:33
dateStyle="long" timeStyle="long"                --> ex) 2017년 4월 13일 (목) 오후 5시 12분 33초
dateStyle="full" timeStyle="full"                    --> ex) 2017년 4월 13일 목요일 오후 5시 12분 33초 KST


date

pattern="yyyy-MM-dd"    --> ex) 2017-04-13


time

pattern="(a)hh:mm:ss"     --> ex) (오후)05:12:33



데이터 format (숫자)

<fmt:formatNumber value="숫자" 타입/><br/>


groupingUsed="true"  ---> 천단위마다 ,넣어줌

pattern="##.##"    ---> 2째짜리까지 표지, 0이면 표시X
pattern="#.00"      ---> 0은 자리표기 숫자가 없으면 0
pattern="\#,###.##" ---> \는 \넣어줌
pattern="#,###.00%" ---> %표시하는데 소수점도표시

type="currency" currencySymbol="₩"  ---> 달러로 표시

type="percent" ---> %로 표시

반응형

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

JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSP - 아이디 중복 체크  (0) 2017.11.01
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27
JSP - 페이징처리  (0) 2017.10.20
반응형

c:forEach 리스트 합계구하기

JSTL에서 request로 받아온 값의 합계 구하는 예제를 작성하겠습니다.


1. total이라는 변수를 선언해줍니다.

변수명은 임의로 하시면됩니다. 저는 total이라는 변수에 List속 num값들의 합을 넣을려고합니다. 

forEach문위에 선언해줘야합니다. 안에 선언하면 forEach돌면서 0으로 계속 선언해버립니다.


2. </tr>태그 아래쪽에 다시 선언해주고 value값에 total + 값을 더해줍니다.


3. forEach를 돌면서 total값에 num들의 합이 다 들어갔습니다.

c:out으로 value값 total을 불러오면 num의 합계를 불러옵니다.


JSP - HTML

<c:set var = "total" value = "0" />

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

<tr>

<td>${result.num}<td>

</tr>

<c:set var= "total" value="${total + result.num}"/>

</c:forEach>

<c:out value="${total}"/>


반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSP - 아이디 중복 체크  (0) 2017.11.01
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27
JSP - 페이징처리  (0) 2017.10.20
반응형

JSP - 아이디 중복 체크

java - jsp에서 아이디 중복체크에 대한 제가했던 예제 첨부해드립니다. 


JAVA - controller


@RequestMapping(value="/admin/idDuplChk.do")

public ModelAndView idDuplChk(@RequestParam Map<String, Object> commandMap,ModelAndView model,HttpServletRequest request, 

HttpServletResponse response) throws Exception{

try {

String duplChk = commandMap.get("duplChk").toString();

int result = 0;


result = TotalmngService.idDuplChk("manager.idDuplChk", commandMap);

if(result == 0){

model.addObject("result","available_id");


}else{

model.addObject("result","unavailable_id");

}

return model;

} catch (Exception e) {

model.addObject("Msg",DataException.getExceptionMsg(e));

e.printStackTrace();

return model;

}

}



JAVA - service


int idDuplChk(String sqlId,Map<String, Object> commandMap) throws Exception;



JAVA - serviceImpl


@Override

public int idDuplChk(String sqlId,Map<String, Object> commandMap ) throws Exception {

return TotalmngDAO.idDuplChk(sqlId,commandMap);

}



JAVA - DAO


public int idDuplChk(String sqlId,Map<String, Object> commandMap) {

return selectOne(sqlId, commandMap);

}



SQL

  <!-- ID 중복 체크 -->

<select id="idDuplChk" parameterType="hashmap" resultType="int">

SELECT

COUNT(*)AS CNT

FROM 

<if test="duplChk != null and duplChk != ''">

        table_admin

WHERE 1=1

AND a_id = #{a_id}

</if>

</select>



JSP - 자바스크립트


var idDupChk = "";

/* 아이디 중복확인 */

function fn_idDuplChk(data) {

if(data == 'admin'){

if($("#a_id").val() == '' || $("#a_id").val() == null){

    alert('중복체크할 아이디를 입력하세요');    

    return;    

    }

document.form.duplChk.value="admin";

}

var formData = new FormData(document.form);

$.ajax({

type: 'POST',

data: formData,

url: "<c:url value='/admin/idDuplChk.do'/>",

dataType :'json',

processData: false,

contentType: false,

success: function(data){

//alert(data.result);

if(data.result === 'available_id'){

alert("사용 가능한 아이디 입니다.");

idDupChk = "Y";

}

else if(data.result === 'unavailable_id'){

alert("이미 사용중인 아이디입니다.");

$("#a_id").val('');

idDupChk = "";

}

},

    error: function (xhr, ajaxOptions, thrownError) {}

});

}


JSP - HTML


<input type="hidden" id="duplChk" name="duplChk">

<button class="sr_id" type="button" onclick="fn_idDuplChk('admin')">중복확인</button>



반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27
JSP - 페이징처리  (0) 2017.10.20
반응형

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
반응형

JSP - 페이징 처리


ajax통신을 통해서 List와 List의 갯수를 가져와 페이징처리를 적용해봤습니다.

생각보다 게시물수와 리스트페이지수만 바꾸면 자동으로 되게 하려했으나 생각보다 어지러워서 되는대로 짜버렸습니다....

일단 게시물 5개에 리스트 5개띄우는거에서 사용가능하며 아래는 레이어 팝업으로 ajax통신을 통해 데이터를 가져와 띄우는 형식이라 

소스가 더러우실수도있으나 참고하시려면... 참고하시길 바랍니다. 



SQL

아래와같이 SELECT를 3번해서 가져오는게 오라클 대용량 처리라고합니다.


List 쿼리문

SELECT 

no, id, nm 

FROM (

SELECT 

no, id, nm, ROWNUM as rnum

FROM (

SELECT 

no, id, nm

FROM List테이블;

ORDER BY no

) WHERE ROWNUM <= #{lastIndex}

)WHERE rnum > #{firstIndex}


List 개수가져오는 쿼리문

SELECT COUNT(*) FROM List테이블




JSP-자바스크립트


function fn_List_popup(data,num) {

var id = data;

var page = num; //현재페이지

var countList = 5; // 페이지에 게시물 수 (고정)

var countPage = 5; // 리스트 페이지수 (고정)

var totalCount; // 총게시물갯수 = selectListTotCnt

var totalPage; // 생성될 전체 페이지 수

var startPage;

var endPage;

$.ajax({

    type:"POST",

    url:_ctx+"/usr/selectListTotCnt.json",

    data: {'id':id },

    success: function(data) {

    totalCount=data.resultTotCnt; // 총게시물 갯수 설정

    totalPage = Math.floor(totalCount / countList); // 게시물의 리스트갯수 계산

    if (totalCount % countList > 0) {

    totalPage++; // 나머지가 있으면 전체페이지수가 +1이 된다.

}

    var pageMath= Math.floor(page/5.0000001)+1;

    startPage = (pageMath-1)*5+1;//((page - 1) / 10) * 10 + 1; 

    endPage = totalPage;

    var totalPageMath = Math.floor(totalPage/5.0000001)+1;

   

    if(totalPage<6){

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

    for(var i=startPage; i<=totalPage; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup

("+id+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    } else if( totalPageMath == pageMath ){

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

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+",1)'> << </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(startPage-5)+")'> &nbsp;<&nbsp; </a>");

    for(var i=startPage; i<=totalPage; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    } else if(totalPage > countPage){

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

    if(pageMath != 1){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+",1)'> << </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(pageMath-1)+")'> &nbsp;<&nbsp; </a>");

    }

    for(var i=startPage; i<=startPage+4; i++){

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+i+")'>&nbsp;"+i+"&nbsp;</a>");

    }

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+(startPage+5)+")'> &nbsp;>&nbsp; </a>");

    $("#paging2").append("<a href='#' onclick='fn_List_popup("+dprtmId+","+endPage+")'> >> </a>");

    }

   

    var firstIndex = countList*(page-1)+1;

    var lastIndex = page*countList;

   

    $(".List").html("");

    $(".popup").show(); //팝업오픈

    //데이터 가져오기

    $.ajax({

        type:"POST",

        url:_ctx+"/usr/selectList.json",

        data: {'dprtmId':dprtmId, 'firstIndex':firstIndex, 'lastIndex':lastIndex },

        success: function(data) {

        $.each(data.resultList,function(index,value){

        $(".popup .popupTable tbody").append('<tr class="List"><td>'+(firstIndex)+'</td><td>'+value.id+'</td><td class="bor_r_0">'+value.nm+'</td></tr>');

        firstIndex++;

        });

        }

    })

   

   

    }

})

}


JSP-HTML


<a href="#" class="grayBtn2" onclick="fn_List_popup('<c:out value="${result.id}"/>','1')">조회</a></td>


<!-- 팝업 -->

<div class="popup" style="display:none;">

    <h1 class="popupT">유저정보<span class="closeBtn"></span></h1>

    <div class="popupCon">

        <table class="popupTable">

            <caption class="blind"></caption>

            <colgroup>

                <col width="20%">

                <col width="40%">

                <col width="40%">

            </colgroup>

            

            <thead class="">

                <tr>

                    <th scope="col">NO</th>

                    <th scope="col">ID</th>

                    <th scope="col"  class="bor_r_0">이름</th>

                </tr>

            </thead>

            

        </table>

            <div id="paging2"></div>

   

    </div>

</div>

<!-- //팝업 -->




반응형

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

JSP - JSTL 데이터 포맷  (0) 2017.11.15
JSTL - c:forEach 리스트 합계구하기  (0) 2017.11.02
JSP - 아이디 중복 체크  (0) 2017.11.01
JSTL - c:forEach문, c:if문, c:choose문(else문)  (0) 2017.10.27

+ Recent posts