728x90

특정 OS에서 톰캣을 구동시에 request.getRemoteAddr()을 호출하면 IPv6 주소를 리턴하는 경우가 있는데

이를 IPv4로 받으려면 -Djava.net.preferIPv4Stack=true 옵션을 넣어줘야 합니다.


[이클립스 설정]

1. Run - Run Configurations 메뉴 선택

2. Apache Tomcat 하위에 설정하고자 하는 톰캣서버 선택

3. Arguments 탭 선택

4. VM arguments 젤 뒤에 -Djava.net.preferIPv4Stack=true 옵션 추가

5. Apply


[톱캣 설정]

1. 톰캣이 설치되어 있는 ROOT → bin → catalina.bat를 에디터로 열기

2. set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% 뒤에 위와 같이 옵션을 추가 합니다.



출처 : http://tskwon.tistory.com/272

Posted by 앗뜨거
,
728x90

웹 개발을 하다보면 접속하는 사용자의 정보를 확인하기 위해서 CLIENT IP를 수집하는 경우가 있습니다.
하지만 접속하는 클라이언트가 PROXY SERVER를 사용하거나, 내부적으로 LOAD BALANCER를 하고 있다면 접속하는 클라이언트의 실제 IP를 수집하는 것이 아니라 웹 서버에 접속하는 바로 직전의 IP를 수집하게 될 것입니다.

그렇다면 그 정보는 정확한 정보가 아닌 쓰레기 정보라고 할 수 있겠죠?
그래서 접속하는 클라이언트의 실제 IP를 수집하는 방법을 설명 하려고 합니다.

먼저 보편적인 클라이언트 IP를 수집하는 방법입니다.

그렇다면 PROXY SERVER 또는 LOAD BALANCER를 거쳐나온 클라이언트의 IP는 어떻게 구할까요?

대부분의 이런 경우에는 CLIENT IP가 없어지는 것이 아니라 Request의 헤더에 X-FORWARDED_FOR라는 키워드로 정보를 남겨 놓는다고 합니다. 그래서 자바내의 로직을 처리하실 때는 다음과 같이 하시면 됩니다.

위의 자료는 STCreative에서 개발을 하면서 겪었던 일을 기반으로 작성된 자료입니다.
모두 100%정확하다는 편견을 버려주십시요.
확인해 보시고 에러가 발생한다면 디버깅과 함께 해결 방법을 적어주시면 수정하도록 하겠습니다.

출처 : http://blog.stclab.co.kr/?p=6




메소드로 구현 해 놓기


public String getClientIP(HttpServletRequest request) {


    String ip = request.getHeader("X-FORWARDED-FOR"); 

    

    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("Proxy-Client-IP");
    }


    if (ip == null || ip.length() == 0) {
        ip = request.getHeader("WL-Proxy-Client-IP");  // 웹로직
    }


    if (ip == null || ip.length() == 0) {
        ip = request.getRemoteAddr() ;
    }

    

    return ip;

}

Posted by 앗뜨거
,
728x90
<c:set var="a" value="${L_att}" />
<c:set var="b" value="${'99999'}" />
      <c:set var="c" value="${'99999'}" />


<%

int a = (Integer)pageContext.getAttribute("a");

%>

Posted by 앗뜨거
,
728x90

<c:forEach items="${gamelist}" var="b" varStatus="status">
   [${status.index}]: ${gamelist[status.index]}
   <TR>
    <TD>${b.gameid}</TD>
    <TD>${b.displaytype}</TD>
    <TD>${b.displayno}</TD>
    <TD>${b.gamelink}</TD>
    <td><c:if test="${b.ishidden=='T'}"><span style="color:red">Hidden</span></c:if></td>
    <td>${b.lang}</td>
    <td><a href="javascript:edit(${b.bid})">[Edit]</a></td>
   </TR>
  </c:forEach>

.index는 0부터 시작하고

.count는 1부터 시작한다.



출처 : http://jsonlee.tistory.com/52

Posted by 앗뜨거
,
728x90

1. 오라클


<%
String DB_URL = "jdbc:oracle:thin:@localhost:1521:ORCL";


String DB_USER    = "scott"; // DB USER명
String DB_PASSWORD = "tiger"; // 패스워드

Connection con = null;
Statement  stmt   = null;
ResultSet rs = null;
String sql=null;

try
 {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);    
  }catch(SQLException e){out.println(e);}
%>



2. mysql


<%


Connection conn = null;                                        // null로 초기화 한다.


try{

String url = "jdbc:mysql://localhost:3306/jdbcTest";        // 사용하려는 데이터베이스명을 포함한 URL 기술

String id = "testid";                                                    // 사용자 계정

String pw = "testpw";                                                // 사용자 계정의 패스워드


Class.forName("com.mysql.jdbc.Driver");                       // 데이터베이스와 연동하기 위해 DriverManager에 등록한다.

conn=DriverManager.getConnection(url,id,pw);              // DriverManager 객체로부터 Connection 객체를 얻어온다.

out.println("제대로 연결되었습니다.");                            // 커넥션이 제대로 연결되면 수행된다.


}catch(Exception e){                                                    // 예외가 발생하면 예외 상황을 처리한다.

e.printStackTrace();

}

%>

Posted by 앗뜨거
,
728x90

포인트

문자형 UTF-8 인코딩 하기
java.net.URLEncoder.encode(L_searchword,"UTF-8")


String encStr = java.netURLEncoder.encode("주식", "UTF-8");

sntStr 결과값 = > %EC%A3%BC%EC%8B%9D




JSP페이지에서 문자열 encoding / decofing처리 부분 예제 >>

<%!
    public static void setCookie(HttpServletResponse response, String name, String value) {
        value = java.net.URLEncoder.encode(value);
        Cookie cookie = new Cookie(name, value);
        cookie.setMaxAge(60*60*24*31); // 31일
        response.addCookie(cookie);
    }
    public static String getCookie(HttpServletRequest request, String cookieName) {
        Cookie [] cookies = request.getCookies();
        String value = "";
        for(int i=0;i<cookies.length;i++) {
            if(cookieName.equals(cookies[i].getName())) {
                value = java.net.URLDecoder.decode(cookies[i].getValue());
                break;
            }
        }
        return value;
    }
%>


사용예 >>

    // 쿠키 확인하기
    String tmpStr = "";
    boolean isHit = false;
    tmpStr = getCookie (request, "blog_grade");
    if ( !tmpStr.equals("") ) {
        if ( tmpStr.indexOf("["+L_postno+"]") > -1) isHit = true;
    }


   //쿠키 없으면 생성하기
   if ( !isHit ) {
        tmpStr += "["+L_postno+"]";
        setCookie (response, "blog_grade", tmpStr);
        // DB 처리.
        Sql="update n2_board set b_hit=b_hit+1 where b_idx="+L_num;
        db.executeQuery (Sql);
    }



출처 : http://edit.tistory.com/entry/JSP한글파라미더-UTF-8처리

Posted by 앗뜨거
,