티스토리 뷰



구사항


<maksing>

1. 게시판 혹은 댓글목록에서 사용자정보(아이디 혹은 닉네임)를 표시함에 있어 개인정보 보호 차원에서

     '*' 표시로 마스킹 처리를 하자

2. 닉네임을 갖고 있다면 닉네임을 표시 ( 마스킹 처리 하지 않음)

3. 닉네임이 없다면, 아이디 표시

ㄴ 로그인한 사용자와 해당 사용자가 같다면 마스킹 처리 하지 않음

ㄴ 다른 사용자라면 마스킹처리 유틸을 사용하여 표시 (ex : tistory -> tist***) 

4. 이미 구현되어 있는 자바 클래스 사용할 것(재사용) -> MaskingTagHandler


<count>

1. 조회수를 체크하는 경우와 같이 카운트를 할 때 상당히 큰 값에 대해서 제한을 두고자 함

(ex : +999999)

2. 옵션으로 콤마 설정 가능 (ex : 999,988)


기타

1. 스프링 MVC 사용

2. 마스킹처리를 하는 자바클래스를 재사용하기 위함 

3. 참조 http://gwpark.tistory.com/1242

  

==========================================================================================

CODE


1. Contorller


@Controller

public class Practice {

private static int count = 9999888;


@RequestMapping("/home")

public ModelAndView moveToBoard() {

Map<String, Object> model = new HashMap<String, Object>();

String loginid = "nts";

model.put("loginid", loginid);

model.put("count", ++count);


return new ModelAndView("index", model);

}


@RequestMapping("/init")

public ModelAndView init() {

count = 9999888;

return new ModelAndView("redirect:/home");

}

}



2. customTaglib.tld


<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/

        http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">


<description>개인정보(아이디) 보호를 위한 마스킹처리 태그와 MAX를 가진 숫자 태그</description>

<tlib-version>1.2</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>myTag</short-name>


<tag>

<name>count</name>

<tag-class>com.naver.jr.common.util.CountingTagHandler</tag-class>

<body-content>empty</body-content>


<attribute>

<name>number</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


<attribute>

<name>max</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


<attribute>

<name>comma</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


</tag>


<tag>

<name>masking</name>

<tag-class>com.naver.jr.common.util.MaskingTagHandler</tag-class>

<body-content>empty</body-content>


<attribute>

<name>userid</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


<attribute>

<name>loginid</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


<attribute>

<name>nick</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>


</tag>

</taglib>



3. CountingTagHandler


public class CountingTagHandler extends TagSupport {

private static final long serialVersionUID = 1692689476115851333L;

private int number;

private int max;

private boolean comma;


public int doStartTag() throws JspException {

try {

JspWriter out = pageContext.getOut();

String result = getFormattingNumber(number);


if (number > max)

result = "+" + getFormattingNumber(max);

out.print(result);

} catch (IOException e) {

e.printStackTrace();

}

return SKIP_BODY;

}


private String getFormattingNumber(int number) {

if (comma == true)

return String.format("%,d", number);

return number + "";

}


public int getNumber() {

return number;

}


public int getMax() {

return max;

}


public void setNumber(int number) {

this.number = number;

}


public void setMax(int max) {

this.max = max;

}


public static long getSerialversionuid() {

return serialVersionUID;

}


public boolean isComma() {

return comma;

}


public void setComma(boolean comma) {

this.comma = comma;

}


}



4. MaskingTagHandler


public class MaskingTagHandler extends TagSupport {


private static final long serialVersionUID = -4740988723840179195L;

private String loginid;

private String nick;

private String userid;


public int doStartTag() throws JspException {

try {

JspWriter out = pageContext.getOut();

boolean isLogin = StringUtils.equals(userid, loginid);

String user = JrUserUtil.getNicknameOrMaskedUserId(nick, isLogin,

userid);

out.print(user);

} catch (IOException e) {

e.printStackTrace();

}

return SKIP_BODY;

}


public String getLoginid() {

return loginid;

}


public String getNick() {

return nick;

}


public String getUserid() {

return userid;

}


public void setLoginid(String loginid) {

this.loginid = loginid;

}


public void setNick(String nick) {

this.nick = nick;

}


public void setUserid(String userid) {

this.userid = userid;

}


}




 

1. 파일구성



 


2. 태그 이름은 masking과 count이고 prefix로 'check'를 사용했습니다.






3. JSP 화면




TAG
, ,
댓글
댓글쓰기 폼