- 방법 1
<jsp:useBean id="year" scope="request" type="java.lang.String"/>
<jsp:useBean id="month" scope="request" type="java.lang.String"/>
<jsp:useBean id="last" scope="request" type="java.lang.Integer"/>
<jsp:useBean id="map" scope="request" type="java.util.Map<?,?>"/>
<jsp:useBean id="list" scope="request" type="java.util.List<com.acroem.undine.bean.Sensor>"/>

- 방법 2
String year = (String)request.getAttribute("year");
String month = (String)request.getAttribute("month");
Integer last = (Integer)request.getAttribute("last");
java.util.Map<?,?> map = (java.util.Map<?,?>)request.getAttribute("map");
java.util.List<?> list = (java.util.List<?>)request.getAttribute("list");

아직 어느방법이 좋다고 할순 없지만

방법 1의 경우에는 request 받을때 null이 들어 올 경우 오류가 발생함
방법 2의 경우에는 null이 와도 if문을 이용하여 null체크가 가능

아직 머가 좋다고 말 못하겠음 ㅋ
Posted by 나비 나비:D

jsp :: Commons-DbUtils

2008.03.06 11:07
 
출처 Min Gun | 민군
원문 http://blog.naver.com/levin01/100011050694

Commons-DbUtils

 

I. 어디서 다운을 받나요?


http://jakarta.apache.org/site/downloads/downloads_commons-dbutils.cgi


II. 설치는 어떻게 하나요?

다운 받은 commons-beanutils.jar는 자신의 /WEB-INF/lib/ 에 복사합니다


III. DbUtils란 무엇인가요?

DbUtils는 JDBC 작업을 좀더 쉽게 할수있도록 해주는 작은 클래스 집합입니다.


IV. 왜 DbUtils를 사용해야 하는가요?

① resource 누출에 대한 어떠한 가능성도 없습니다
  JDBC코딩을 하는데 있어서 쉽지않고 양도 만만치 않으며 지루해 지기 쉽습니다
  이러다 보면 자기도 모르게 Connection 누수를 발생시킬수 있는데 이러한 가능성을 배재해 줍니다


② 코드의 가독성이 높아집니다
  데이터베이스 처리하는데 필요한 코드의 양을 절대적으로 줄여야 합니다.
  남아있는 코드로 당신의 의도를 정확하게 나타내어야 합니다.


③ ResultSet으로 부터 JavaBean property로 세팅을 해줍니다!
  더이상 setter메소드를 이용하여 ResultSet으로부터 컬럼값을 가져오는 코딩을 하지 않아도 됩니다
  ResultSet 각각의 row는 bean instance의 에 완벽하게 전달해 줍니다


V. 어떻게 사용하나요?

  Connection, Statement, ResultSet 의 close를 간단하게!

    이럴때는 org.apache.commons.dbutils.DbUtils 클래스를 이용하자!

    이 클래스는 모두 static 메소드들로 구성되어있습니다

   

    사용예)

    DbUtils.close(conn);  
    DbUtils.close(stmt);
    DbUtils.close(rs);
    DbUtils.closeQuietly(conn);
    DbUtils.closeQuietly(stmt);
    DbUtils.closeQuietly(rs);
    DbUtils.closeQuietly(conn, stmt, rs);
    DbUtils.commitAndClose(conn);

    DbUtils.commitAndCloseQuietly(conn);
    DbUtils.loadDriver("com.mysql.jdbc.Driver");
    DbUtils.rollback(conn);


    closeQuietly 메소드처럼 뒤에 Quietly라고 붙어 있는 메소드는 익셉션 처리는 자체적으로 처리합니다,

    즉 자신을 call한곳으로 throw 하지 않습니다

    commitAndCloses는 connection을 commit 후 close 하며 rollback는 connection을 rollback 합니다

    loadDriver 는 JDBC 드라이버를 로딩 합니다


 파일로 저장된 SQL을 사용하자!

    이럴 때는 org.apache.commons.dbutils.QueryLoader 클래스를 이용합니다

    이 클래스는 SingleTone 패턴의 클래스입니다

    즉 파일로 저장된 SQL을 읽어 HashMap으로 로드하는 클래스 입니다

   

    사용예)

    QueryLoader queryloader = QueryLoader.getInstance();   //싱글톤
    HashMap hashmap = queryloader.load("sql");      

    queryloader.upload("sql");


    queryloader는 싱클톤이므로 위와같이 객체를 얻어옵니다

    load 함수는 Properties 클래스를 이용하여 sql.properties 파일을 읽어

    HashMap으로 저장하여 리턴하여 줍니다

    unload는 load시 따로 메모리에 저장해 놓았던 sql 정보를 해제합니다


  Setter함수로 더이상 머리 아프지 말자!

   이럴때는 org.apache.commons.dbutils.QueryRunner 클래스를 이용합니다


   사용예)

    ...  

    BoardVO boardVO = null;

    ArrayList arraylist = new ArrayList();

 

    resultset = statement.executeQuery("SELECT * FROM board_t");

    while (resultset.next()) {

        boardVO = new BoardVO();

        boardVO.setTitle("title");

        boardVO.setContent("content");

        boardVO.setWriter("writer");

        arraylist.add(boardVO);       

    }

    ..

   와 같은 코드는 다음과 같이 간략화 됩니다


   ResultSetHandler rsh= new BeanListHandler(BoardVO.class);
   QueryRunner queryRunner = new QueryRunner();

   List list = (List)queryRunner.query(conn, "SELECT * FROM board_t", rsh);


   정말 간단해 집니다 만약 테이블에 컬럼이 30~40개가 된다면..

   select 한문장 할려면 코드수가 몇십줄 입니다. 더이상 노가다 하지 맙시다~


   QueryRunner는 다음과 같은 함수를 지원합니다

   사용예)

  QueryRunner queryrunner = new QueryRunner();
   QueryRunner queryrunner = new QueryRunner(DataSource ds);
//datasource를 바로 이용할 수 있다

  queryRunner.query(Connection conn, String sql, ResultSetHandler rsh)
   queryRunner.query(Connection conn, String sql, Object param, ResultSetHandler rsh)
   queryRunner.query(Connection conn, String sql, Object[] params, ResultSetHandler rsh)


   여기서 말하는 Object param은 파라미터 전달시 사용됩니다

   ArrayList params = new ArrayList();
   params.add("100");

   params.add("200");

   ResultSetHandler rsh = new BeanListHandler(BoardVO.class);
   QueryRunner queryRunner = new QueryRunner();

   List list = (List)queryRunner.query(conn, "SELECT * FROM board_t WHERE boardNo > ? and boardNo < ?", params.toArray(), rsh);


   select 뿐만 아니라 update, delete역시 가능합니다

   사용예)

   QueryRunner queryRunner = new QueryRunner();

   queryRunner.update(Connection conn, String sql)
   queryRunner.update(Connection conn, String sql, Object param)
   queryRunner.update(Connection conn, String sql, Object params[])

  

   ArrayList params = new ArrayList();
   params.add(boardId);
   queryRunner.update(connection, "UPDATE board_t SET read = read + 1 WHERE boardNo = ?", params.toArray());

   와 같이 사용할 수 있습니다



VI. 샘플코드

public class DbUtilsExample() {

   public static void main(String[] args) {

       HashMap map = QueryLoader.getInstance().load("sql");  // (주의) load함수는 실행할때마다 파일을 읽습니다


       Connection conn = null;

       try {

           DbUtils.loadDriver("com.mysql.jdbc.Driver");

           conn = DriverManager.getConnection("jdbc:mysql://localhost/mysql", "root", "");


           ArrayList params = new ArrayList();
           params.add(args[0]);


           ResultSetHandler rsh = new BeanListHandler(BoardVO.class);

           QueryRunner qr = new QueryRunner();

           List list = qr.query(conn, (String)map.get("select"), params.toArray(), rsh);


           for (int i = 0; i < list.size(); i++) {

               BoardVO board = (BoardV)list.get(i);

               System.out.println(board.getTitle());

               System.out.println(board.getContent());

               System.out.println(board.getWriter());

          )

       } catch (Exception e) {

           System.out.println(e);

       } finally {

           DbUtils.closeQuitely(conn);

       }

   }

}



Posted by 나비 나비:D
출처 : 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 나비 나비:D

[JSP] JSP 캐쉬 제거

2007.12.18 09:24

-jsp 에서

<%
 response.setHeader("Cache-Control","no-cache");
 response.setHeader("Pragma","no-cache");
 response.setDateHeader("Expires",0);
%>


-html에서

<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Pragma" content="no-cache"/>



-그리고

브라우저의 도구>옵션>임시 인터넷 파일> 에서 "페이지를 열때마다"로 고쳐준다.

Posted by 나비 나비:D

JavaBeans 란?

2007.12.15 10:18
JSP 에서 HTML Code 와 Java Code 를 별도 file 에 독립시키기 위해서는 JavaBeans 를 이용한 방법과 Custom tag 를 이용하는 방법을 활용할 수 있다. 즉 site 를 방문한 user 에게 보여줄 content page 와 business logic page 를 별도로 나눠서 개발할 수 있는 것이다. 여기서는 먼저 JavaBeans 를 이용하는 방법에 대해 나눠보자.

1. JavaBeans 의 기본
JavaBeans 는 Java 로 Software Component 를 만들기 위한 기술이다.  먼저 Component 에 대해 잠시 정리해 보자.
자동차를 제작할 때 engine 이나 차체 등 이미 만들어져 있는 각종 부품을 조립하는데 비해, program 작성시에는 처음부터 한 줄 한 줄 코딩을 하는 경우가 많다. 당연히 부품을 조립하는 방식보다 모든 것을 처음부터 하는 방식이 비효율적일 것이다. 그래서 program 작성의 효율을 높이기 위해서 software component (부품)을 만들어서 활용하는 방법에 대한 연구가 진행되었고, 각종 component 제작 표준이 발표되었는데,  JavaBeans 도 그 중 하나이다. JavaBeans 라는 용어는 Java Component 제작 표준을 가리킬 때 쓰고, 제작 표준에 따라 작성한 각각의 component 를 bean 이라고 한다.


2. Bean 작성 규칙

  1. member variable 는 private 로 선언한다.
  2. (필요하다면) member variable 에 값을 설정하는 setXxx() method 를 만들고, public 으로 선언한다. member variable 의 이름이 xxx이면 setXxx() 형태가 되어야 한다.
  3. (필요하다면)  member variable 에 값을 읽어오는 getXxx() method 를 만들고, public 으로 선언한다. member variable 의 이름이 xxx이면 getXxx() 형태가 되어야 한다.
  4. member variable 가 boolean 형일 경우, getXxx() method 대신에 isXxx()method 를 만든다.
    기타 필요한 member variable 와 method 를 만든다.
  5. 반드시 bean component는 WEB-INF\classes에 package 별로 저장되어야 한다.
  6. Constructor method 는 parameter 가 없어야 한다. 즉 default constructor 여야 한다.

※ bean 의 member variable 중에서 setXxx() 또는 getXxx() method 가 선언되어 있어서 외부에서 참조할 수 있는 member variable 를 property 라고 한다. primitive data type 뿐만 아니라, array 도 bean 의 property 가 될 수 있고, array 의 경우 indexed property 라고 부른다.


3. bean 의 간단한 예제


4. <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty>

JSP 에서 bean 을 이용하기 위해서는 <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty> action tag 를 활용해야 한다. <jsp:useBean> action tag 는 JSP page 에서 bean 을 초기화하는데 사용하고, <jsp:setProperty> action tag 는 bean 의 property 에 값을 넣어주기 위해서 사용하며, <jsp:getProperty> action tag 는 bean 의 property 에서 값을 가져오기 위해 사용한다.
먼저, bean 을 초기화하는 <jsp:useBean> 의 문법을 보자.
 <jsp:useBean id="bean 이름" class="class 이름" scope="범위지정" />
이번에는 <jsp:setProperty>의 문법을 보자.
 <jsp:setProperty name="bean 이름" property="propery 이름" value="값" />
만일, HTML form 에서 입력한 parameter 를 곧바로 bean 의 property 저장할 수 있는 기능을 보자.
 <jsp:setProperty name="bean 이름" property="propery 이름" param="parameter 이름" />
가령, HTML form 의 parameter 와 bean 의 property 이름이 같다면, 아래와 같이 사용할 수 있다.
 <jsp:setProperty name="bean 이름" property="*" />
또, <jsp:getProperty>의 문법을 보자.
 <jsp:getProperty name="bean 이름" property="property 이름" />

Posted by 나비 나비:D

출처 - http://www.jungil.pe.kr

JSP 내장객체  9가지

 

■ request
클라이언트로부터의 요청을 처리하는 객체

메소드 설 명 비 고
getParameterName() 모든 요청 매개변수의 이름을 리턴합니다. 요청 매개변수를
액세스하기 위한
메소드
getParameter(name) name에 해당하는 매개변수의 값을 리턴합니다.
getParameterValues(name) name에 해당하는 매개변수의 모든 값을 리턴합니다.
getHeaderNames() 요청에 대한 헤더의 이름을 리턴합니다. 요청 헤더를

읽어내는 메소드
getHeader(name) name에 대한 헤더 값을 String형으로 리턴합니다.
getHeaders(name) name에 대한 모든 헤더 값을 리턴합니다.
getIntHeader(name) name에 대한 헤더 값을 int형으로 리턴합니다.
getDateHeader(name) name에 대한 헤더의 날짜값을 리턴합니다.
getCookies() 요청에 대한 모든 쿠키를 리턴합니다.
getMethod() 요청에 대한 HTTP(GET,POST) 메소드를 리턴합니다.
getRequestURL() 요청 URL을 리턴합니다. (질의 문자열은 안 한다.)
getQueryString() 요청 URL을 리턴합니다. (질의 문자열 포함)
getSession(flag) 들어온 요청의 세션데이터를 리턴합니다.
getRequestDispatcher(path) Path에 지정된 로컬URL에 대한 요청 전달자를 리턴합니다.
getRemoteHost() 요청을 보낸 호스트의 이름을 리턴합니다.
getRemoteAddr() 요청을 보낸 호스트의 IP를 리턴합니다.
getRemoteUser() 요청을 보낸 사용자의 이름을 리턴합니다.


■ response
서버가 클라이언트에게 처리결과를 응답하는 객체
메소드 설 명 비 고
setContentType() 응답되는 컨텐츠의 MIME타입을 설정합니다. 컨텐츠 설정에
필요한 메소드
setCharacterEncodeing() 응답되는 컨텐츠의 문자 인코딩 스타일을 리턴합니다.
AddCookie(cookie) 쿠키를 추가합니다. 응답헤더 세팅을

위한 메소드
AddHeader(name,value) 해당이름의 헤더에 값(String)을 추가합니다.
AddIntHeader(name,value) 해당이름의 헤더에 값(int)을 추가합니다.
AddDateHeader(name,date) 해당이름의 헤더에 날자값을 추가합니다.
ContainsHeader(name) 해당이름의 헤더가 포함 되어 있는지 체크합니다.
SetHeader(name,value) 해당이름의 헤더에 값(String)을 넣습니다.
SetIntHeader(name,value) 해당이름의 헤더에 값(int)을 넣습니다.
SetDateHeader(name,value) 해당이름의 헤더에 날짜값을 넣습니다.
setStatus(code) 응답 상태코드를 설정합니다.
sendError(status,msg) 응답코드와 에러 메세지를 설정합니다.
sendRedirect(url) 다른 URL로 이동합니다.
EncodeRedirectURL(url) SendRedirect() 메소드에 넣을 url을 인코딩합니다.
EncodeURL(name) 링크에 넣을 url을 인코딩합니다.


■ session
사용자 개개인의 정보를 처리하는 객체로 사용자가 웹 서버에 접근하면 생성되어 종료 할 때까지 따라다니져..
메소드 설 명
getId() session의 ID를 리턴합니다.
getCreationTime() session이 생성된 시간을 long형으로 리턴합니다.
getLastAccessedTime() session이 마지막으로 액세스된 시간을 리턴합니다.
getMaxInactiveInterval() session이 유지되는 최대시간을 초단위로 리턴합니다.
getMaxInactiveInterval(time) session이 유지되는 최대시간을 초단위로 설정합니다.
isNew() session 값이 없으면 true를 리턴합니다.
invalidate() session 객체를 소멸시킵니다.
session에 저장되어 있던 정보는 모두 삭제됩니다.
getAttribute(name) 세션변수(name)에 설정된 값을 리턴합니다.
setAttribute(name,value) 세션변수(name)에 값(value)을 설정합니다.


■ page
현재 JSP페이지를 나타내는 객체

■ pageContext
JSP 실행에 대한 context 정보를 담고 있는 객체
메소드 설 명 비 고
getException() exception 객체를 리턴합니다. 객체 내부 속성을

알 수 있는

메소드
getOut() out 내부객체를 리턴합니다.
getsession() session 내부객체를 리턴합니다.
getServletConfig() config 내부객체를 리턴합니다.
getServletContext() application 객체를 리턴합니다.
getPage() page 내부객체를 리턴합니다.
getRequest() request 내부객체를 리턴합니다.
getReponse() reponse 내부객체를 리턴합니다.
forward(path) 다른 path에 해당하는 URL로 전달합니다. 요청 전달 메소드
include(path) 다른 path의 페이지를 현제 페이지에 포함합니다.
setAttribute(key,value,scope) Scope의 시간동안 key의 값(value)를 저장합니다. scope속성을

제어 할 수 있는

메소드
getAttributeNamesInScope(scope) 특정 scope의 모든 속성을 리턴합니다.
getAttribute(key,scope) Key에 대한 scope를 리턴합니다.
removeAttribute(key,scope) Key에 대한 scope를 제거합니다.
findAttribute(name) Name에 지정된 속성의 scope를 찾습니다.
getAttributeScope(name) Name에 해당하는 scope를 리턴합니다.


■ out
클라이언트에게 응답하기 위한 output 스트림을 처리하는 객체입니다.
메소드 설 명
print() 내용이 줄바꿈 없이 이어서 출력됩니다.
println() 내용이 줄단위로 출력됩니다.
getBufferSize() 출력버퍼의 크기를 Byte로 리턴합니다.
getRemaining() 출력버퍼의 빈부분 크기를 Byte로 리턴합니다.
clearBuffer() 출력 버퍼를 비웁니다.
clear() 출력 버퍼를 비웁니다. (만약 전에 flush되어 있으면 에러를 발생합니다.)
flush() 출력버퍼를 flush시킵니다.
close() 출력스트림을 닫습니다.


■ application
웹서버의 애플리케이션이 실행되는 실행환경에 대한 정보를 처리하는 객체입니다..
메소드 설 명 비 고
getServerInfo() 컨테이너의 이름과 버전을 리턴합니다. 컨테이너 버전을

알 수 있는 메소드
getMajorVersion() 컨테이너의 주버전을 리턴합니다.
getMinorVersion() 컨테이너의 부버전을 리턴합니다.
getContext(path) Path에 대한 외부환경 정보를 리턴합니다. 서버측의 경로를

알 수 있는 메소드
getRealPath(path) path에 대한 절대경로를 리턴합니다.
getResource(path) path에 지정된 URL을 액세스 객체로 바꾸어줍니다.
getResourceAsStream(path) path에 URL을 읽을 수 있는 입력 스트림으로 바꾸어줍니다.
GetMimeType(filename) filename에 해당하는 파일의 MIME타입을 리턴합니다.
log(msg) msg를 로그파일에 기록합니다. 로그파일 관련 메소드
log(msg,exception) msg와 exception(예외상황)을 로그파일에 기록합니다.


■ config
JSP페이지가 컨테이너에 의해 컴파일되어 서블릿 클래스가 될 때 서블릿의 구성데이터로 초기값과 변수를 저장하는 객체입니다.
메소드 설 명
getInitParameterNames() 변수의 이름을 리턴합니다.
getInitParameter(name) 변수의 이름을 넣을 경우에는 값을 리턴합니다.


■ exception
프로그램에서 예외상황이 발생했을 때 이를 처리하는 객체
exception객체를 다루려면 page지시자의 isErrorPage 속성을 true로 해놓아야 합니다.
<%@ page isErrorPage="true" %>
메소드 설 명
GetMessage() 에러 메세지를 리턴합니다.
ToString() 에러메세지를 String형으로 리턴합니다.
PrintStackTrace(out) 에러발생시 출력스트림을 통하여 출력합니다.
Posted by 나비 나비:D

출처 블로그 > LOVE&FREE
원본 http://blog.naver.com/mysk4521/40027193810

톰켓 5.x  설치                                                        

 

 

어제 저녁 j2sk1.4.2 에 이어 오늘은 톰켓을 설치해 봄돠^^

별로 어려울거 엄죠~

시작 하갓슴네닷~ 히아리 꼬우!! -_-

 

 

 

1. 일단 톰켓을 다운 받아봄니다. http://www.apache.org 여기로 가셔셔 아래 그림의 화살표를 따

    라 조금만 내려가시면 Tomcat 이라는게 있는데 그걸 글릭..
 

 

 

 

 

2. 이런화면이 나옵니다. 거기서 다시 우리가 필요한 Tomcat5.x  요것을 클릭합니다.
 

 

 

 

 

3. 아래와 같은 화면이 나올겁니다. 약간 밑에 있으니 스크롤을 굴려서...

    표시된 부분을 클릭해서 다운 받습니다. 머 아래위로 다른 버전도 있습니다만..

    저는 이걸 다운 받겠습니다. 톰켓5.x 이므로 편한대로 골라주세용^^

 

 

 

 

4. 요로케 생긴놈이 받아 졌나요? 자 이제 인스톨을 시작할까요?
 

 

 

 

 

5. 쭈욱 따라만 가시면 되죵~
 



6. 동의 하실건 동의 해주시고..
 

 

 

 

7. 디폴트로 하시는게 맘 편하실거 같아요 -_-
 

 

 

 

 

8. 자 이제 설치할 위치를 정합니다. 취향에 맞게 설치하세요. 디폴트도 상관없죠.

    저는 아래와 같이 합니다.  보통 c드라이브에들 하시져?

    그리고 환경설정시 아래 주소가 필요하니 메모해두시고..

    물론 윈우 탐색기로 금방 찾아 지지만.. 암튼 기억해 두세요. 자주 들락거릴 위치니까요~


 

 

 


9. 포트랑 유저명, 패스워드 설정화면.. 디폴트로~^^

 

 

 

 

10. 사용하실 JVM을 설정하는거죠. 자신이 사용할JVM을 선택....전 1.4.2가 깔려있군요.

      이것은 자바가 깔려있어야 되것죵^^ 안깔려 있다면 깔고나서 다시!!
 

 


11. 설치가 진행됩니다. 잠시만 기둘려 주시면..


 

 

 

12. 설치가 끝났습니다. 아래는 바로 실행을 체크했습니다.

    시작 - 모든프로그램 - Apache Tomcat 5.0 - Configure Tomcat 에서 시작 종료가 가능


 

 

13. 그리고 이젠 환경변수를 설정해 봅니다. 내컴터 우클릭해서 속성을 클릭하면


 

 

 

 

14. 시스템 등록 정보화면이 나오고 고급을 선택해서 환경변수를 클릭합니다.

 

 

 

 

 

15. 새로 만들기를 선택합니다.
 

 

 

 

16. CATALINA_HOME 을 만들어 줍니다.  경로는 아까 메모했던 톰켓설치 위치죠~

     까먹었다고요? -_-a  윈도우 탐색기를 켜시고 Tomcat 5.0 폴더위치를 찾아봅니다.

     윈도 탐색기 주소표시창의 경로를 카피해 오면 되는 겁니다.
 

 

 

 

17. 이번에는 CLASSPATH를 추가해 보겠습니다.

     CATALINA_HOME을 만들었으므로 아래와 같이 추가해 주시면 되겠습니다. ( ;붙여주고요)

 

 

18. 환경변수 설정도 끝이 났습니다. 톰켓을 기동하시고 아래주소를 쳐 봅니다.

     호랑이 한마리 튀어 나옵니까? 그럼 성공입니다. 혹시 호랑이가 안나오신다거나..

     다른 서블릿, JSP등을 실행하는데 문제가 있다면 대부분 CLASSPATH 문제 일겁니다.

     다시 확인해 보셔요^^ 수고하셨습니다.


 
Posted by 나비 나비:D
Editplus에서 java컴파일하고 실행 설정하는 방법
 
 

먼저 JDK가 깔려있어야 한다

 1. Editplus의 메뉴 도구- 기본설정(P)… 를 선택후 기본설정 창이 열리면

항목아래있는 도구 아래 사용자 도구를 클릭한다

 

 2. 추가>>버튼을 누르고 프로그램을 선택한다.

 


 

3. 한번 더 추가>>버튼을 누르고 프로그램을 선택한 다음선택한다.
 


4. 이제 Editplus로 소스를 작성한 다음 ctrl+1을 눌르면 컴파일

    ctrl+2를 누르면 실행한 화면을 확인할수 있다.

Posted by 나비 나비:D

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
----------------------------- (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

글 보관함

달력

«   2018/01   »
  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      
Total : 903,520
Today : 217 Yesterday : 175