[Flex] SharedObject 예제 ETC

프로젝트 중 관리자 로그인 페이지에 로그인 한 후 sharedobject를 이용해서 아이디와 레벨값을 저장하고 계속해서 가져올수 있도록 한 것입니다.


mxml소스1
...

var ylogin:SharedObject = SharedObject.getLocal("workerlogin","/"); //getLocal 없으면 생성, workerlogin.sol로 저장됨
ylogin.data["workerid"]=feedRequest.lastResult.workers.worker.w_id; //아이디 저장
ylogin.data["workerlevel"]=feedRequest.lastResult.workers.worker.w_level; //레벨 저장
ylogin.flush(); // 저장,  flush메소드 안에 크기를 지정할수 있는것 같습니다.

//var workerid:String=ylogin.data["userid"]; // SharedObject타입의 data["asdf"]에서 asdf는 오브젝트같은 key-value 형식임. object의 data 같은것.
// 값 넣기는 var ylogin:SharedObject = SharedObject.getLocal("yuyeon_login");
// 변수명  = ylogin.data["userid"]; 형식으로

...

mxml소스2
...

[Bindable] private var levelvalue:String = ylogin.data["workerlevel"];  // 불러와 levelvalue에 레벨값 s 저장

...

        <mx:HTTPService id="member_upper" url="http://localhost:8080/jsp/memberupper.jsp"
        useProxy="false" fault="mx.controls.Alert.show('upper_jsp파일을 못부름. 권한이 충분하지 않을 수 있습니다.');" result="resultHandler(event, 2);">
         <mx:request xmlns="*">
           <mem_level>{levelupper.value}</mem_level>
           <mem_id>{id_dg.selectedItem.id}</mem_id>
           <current_level>{levelvalue}</current_level> <!-- 관리자 레벨값을 받아옴. 여기서는 s -->
           </mx:request>
        </mx:HTTPService>
...

JSP페이지(회원관리 페이지에서 선택한 회원을 삭제하는 페이지)
if (current_level.equals("s") || current_level.equals("n") || current_level.equals("m"))) { //관리자레벨이 s,n,m이면 가능
    sql="delete from member where member_id='"+mem_id+"'";
    try {
        stmt=con.createStatement();
        stmt.executeUpdate(sql);
        stmt.close();
    } catch(SQLException ex) {
        System.out.println(ex);
    }

    try {
        ...

마지막으로 어도비 강좌 영상

무료 flex(action script)IDE Flash Develop 설치 & 설정(임시 정리) ETC


영속성(persistence/퍼시스턴스/persistent?/퍼시스턴트?/)란? Java

영속성(persistence)

위키피디아의 정의에 따르면, 영속성(persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일 시스템, 관계형 테이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. 결국 영속성은 특정 데이터 구조를 이전 상태로 복원할 수 있게 해주어 프로그램의 종료와 재개를 자유롭게 해준다.

the characteristic of data that outlives the execution of the program that created it: which is achieved in practice by storing the data in non-volatile storage such as a file system or a relational database or an object database

영속성이 필요한 객체를 'persistent object'라고 하는데, 필요없는 객체는 어떻게 표기할까? 먼저 위키피디아에서는 반대 표현을 ephemeral이라 한다. 처음보는 형용사인데, 영속성이 불필요한 데이터 구조를 수식할 때 사용하는 것이다.

출처 : http://younghoe.info/228

[servelt,tomcat]톰캣 6.0 서블릿 로딩 설정(context.xml) Servlet

출처 : http://www.jiny.kr/jiny/333    by 지니

Tomcat의 버전이 올라가면서 보안상의 이유로 기본적으로는 서블릿을 실행하 
지 못하도록 설정이 되어있다. 


그래서 다음과 같이 설정해 주면 Tomcat에서 서블릿을 실행할 수 있다. 
   

톰캣은 환경설정과 관련된 내용을 web.xml 파일에 담고 있다. 톰캣을 설치한  
디렉터리의 conf 디렉터리에 있는 web.xml 파일을 수정함으로써 톰캣을 실행하 
는데 필요한 환경설정 정보를 변경할 수 있다.  


□ 톰캣의 환경설정 파일  
◇ %CATALINA_HOME%\conf\web.xml  

web.xml 파일에서 서블릿을 실행할 수 있도록 서블릿의 접근 방법을 지정해 줌 
으로써 서블릿 서비스를 제공할 수 있다.  

서블릿을 실행하기 위한 환경설정 파일을 수정해 보자. 다음의 위치에 설정되어 있는 주석을 해제하면 된다.  

□ web.xml 파일의 변경  
◇ 99번째 ~ 109번째 줄 주석 해제  
    <servlet> 
        <servlet-name>invoker</servlet-name> 
        <servlet-class> 
          org.apache.catalina.servlets.InvokerServlet 
        </servlet-class> 
        <init-param> 
            <param-name>debug</param-name> 
            <param-value>0</param-value> 
        </init-param> 
        <load-on-startup>2</load-on-startup> 
    </servlet> 
◇ 348번째 ~ 351번째 줄 주석 해제  

    <servlet-mapping> 
        <servlet-name>invoker</servlet-name> 
        <url-pattern>/servlet/*</url-pattern> 
    </servlet-mapping> 

□ XML 문서의 주석문 기호  
◇ 주석문의 시작 : <!--  
◇ 주석문의 끝 : -->  

위의 위치에 설정되어 있는 주석 기호를 삭제하면 서블릿을 실행할 수 있다. 

그런데 Tomcat 6.0에서는 위와 같이 주석을 풀고 실행해도 Tomcat 시작시 다음과 같은 Exception이 발생한다. 

java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be 
 loaded by this web application 
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1134) 
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045) 
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351) 
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) 
 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920) 
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883) 
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) 
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
 at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
 at org.apache.catalina.startup.Catalina.start(Catalina.java:566) 
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 at java.lang.reflect.Method.invoke(Unknown Source) 
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 


톰캣 6.x 버전부터는 다음과 같이 서블릿 리로딩에 관련된 추가적인 설정을 해 주어야 한다. 

Tomcat 설치 디렉터리의 conf/context.xml 파일을 열고, 
<Context> 태그를 다음과 같이 수정한다. 

<Context reloadable="true" privileged="true"> 

그러면 Tomcat 시작 시 에러가 발생하지 않으며, 서블릿도 정상적으로 실행된다. 


----------------------------------------------------------------- 
4. Turn on Servlet Reloading 
The next step is to tell Tomcat to check the modification dates of the 
 class files of requested servlets, and reload ones that have changed  
since they were loaded into the server's memory. This slightly degrades  
performance in deployment situations, so is turned off by default.  
However, if you fail to turn it on for your development server, you'll  
have to restart the server every time you recompile a servlet that has  
already been loaded into the server's memory. Since this tutorial  
discusses the use of Tomcat for development, this change is strongly  
recommended. 


To turn on servlet reloading, edit Edit install_dir/conf/context.xml and change 

  <Context> 
    to 

  <Context reloadable="true" privileged="true"> 

    Note that the privileged entry is really to support the invoker  
servlet (see the following section), so you can omit that entry if you  
do not use the invoker.

출처 : http://www.jiny.kr/jiny/333    by 지니

[java.jsp,mysql] 자바, JSP 개발환경 구축(설정) 가이드 for 초심자(with 이클립스/eclipse, 톰캣/tomcat, mysql) Java

updated at 2010-07-19

초심자가 초심자를 위해 작성한 자바, JSP 개발환경 구축 가이드 입니다.
본격 초보자를 위한 최신 JSP설치(설정) 가이드!(?)

  1. http://java.sun.com 에서 jdk 설치, 경로는 “C:/java/” 로 시작하게 수정
    CLASS_PATH(.;), PATH(jdk폴더), JAVA_HOME(jdk폴더 지정) 환경변수 설정, 명령프롬프트로 java, javac 테스트
  2. 톰캣설치, 경로는 “C:/tomcat” 으로 수정, CATALINA_HOME(톰캣폴더) 환경변수 설정, 톰캣폴더의 lib에 있는 서블릿라이브러리 jdk로 옮긴다
  3. http://dev.mysql.com/downloads/connector/j 에 가서 커넥터를 받고, 압축을 푼 후  “mysql-connector-java-5.1.12-bin.jar” 을 톰캣설치폴더안에 있는 lib  에 넣는다
  4. http://commons.apache.org 에 가서 pool, dbcp, collections 세가지를 받고 컨텍스트(가상 폴더)로 지정할 폴더를 만들고, 그 가상폴더의 “루트폴더/WEB-INF/lib” 에 넣음
  5. 가상루트폴더/WEB-INF 폴더에 “톰캣폴더\webapps\ROOT\WEB-INF 있는 web.xml을 복사한 다음 다음 내용을 추가 (description 이후 주석의 다음부분을 추가한다. 에러페이지 부분은 선택사항), res-ref-name 부분은 jdbc/디비별칭 형식으로(별칭은 맘대로)

<description>MySQL Test App</description>

<!-- DOWNNN ERROR PAGEEEEE dbcp CONFIGGGGGG -->

   <error-page>

   <exception-type>java.lang.Exception</exception-type>

   <location>/error.jsp</location>

   </error-page>


   <resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/mydbcp</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

   </resource-ref>

<!-- ENDDDDDDDD -->

  1. 톰캣설치폴더 안의 cof폴더에 있는 xml파일들 수정 ( context.xml 의 WatchedResource부분 이후의 주석 다음줄부터 추가한다. ), name을 디비별칭으로 지정한 것과 같은 내용으로.url 끝부분의 kumdong은 앞으로 만들 데이터 베이스 이름이다.
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- DOWNNNNNNNNN -->

<Resource name="jdbc/mydbcp" auth="Container" type="javax.sql.DataSource"

         maxActive="100" maxIdle="30" maxWait="10000"

          username="root" password="ttt" driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost/kumdong" />

<!-- ENDDDDDDDDD -->

  1. server.xml 의 host 태그내에 끝부분에 다음을 추가한다. docBase에 컨텍스트 폴더를 지정
   <!-- HOST BOTTOM HEREEEEEE -->
   <Context path="" reloadable="true" docBase="D:\myapp" />
   <!-- ENDDDDDDDD -->

  1. mysql(http://www.mysql.com/downloads/mysql) 설치(euc-kr 인코딩으로)
  2. Heidi SQL(www.heidisql.com) 설치, db생성(kumdong)
  3. 가상폴더의 루트위치에 다음 파일을 넣은다음 테스트
    ex) http://localhost:8080/DBCPTest.jsp

    DBCPTest.jsp

<%@ page contentType="text/html; charset=euc-kr" %>

<%@ page import="java.sql.*, javax.naming.*,

javax.naming.Context, javax.naming.InitialContext, javax.sql.DataSource" %>


<html>

<head>

<title>DBCP test</title>

</head>

<body>

<%

Statement stmt = null;

ResultSet rs = null;

Connection con = null;


try{

Context initCtx = new InitialContext();

Context envCtx = (Context)initCtx.lookup("java:comp/env");

DataSource ds = (DataSource)envCtx.lookup("jdbc/mydbcp");

con = ds.getConnection();


    out.write("DBCP Connection. <br><br>");


String sQuery = "select 1 + 1";

stmt = con.createStatement();

rs = stmt.executeQuery(sQuery);


while (rs.next()) {

   out.write("1 + 1 = " + rs.getString(1) + "<br>");

}

} catch (Exception ex) {

ex.printStackTrace();

} finally {

if (rs != null) try {rs.close();} catch (Exception ex2) {}

if (stmt != null) try {rs.close();} catch (Exception ex3) {}

if (con != null) try {rs.close();} catch (Exception ex4) {}

}

%>


</body>

</html>

  1. include폴더에 try, catch, pageCount jsp파일 셋팅, mysql사이트에서 ODBC 커넥터 설치(10번 항목은 옵션임)
  2. www.eclipse.org/ 에서 이클립스 EE 버전으로 설치, 워크스페이스지정, 톰캣연동(server 설정)
  3. http://servlets.com/cos/ 에서 라이브러리 설치
  4. http://www.andykhan.com/jexcelapi/download.html  에서 엑셀 연동 jar파일 설정
 
written by stringargs

1 2 3 4 5
Top