달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 10. 28. 17:37

[JSP] JSP 자주쓰는 코드 정리 Enjoy/JSP2008. 10. 28. 17:37


출처 : http://blog.naver.com/korekiss/20044092634


<%
response.sendRedirect("링크주소"); // 주소로 이동
str.length(); //글자길이 갯수 구하기
str.substring(3,7); //글자의 3에서 7번째까지 추출
str.append("문자열"); //str의 문자열에 추가

▷JSP 액션태그

 <jsp:forward>       다른페이지로 이동
 <jsp:include>       다른페이지를 페이지 안에 추가                                               <jsp:include page="url" flush="true" />
 <jsp:parma>         forward, include, plugin과 같이 사용되어 인자를 추가할때
 <jsp:plugin>         애플릿과 같이 클라이언트에서 사용되는 객체 삽입
 <jsp:useBean>     자바빈즈 사용
 <jsp:setProperty>  자바빈즈 프로피티의 값을 설정할때
 <jsp:getProperty>  자바빈즈 프로피티의 값을 얻는데 사용

 

▷토큰자르기 (java.util.*)
 String tel = "055-1234-5678";
 StringTokenizer str = new StringTokenizer(tel, "-");
 str.nextToken()  //055
 str.nextToken()  //1234
 str.nextToken()  //5678

 

▷파일 (java.io.*)
 -파일생성
 String filename = "c:\\aaaaa\\bbbbb\\test.txt";  //리눅스일때 http://mediafile.paran.com/MEDIA_11888685/BLOG/200711/1195526717_
 File f = new File(filename);  //파일클래스 작성
 f.createNewFile();  //파일 생성

 -파일쓰기
FileWriter fw = new FileWriter(filename);  //객체생성
 String data = "ㅇㅇㅇㅇㅇㅇㅇ";
 fw.write(data);  //파일쓰기
 fw.close();  //파일저장

-파일읽기
 FileReader fr = new FileReader(filename);  //리더객체생성
 BufferedReader br = new BufferedReader(fr);  //버퍼리더객체생성 - readLine();
 String line;
 while((line=br.readLine()) != null){
    out.println(line + "<br>");  //여러줄 읽어오기
 }

 -파일정보보기
 f.getAbsolutePath();  //절대경로
 f.getName();  //파일이름
 f.getParent(); //파일위치한 경로
 f.length();  //파일크기

 -파일삭제
 if(f.exists()){  //파일이 존재하면
    f.delete();
    out.println("파일이 삭제되었습니다.");
 }else{
    out.println("파일이 없습니다.");
 }

 

▷형변환
 String -> int
 String a="15";
 int b = Integer.parseInt(a);

 
 int -> String
 int a=12;
 Integer  b=new Integer(a);  //Integer객체 선언
 String c = B.toString();  //toString() 형변환
 

▷세션
 if(session.getAttribute("sid")==null){  //세션값이 아무것도 없을때
   out.println("세션 정보가 없습니다.");
   session.setAttribute("sid", session.getId());  //임의의 세션id를 sid에 저장
   session.setAttribute("name", "이름");  //이름을 name세션에 저장
 }else{
   out.println("이브라우저에 대한 세션 ID는 " + session.getAttribute("sid")+ "입니다.");
   out.println("name에 저장된 값은 " + session.getAttribute("name") + "입니다.");
 }
 session.setMaxInactiveInterval(3600);  //세션 유지시간 (1시간동안)

▷쿠키
 -저장
 Cookie cook1 = new Cookie("name", "aaa");  //쿠키객체생성
 cook1.setPath="/";  //쿠키가 적용될 웹서버의 url 경로
 cook1.setMaxAge(60*60*24*365); //쿠키가 유지되는 시간(1년) -1일경우 삭제하지 않는한 영구
 response.addCookie(cook1);  //쿠키를 클라이언트에 세팅

 Cookie cook2 = new Cookie("mail", aaa@aaa.com);
 cook2.setPath="/";
 cook2.setMaxAge(60*60*24*356);
 response.addCookie(cook2);


 -가져오기
 try(
  Cookie[] cookies = request.getCookies();
   for(int i = 0; i < cookies.length; i++){
     out.println(cookies[i].getName() + "은" + cookies[i].getValue() + "입니다.
   }
 }catch (Exception e){
   out.println(e);
 }

 -삭제하기
 try{
   Cookie[] cookies = request.getCookies();
   for(int i=0; i< cookies.length; i++){
     Cookie cook = cookies[i];
     cook.setMaxAge(0);
     response.addCookie(cook);
   }
   out.println("쿠키가 삭제되었습니다.");
 }catch(Exception e){
   out.println(e);
 }

 

▷JDBC드라이브
 Class.forName("org.gjt.mm.mysql.Driver");
 -mysql
 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "test", "pass");  //연결객체생성
 Statement stmt = conn.createStatement();  //스테이트먼트 객체생성
 ResultSet rs = stmt.executeUpdate("insert into test(id, age) values('aaa','123')");  //쿼리문실행
 rs.next();  //다음 리절트 셋

:
Posted by 라면스프
2008. 10. 28. 17:34

[JAVA] Shell Script 팁 (Unix포함) Enjoy/JAVA2008. 10. 28. 17:34


출처 : http://blog.naver.com/vital45/110024999490


1. 스크립트를 생성할때 구조화를 염두에 둔다
- Unix에서 보통 파일 구조가
/bin
/var/log
등등의 형식을 따르고 있기 때문에 가독성을 높이고 직관적으로 알아볼수 있게 하기 위해 생성

2. find  $PATH -type f | grep -v ".svn"
- .svn이 포함된 디렉토리는 무시하고 file을 검색

3. find . -name "*.sh" | xargs grep "STRING"
- *.sh 의 파일 중 내용에 STRING이 포함되어 있는 곳을 stdout으로 출력

4. 제어권을 갖고 있는 곳은 한군데로 통일하고, 나머지 스크립트는 모든 인자를 받아서
각각의 행동을 하도록 한다.

5. 로그 이름은 script이름과 되도록 통일하여 가독성을 높이도록 한다.

6. wget --output-file=/DIRECTORY/output.log --spider http://localhost:8080/
- wget: 지정된 경로에서 파일 다운로드
- --output-file : 로그 메세지를 지정된 파일에 저장
- --spider: 파일 다운로드 받지 않음

7. shell에서 덧셈 시
- loopcount=0
- loopcount=`expr $loopcount + 1`
- 중요한건 expr 문장을 감싼것은 `(tild)라는 것. 물론 syntax에서 구별할수 있겠지만...

8. svn checkout REPO_PATH PATH
- checkout 명령은 PATH에 없으면 REPO_PATH에서 내려받고, 이미 PATH가 존재하면 update를 한다.
- checkout, update 명령을 굳이 구별할 필요가 없음.

9. shell 스크립트 호출 후 표준출력을 웹 화면에서 보여주는 방법 (jdk 1.5)
(1) jsp 에서
cmd = "ssh";
url = id@server;
args = "A B C";

ProcessBuilder process = ProcessBuilder.start(cmd, url, args);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

while ((line = br.readLine()) != null)
   System.out.println(line);

(2) java에서
cmd = "ssh";
url = id@server;
args = "A B C";

ProcessBuilder process = ProcessBuilder.start(cmd, url, args);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

while ((line = br.readLine()) != null) {
   // newLine 가공 부분은 따로 처리하는게 있는걸로 알고있는데..
  // 나중에 한번 찾아봐야 할듯. 아래는 예상 코드
   String contents = line + "\n";
}

contents를 jstl을 이용하여 뿌려주는 식으로...

10. Subversion에서의 tag
- SVN Repository를 구성할때 아래와 같은 구조를 권장하고 있다.
repository/trunk : 현재 작업본
repository/branches : 테스트 버전이랄까? (beta버전)
repository/tags : 잠금 버전 (완성본)

TotoiseSVN에서 branches/tags를 클릭하면 실제로 수행하는 명령어는 svn copy다.
svn copy는 Working Copy(이하 WC) 와 Repository PATH(이하 URL)에서 실행할 수 있다. (조합 4가지)
svn copy -m "Message" [WC|URL] [WC|URL]

참고: svn switch 를 실행하면 현재 경로에서부터는 svn repository path를 변경한다.
.svn/entries 의 주소를 확인해보면 알 수 있다.
더 확장하면 svn propset을 이용한 external link를 하는 법도 있는데.. 이건 정확히 잘 모르겠음.

11. argument를 delimeter로 잘라서 loop 돌리는 법
INPUT=$1
DELIM=":" # Delimiter

for part in `echo $input | sed "s/$DELIM/ /g"`
do
   echo $part
done
- sed명령어를 묶어준 것도 역시 `(tild) 이다.

12. ls 에 대한 새삼 깨달은 팁
- ls | grep $option1 | grep $option2
grep 을 줘서 각 인자에 대한 리스트를 뽑아올 수 있다.

 

:
Posted by 라면스프
2008. 10. 28. 17:13

[JSP] HttpSessionBindingListener Enjoy/JSP2008. 10. 28. 17:13


출처 : http://blog.naver.com/korekiss/20038228350


HttpSessionBindingListener 는 웹에서 동시 사용자의 수 또는 하나의 아이디로 동시접속을 제한 할때 유용한 인터페이스 이다.  HttpSessionBindingListener 는 두개의 메소드를 지니는데 valueBound() 와 valueUnbound() 메소드 이다.
 
valueBound() 는 HttpSessionBindingListener 클래스의 인스턴스가 세션에 attribute로
등록될떄 호출된다  session.setAttribute(플래그, 값)
valueUnbound()는 session.removeAttribute(플래그); 사용시
또는 세션종료시  session.invalidate()호출된다.
 
다음은 이를 이용한 동시 사용자및 중복 로그인 방지 프로그램이다.
 
 
LoginManager.java
 
package cookie;
 
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import java.util.Hashtable;
import java.util.Enumeration;
 
public class LoginManager implements HttpSessionBindingListener
{
             private static LoginManager loginManager = null;
             private static Hashtable loginUsers = new Hashtable();
             private LoginManager(){
                           super();
             }
             public static synchronized LoginManager getInstance(){
                           if(loginManager == null){
                                        loginManager = new LoginManager();
                           }
                           return loginManager;
             }
 
             //아이디가 맞는지 체크
             public boolean isValid(String userID, String userPW){
                           return true;   //자세한 로직은 미구현
             }
 
             //해당 세션에 이미 로그인 되있는지 체크
             public boolean isLogin(String sessionID){
                           boolean isLogin = false;
                           Enumeration e = loginUsers.keys();
                           String key = "";
                           while(e.hasMoreElements()){
                                        key = (String)e.nextElement();
                                        if(sessionID.equals(key)){
                                                     isLogin = true;
                                        }
                           }
                           return isLogin;
             }
 
             //중복 로그인 막기 위해 아이디 사용중인지 체크
             public boolean isUsing(String userID){
                           boolean isUsing = false;
                           Enumeration e = loginUsers.keys();
                           String key = "";
                           while(e.hasMoreElements()){
                                        key = (String)e.nextElement();
                                        if(userID.equals(loginUsers.get(key))){
                                                     isUsing = true;
                                        }
                           }
                           return isUsing;
             }
 
             //세션 생성
             public void setSession(HttpSession session, String userID){
                           loginUsers.put(session.getId(), userID);
                           session.setAttribute("login", this.getInstance());
             }
 
             //세션 성립될 때
             public void valueBound(HttpSessionBindingEvent event){
             }
 
             //세션 끊길때
             public void valueUnbound(HttpSessionBindingEvent event){
                           loginUsers.remove(event.getSession().getId());
             }
 
             //세션 ID로 로긴된 ID 구분
             public String getUserID(String sessionID){
                           return (String)loginUsers.get(sessionID);
             }
 
             //현재 접속자수
             public int getUserCount(){
                           return loginUsers.size();
             }
};
 
Bind_login.jsp
 
<%@ page contentType="text/html;charset=euc-kr"
             import="cookie.LoginManager"%>
 
<% LoginManager loginManager = LoginManager.getInstance(); %>
<html>
<body>
<center>
현재 접속자수 : <%= loginManager.getUserCount() %><p>
<hr>
<%
             if(loginManager.isLogin(session.getId())){  //세션 아이디가 로그인 중이면
                           out.println(loginManager.getUserID(session.getId())+"님 안녕하세요<br>"
                                                                  +"<a href=bind_logout.jsp>로그아웃</a>");
             }
             else{  //그렇지 않으면 로그인 할 수 있도록
%>
<form name="login" action="bind_login_ok.jsp">
아이디: <input type="text" name="userID"><br>
비밀번회: <input type="text" name="userPW"><br>
<input type="submit" value="로그인">
</form>
<%         }%>
</center>
</body>
</html>
 
Bind_login_ok.jsp
 
<%@ page contentType="text/html;charset=euc-kr"
             import="cookie.LoginManager"%>
 
<% LoginManager loginManager = LoginManager.getInstance(); %>
<%
             request.setCharacterEncoding("euc-kr");
            
             String userID = request.getParameter("userID");
             String userPW = request.getParameter("userPW");
 
             if(loginManager.isValid(userID, userPW)){
                           if(!loginManager.isUsing(userID)){
                                        loginManager.setSession(session, userID);
                                        response.sendRedirect("bind_login.jsp");
                           }
                           else{
                                        throw new Exception("이미 로그인중");
                           }
             }
             else{
                           throw new Exception("ID/PW 이상");
             }
%>
 
Bind_logout.jsp
 
<%@ page contentType="text/html;charset=euc-kr"%>
<%
             session.invalidate();
             response.sendRedirect("bind_login.jsp");
%>
 
:
Posted by 라면스프