It’s me

December 6, 2006

JAVASUN.NET 현재로그인 사용자 보기 예제

Filed under: JAVA — rothmans @ 3:37 am

JAVASUN.NET 현재로그인 사용자 보기 예제1
CurLogin.java -> Session Binding Listener
SessionManager -> 현재 사용자를 Hashtable에 저장
loginCheck.jsp -> 사용자 로그인 처리 페이지
logout.jsp -> 사용자 로그아웃 페이지
curClients.jsp -> 현재 로그인 사용자 나열 페이지

———————– CurLogin.java———————-
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class CurLogin implements HttpSessionBindingListener {
 
  String loginid;
  String sessionid;
  SessionManager sm;
  public CurLogin(String loginid){
      this.loginid = loginid;
  }
  //세션에 값이 추가될때 발생하는 이벤트 메소드
  public void valueBound(HttpSessionBindingEvent event) {
    HttpSession ss = event.getSession();
    sessionid = ss.getId();
    sm = SessionManager.getInstance();
             //Hashtable에 세션아이디와 로그인 아이디를 저장합니다.
    sm.addClient(sessionid,loginid);
  }
  //세션에 값이 소멸될때 발생하는 이벤트 메소드
  public void valueUnbound(HttpSessionBindingEvent event) {
    HttpSession ss = event.getSession();
    sessionid = ss.getId();
    sm = SessionManager.getInstance();
             //Hashtable에서 세션아이디 키값으로 삭제 합니다.
    sm.removeClient(sessionid);
  }
}

—————————SessionManager.java————————-
import java.util.*;
public class SessionManager{

    public static SessionManager instance;
    public Hashtable clients;
   
    static synchronized public SessionManager getInstance() {
        if (instance == null) {
            instance = new SessionManager();
        }
        return instance;
    }
    private SessionManager() {
        init();
    }
    private void init(){
        clients = new Hashtable();
    }
    //Hashtable에 로그인 사용자 추가
    public void addClient(String sessionid,String id)
    {
        clients.put(sessionid,id);
    }
    //Hashtable에 로그인 사용자 삭제
    public void removeClient(String sessionid){
        clients.remove(sessionid);    
    }
    //현재 저장된 내용을 전부 반환한다.
    public Hashtable getClient(){
        return clients;
    }
}

##############################################################
지금까지 현재로그인 사용자 예제에서 사용돼는 클래스 파일을 정의했습니다.
다음 예제에서는 jsp에서 어떻게 응용하는지 알아보겠습니다.
##############################################################
이번강좌는 이전강좌에 정의된 클래스 파일을 이용하서 JSP 페이지에서 현재로그인 사용자를 알아보겠습니다.
—————————-loginCheck.jsp——————————
~~중략
이부분은 여러분들이 직접 회원가입된 로그인 사용자인지 체크해주시구여..
~~중략
if 만약 아이디와 패스워드가 전부 일치한다면
{
    //id => 로그인 사용자 아이디
    CurLogin curLogin = new CurLogin(id);
    //세션이 소멸될 시간을 설정해 줍니다.
    session.setMaxInactiveInterval(60*10);
    //세션에 추가
    session.setAttribute(“curLogin”,curLogin);
}//curLogin객체를 세션에 추가하면 로그인 사용자 아이디가 자동으로 SessionManager의 Hashtable에 추가가됩니다.

—————————-logout.jsp——————————
로그아웃시에는 세션에 추가된 Object만 삭제를 해주면 됩니다.
session.removeAttribute(“curLogin”);
//세션에서 내용이 삭제되면서 자동으로 SessionManager에 저장된 아이디값도 삭제 됩니다.

—————————-현재로그인사용자보기.jsp————————–

<table width=”100%” border=”0″ cellpadding=”1″ cellspacing=”1″ bgcolor=”#DEE8DB”>
<tr><td bgcolor=”#DEE8DB” align=center>현재로그인</td></tr>
<%
  //SessionManager의 인스턴스를 받아옵니다.
  SessionManager sm = SessionManager.getInstance();
  //아이디가 저장된 Hashtable을 받아옵니다.
  Hashtable hash = sm.getClient();
  Enumeration em = hash.elements();
  while(em.hasMoreElements()){
%>
<tr>
<td align=center height=15 bgcolor=white>
  <!– 아이디를 하나씩 읽어옵니다. –>
  <font color=”blue”><%=em.nextElement()%></font>
</td>
</tr>
<%}%>
</table>
##############################################################
여러분들에게 이해가 잘 됐는지 모르겠군여..
암튼 이거만들라고 몇일동안 고생했네염.. ㅋㅋ
##############################################################

from : http://www.javasun.net/

writer : 으샤님
 
 
 

JSP 간단하게 쿠키사용하기

Filed under: JAVA — rothmans @ 3:37 am

JSP 간단하게 쿠키사용하기
//쿠키 설정하기
<%@ page import=”java.util.Date”%>
<%@ page import=”java.net.*”%>
<%
   
    Date now = new Date();
    String timestamp = now.toString();
    Cookie cookie = new Cookie (“Username”, “pglmy00″);
    cookie.setMaxAge(365 * 24 * 60 * 60);
    response.addCookie(cookie);
%>
<HTML>
<HEAD>
</HEAD>
//저장된 쿠키 체크하기
<%@ page import=”java.net.*”%>
<%
       String cookieName = “Username”;
       Cookie cookies [] = request.getCookies ();
       Cookie myCookie = null;
       if (cookies != null)
       {
              for (int i = 0; i < cookies.length; i++)
              {
                     if (cookies [i].getName().equals (cookieName))
                     {
                            myCookie = cookies[i];
                            break;
                     }
              }
       }
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%if (myCookie == null) {%>
처음 접속하셨군여!
<%} else {%>   
안녕하세요 <%=redCookie.getValue()%>님 , 하이룽.
 <%}%>
</BODY>
</HTML>
<BODY>
<%=cookie.getValue()%>
</BODY>
</HTML>

from : http://www.javasun.net/board/Bread.jsp?CMD=400000&lnum=16&linenum=15&maxnum=0&keykind=null&keyword=&total=0&NCNT=1&ACMD=10&BCODE=001023

wrtier : 으샤으샤님
 
 

프로퍼티 Properties 클래스

Filed under: JAVA — rothmans @ 3:37 am

프로퍼티 Properties 클래스
from : http://www.senun.com/Left/Programming/Java_old/syntax_data_properties.txt

[ 프로퍼티 Properties 클래스 ]
   여러개의 소스 파일이 있을 때 환경이 바뀌면 변경해야 되는 변수가 있다.
   이를 쉽고 일관되게 처리할 수 있게 한다.
  
   스트링으로 스트링을 인덱스하는 배열
   변수를 하나의 파일에 만들고 이 파일 변경으로 모두 적용되게 한다.
   문자열만 되고 객체는 입출력은 안된다.

1. 변수 파일을 작성하고 파일에서 값을 얻어오기

   – 파일을 하나 만든다.
  
     $ vi test.properties
    
        Name=육삼구
        Address=Korea
  
   – test.properties 파일에서 설정된 변수값을 읽어온다.
  
        import java.util.*;
        import java.io.*;
                              
        Properties props = new Properties ();
        FileInputStream fos =  new FileInputStream ( “test.properties” );
        props.load ( fos );
        
        String name = props.getProperty ( “Name” );
        String addr = props.getProperty ( “Address” );  
        
        fos.close ();

2. 변수 파일에 값을 함수를 이용해 집어넣기

        import java.util.*;
        import java.io.*;

        Properties props = new Properties ();
        FileOutputStream fos =  new FileOutputStream ( “test.properties” ); // 파일이 없으면 자동 생성.
        
        props.put ( “Name”, “남동혁” );
        props.put ( “Address”, “Korea” );
        props.store ( fos, “헤더 주석” );
        
        fos.close ();

3. 함수

    public Properties(Properties defaults)
    public Object setProperty(String key, String value)
    public String getProperty(String key)
    public String getProperty(String key, String defaultValue)
    public Enumeration propertyNames()
    public void list(PrintStream out)
    public void list(PrintWriter out)
    public void store(OutputStream out, String header) throws IOException // OutputStream에 저장.
    load ( InputStream in ) throws IOException        // 파일로부터 읽어들임.
    put ( String key, String value )    // 키와 값의 쌍으로 데이타를 집어 넣는다.

4. 참고

    값에 \는 \\로 해야 인식한다.

from : http://nettop.pe.kr/

writer : nettop님
 
 

war 화일 만들기

Filed under: JAVA — rothmans @ 3:37 am

war 화일 만들기
war 화일에 대한 강좌는 okjsp가시면 아주 잘 되어 있습니다.

자세한 내용은 http://www.okjsp.pe.kr 가셔서 강좌란을 보시면 될거 같습니다.

해당위치에 가셔서 그냥..^^

—————————

cd tomcat/webapps/myhome

jar cf myhome.war *

—————————

요렇게만 하면 끝~~~
 
 

세션 타임아웃 기간 설정

Filed under: JAVA — rothmans @ 3:36 am

세션 타임아웃 기간 설정
tomcat/conf/web.xml에서 설정합니다.

이거 복사해서 web-inf/밑에 두고 할수도 있구여

web.xml에서 다음 내용이 관련 사항입니다.

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
요렇게 하면 30분이 되는 겁니다.

아마 대부분 기본 셋팅으로 이렇게 되어 있을 겁니다. ^^
 
 
 

세션 사용의 예

Filed under: JAVA — rothmans @ 3:28 am

세션 사용의 예
JSP Page 1 (login):
String userid = (get the user id from the login form)
String password = (get the password from the login form)
session.setAttribute(“userid”, userid);
session.setProperty(“password”, password);
session.setMaxInactiveInterval(600); // ten minutes

JSP Page 2 (and every other page that uses the same session)
if (session.getAttribute(“userid”) == null){
String userid = (String)session.getAttribute(“userid”);
String password = (String)session.getAttribute(“password”);
}
 
 

이메일주소 유효성 검사

Filed under: JAVA — rothmans @ 3:28 am

이메일주소 유효성 검사
* 매우 지저분한 테스트 소스입니다 -_-a  걍 여과없이 올립니다.
  아래에 있는 “메일주소 @ 뒤의 도메인의 유효성검사하기” 도 이안에 사용되었습니다.

이 소스는 도메인 뿐만 아니라 해당 계정이 존재하는지도 검사해줍니다. 

테스트결과 몇몇 메일서버는 욜라 느린 속도를보여주고 있고,  다음을 비롯만 몇몇 서버는 연결을 거부하여 검사가 되지 않았습니다.

그럼 도움이 되기를.. ;)

p.s) 정말 억울(?)하게도 jsphost 에서 nslookup 의 퍼미션을 막아 놨습니다. ㅠ.ㅠ  그래서 테스트 주소를 알려드릴수가 없군요.
일단 메일 보내놨으니.. 곧 풀리겠죠.. ? ^^;;
————————————————————–
<%@ page contentType=”text/html;charset=euc-kr” import=”java.io.*,java.net.*”%>
<form>
메일주소 : <input type=”text” name=”email” size=20>
<input type=”submit” value=”검사”>
</form>
<hr> 
<pre>
<%
  String email = request.getParameter(“email”);
 
  if ( (email == null) ||  (email.equals(“”)) ) {
    email = “hsboy@dreamwiz.com“;
  }
 
  out.print(“<B>” + email + “</b>에 대한 유효성 검사 결과 <BR><BR>” );
 
  String domain = email.substring( email.indexOf(“@”) + 1 , email.length() );
 
  String ourEmail  =  “service4u@itiscom.co.kr“;

  if ( isEmailValid(domain) ) {
 
    out.print(“메일서버 Alive ! <BR>”); 
   
    /*   Start */
    Socket socket = null;
    PrintStream pout = null;
    BufferedReader br = null;
    try{
      socket = new Socket ( domain, 25 );
      socket.setSoTimeout ( 30000 );
      socket.setKeepAlive ( true );
      socket.setSoLinger ( true, 3000 );
      pout = new PrintStream ( socket.getOutputStream () );
      br = new BufferedReader ( new InputStreamReader ( socket.getInputStream () ) ); 
      pout.println(“HELO ” +  domain);
      pout.flush ();
      pout.println(“MAIL FROM: <” + ourEmail + “>” );
      pout.println(“RCPT TO: <” + email + “>” );

      br.readLine();
      br.readLine();
      br.readLine();
      if ( br.readLine().startsWith(“250″) ) {
        out.print(“정확한 이메일 주소”);
      } else {
        out.print(“틀린주소!!”);
      }
 
    } catch (Exception e ) {
      out.print(e);
    } finally {
      if ( pout != null ) try{pout.close();}catch(Exception e){e.printStackTrace();}
      if ( br != null ) try{br.close();}catch(Exception e){e.printStackTrace();}
      if ( socket != null ) try{socket.close();}catch(Exception e){e.printStackTrace();}
    }
  } else {
    out.print(“없는 메일 서버!! “);
  }
%>
</pre>
<%!
  public boolean isEmailValid(String domain) throws IOException{
     
    String cmd = getCmd(“nslookup -type=MX ” + domain);
    if (  cmd.indexOf(“mail exchanger”) != -1 ) {
      return true;
    } else {
      return false;
    }
   
  }
 
   /**
    * 시스템 콘솔에서 실행된 명령의 결과를 String 으로 받아 온다
    * @param cmd 실행한 콘솔 명령
    * @return 실행 결과
    */
   public static String getCmd(String cmd) throws IOException{
     Process p = Runtime.getRuntime().exec(cmd);
    InputStream in = p.getInputStream();
     BufferedReader br = new BufferedReader(new InputStreamReader(in));
     String s = “”;
     String temp = “”;
     while ( (temp = br.readLine()) != null) {
       s += temp + “\n”;
     }
     br.close();
     in.close();
     return s;
   }  
%>

from : http://aboutjsp.com

writer : hsboy님
 
 

[Mail] 메일주소 @ 뒤의 도메인의 유효성검사하기

Filed under: JAVA — rothmans @ 3:28 am

[Mail] 메일주소 @ 뒤의 도메인의 유효성검사하기
String email = “hsboy@aboutjsp.com“;
       
String domain = email.substring( email.indexOf(“@”) + 1 , email.length() );

String cmd = Util.getCmd(“nslookup -type=MX ” + domain);
if (  cmd.indexOf(“mail exchanger”) != -1 ) {
        out.print(“Alive!!”);
} else {
        out.print(“Can’t found”);
}
Util.getCmd() 는 CAJ 패키지에 있는 메소드입니다.

원리는 nslookup 이라는 시스템 명령을 사용하는 것입니다.

윈도우든 리눅스든, 이 명령은 똑같이 다 있죠
/**
 * 시스템 콘솔에서 실행된 명령의 결과를 String 으로 받아 온다
 * @param cmd 실행한 콘솔 명령
 * @return 실행 결과
 */
public static String getCmd(String cmd) throws IOException{
  Process p = Runtime.getRuntime().exec(cmd);
  InputStream in = p.getInputStream();
  BufferedReader br = new BufferedReader(new InputStreamReader(in));
  String s = “”;
  String temp = “”;
  while ( (temp = br.readLine()) != null) {
   s += temp + “\n”;
  }
  br.close();
  in.close();
  return s;

from : www.aboutjsp.com

writer : hsboy님
 
 

Commenting a JSP Page

Filed under: JAVA — rothmans @ 3:27 am

Commenting a JSP Page

jsp에서는 두가지 형태의 주석이 허용된다.
숨긴 주석과 출력되는 주석(hidden and output comments)

서버단에서 개발자는 볼수 있으나 클라이언트는 볼수 없는거
hidden comments 예제
<%– my hidden comment –%>

output comments 예제(소스 보기 하면 html로 보인다.)
<!– my output comment –>

output comments에는 dynamic content가 가능하다. 
<!– This page was generated on <%= new java.util.Date() %> –>
위 처럼 하면 출력은 아래 처럼 보인다.
<!– This page was generated on Wed Jun 26 10:33:27 PDT 2002 –>
 
 

존재하지 않는 페이지요청시 (404) 특정페이지로 이동하기

Filed under: JAVA — rothmans @ 3:26 am

존재하지 않는 페이지요청시 (404) 특정페이지로 이동하기
web.xml

<error-page>
<error-code>404</error-code>
<location>/jsp/notfound.jsp</location>
</error-page>
okjsp.pe.kr 에서 퍼왔습니다.

그걸 다시 퍼옴

from jongsclub
 
 

Older Posts »

Blog at WordPress.com.