param 위치 정보 마음의 양식





ERP/회계부서 IFRS

ERP/회계부서
전산화와 시스템화에서 가장 필수적인 부서는 다름 아닌 회계부서입니다.
증빙서류, 전표서류 종이 세금계산서 처리와 같은 업무의 경우 우편발송시간, 비용, 인력 등을 많이 필요로하고 시간을 많이 소모하게 되는 경우가 많습니다.
이러한 문제점들을 극복하기 위해 일부 기업의 회계 부서에서는 전자세금계산서, 전자영수증, 법인카드 시스템 등을 도입해 각종 증빙서류를 전자화시키고, 그룹웨어를 통해 전자결재를 통해 종이 없는 프로세스(e-Paperless Process)를 구현하고자 하는 기업들이 생겨나고 있습니다.
이러한 기업들은 전표실을 없애고 CD 몇 장 또는 서버 1대로 그 자리를 대신합니다.
필요한 서류도 쉽게 찾을 수 있으며 보관된 자료를 바탕으로 비용에 대한 분석자료도 만들어 낼 수 있습니다.
전자세금계산서는 종이로 주고받게 돼 있는 세금계산서를 인터넷을 통해 온라인으로 주고받을 수 있도록 구현한 거래방식으로, FnC코오롱 등이 도입하고 있습니다.
이밖에도 재무정보의 빠르고 다양한 활용과 국제적 통용이 가능한 재무제표를 위해 재무보고용 국제표준 전산언어(XBRL)의 도입이 추진중이며, 회계기준의 적합성 제고를 위해 국제회계기준(IFRS) 도입을 위한 로드맵이 연말에 발표될 예정입니다.
기업에서는 매출을 늘리고 비용을 줄이는데 있어 업무의 시스템화와 전산화가 가장 필수적이라 할 수 있습니다.
회계업무의 전산화는 전표 확인하는 시간을 줄이고 비용 분석을 통한 올바른 비용 사용을 유도하여 21C 기업들에게 시대적 사명으로 떠오르고 있습니다. 


Java Session 정리 JSP

[ session ]

--------------------------------------------------------------
request.getRequestedSessionId()는 지금 만들어진 세션Id을 보기 위함이 아니라,
이전에 만들어진세션의 Id를 보기 위함입니다
--------------------------------------------------------------
세션은 보통 세션만 쓰지는 않습니다. 요것이 life타임이 얻는것이나 셋팅하는 값으로 잘 안되기 때문입니다.
디폴트가 30분인데 30분이 되기 전에 사라지는 일이 종종발생하기 때문입니다.
세션에 대한 메소드를 추가 해서 소스를 올렸습니다.
getCreateTime : 생성된 시간을 반환해주는 메소드입니다.
getLastAccessedTime : 마지막으로 세션을 access한 시간을 반환해줍니다.
getMaxInactiveInterval  : 마지막 acceess로 부터 살아남을 수 있는 시간입니다.
하지만 전 그전에 사라지는 경우를 종종 봐왔기때문에 오히려 살아남을 수 있는 최대한의 시간이라고 말하고 싶습니다.
getId : 서버가 클라이언트별루 주는 세션ID입니다. 인식자인 셈이죠..

아래 소스를 실행하면 아이디를 넣어 달라는 말이 나올겁니다. 거기서 아이디를 넣으면 그 아이디를 세션에 넣습니다.
그리고는 소스 하단부분의 if문장을 실행하게 되죠.

 

<%@ page contentType="text/html; charset=euc-kr"   session="true" %>
<%@ page import="java.io.*,java.util.*"%>
<html>
<body>
<%
if(session.getValue("id") == null  ){
%>
  아이디를 입력하세요.<br>
  아이디가 없으신 분은 guest를 입력하세요.<br>
  <form  >
      아이디 <input type="text" name="id"><br>
              <input type="submit" value="login">
  </form>           
<%
}
%>

<%
String user="";
if(request.getParameter("id") != null){
  user=request.getParameter("id");
  session.putValue("id",user);
          java.util.Enumeration st = session.getAttributeNames();
%>
  <br>
  <table border="1" align="center">
              <tr>
                          <td>getCreationTime()</td>
                          <td><%=(new Date(session.getCreationTime()))%></td>
              </tr>
              <tr>
                          <td>getID</td>
                          <td><%=session.getId()%></td>
              </tr>
              <tr>
                          <td>getMaxInactiveInterval</td>
                          <td><%=(session.getMaxInactiveInterval()/60)%>min</td>
              <tr>
              <tr>
                          <td>getLastAccessedTime()</td>
                          <td><%=(new Date(session.getLastAccessedTime()))%></td>
              </tr>
  </table>

<%
}
%>
</body>
</html>

--------------------------------------------------------------
일정한 시간이 지나서, 이미 해당 HttpSession 이 invalidate 되었군요...
이미 invalidate 된 session을 다시 invalidate 시키려고 하면 IllegalStateException이
발생합니다. 이 경우에 발생하는 IllegalStateException은 무시하시면 되겠습니다.

아래처럼 고치세요..

>    String mem_id = req.getParameter("mem_id");
>    HttpSession session = SessionPool.get(mem_id);
>
>    if(session!=null) {
>       session.invalidate(); // <--- !!!
>       SessionPool.remove(mem_id);
>    }

==>

>    String mem_id = req.getParameter("mem_id");
>    HttpSession session = SessionPool.get(mem_id);
>
>    if(session!=null) {
>       try{session.invalidate();}catch(Exception e){} // <-- !!!
>       SessionPool.remove(mem_id);
>    }
--------------------------------------------------------------

1. 현재 로긴되어 있는 사용자들의 id 와 세션카운트를 하는 방법

 

package session;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Enumeration;

public class SessionDisplay extends HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse res)
 throws ServletException, IOException {

  res.setContentType("text/plain");
  PrintWriter out = res.getWriter();

  HttpSession dummySession = req.getSession(true);
  dummySession.putValue("userID", "Watcher");
  HttpSessionContext context = dummySession.getSessionContext();

  int i = 0;
  Enumeration ids = context.getIds();
  out.println("========================================");   
  out.println("No  SessionID  UserID");   
  out.println("========================================");   
  while (ids.hasMoreElements()) {
   i++;
   String id = (String) ids.nextElement();
   HttpSession session = context.getSession(id);
   String user_id = (String)session.getValue("userID");
   out.print("(" + i + ")" + id );
   out.println("  userID = [" + user_id + "]");   
  }
  out.println("========================================");   
  out.println("Total Connect User : " + i );
  out.println("========================================");   
  out.flush();
 }
}
--------------------------------------------------------------

1. user들이 로그인시 각각의 session에 아이디등이 저장됩니다.
    관리자입장에서 모든 유저들의 로그인상태를 알고자 하는데요,
    모든 유저들의 session에 저장된 값을 읽을수 있는지요...

 

   int k = 0;
   int j = 0;
   HttpSessionContext context = session.getSessionContext();
   Enumeration ids = context.getIds();
   while(ids.hasMoreElements())
   {
      String id = (String) ids.nextElement();
      out.println("<tr><td>");
      out.println(id);
      HttpSession foreignSession = context.getSession(id);
      String foreignUser = (String) foreignSession.getValue("LoginUser");
      String foreignName = (String) foreignSession.getValue("LoginUserName");
      out.println("<td>"+foreignUser);
      out.println("<td>"+foreignName);
      out.println("<td>"+request.getHeader("REMOTE_ADDR"));
      out.println("<td>"+new Date(foreignSession.getCreationTime()));
      out.println("<td>"+new Date(foreignSession.getLastAccessedTime()));
      out.println("</tr>");
   }
  
   위와 같이 하였더니 되더군요...
   근데요 브라우저 기준 세션을 보여주더군요...
   세션이 null로 나온것은 세션저장안된 브라우저랍니다. 
--------------------------------------------------------------

1. 세션 ID획득하는 방법임다.
  
   // 이건 세션의 컨텍스트를 얻기위한겁니다..(컨텍스터를 이용해서 세션의 ID를 알려고...)
   HttpSessionContext context = session.getSessionContext();
  
   // 위의 컨텍스트를 이용해서...
   Enumeration ids = context.getIds();
  
   // 최신의 상태가 아닌 세션을 검색하기위해 세션ID를 살펴봄..
   while (ids.hasMoreElements()) {
      String id = (String)ids.nextElement();
      out.println("Checking " + id + "...."); // 세션의 ID가 나오겠죠...
      HttpSession session = context.getSession(id);
      . . .
      String foreignUser = (String)foreignSession.getValue("user_id");
   }
--------------------------------------------------------------

1. jsp에서 회원로그인에서 session을 받아 처리하는 부분하고 이 session을 가지고
   정보수정이랑 하고 싶은데 어떻게 처리를 해 줘야 하나요?
  
   로그인할때 회원아이디값을 넘겨줍니다.
   값을 받은 페이지에서는 그 값을 세션에 넣습니다.
   이렇게요..
   session.putValue("id",userid);
   여기서 userid는 회원아이디값을 받은 String입니다.
   그러면 세션에 id가 들어가겠지요.
   다음으로 정보수정하는 페이지에 세션을 가져오는 문장을 넣지요.
   session.getValue("id");
   그리고 그 값을 String형으로 변환해서 임의의 변수에 넣습니다.
   그리고 그 임의의 변수를 이용해서 해당회원의 정보를 수정하면 되겠지요...
--------------------------------------------------------------

1. >client별 세션객체를 얻어서 client들의 세션 저장내용을 지우는 부분입니다...
   >근데 맨날도 아니구 가끔 아주 가끔 foreignSession객체에서 NullPointerException이
   >발생하는데요... 왜 그런에러가 나는지 모르겠네요...

   > HttpSessionContext context = session.getSessionContext();
   > Enumeration ids = context.getIds();
   > while(ids.hasMoreElements())
   > {
   > id = (String) ids.nextElement();
   > HttpSession foreignSession = context.getSession(id);
   > String[] session_valuenames = foreignSession.getValueNames();
   > for(int i=0; i<session_valuenames.length; i++)
   > {
   > foreignSession.removeValue(session_valuenames[i]);
   > }
   > }
  
   일종의..동기화 문제로 보여집니다.
   세션목록을 가져온 후,
   그리고 세션저장내용을 지우기 전에
   세션타임아웃 등의 이유로 세션이 없어지면
   해당 id값이 없으니 null이 들어갈것이구..
   모 일단 그렇게 보여지네요 ^^


또한 참고하세요..

 

☞ 로그인하고 로그아웃할때 데이터베이스 테이블에 값을 설정해서 비교하는 방법이 있습니다.

☞ 세션정보에 로그인한 사용자의 데이터도 넣을수 있을수 있다면,
세션을 체크해서 주기적으로 데이터베이스를 체크한다면 가능할거 같기두 한데요...

☞ javax.servlet.http.* 패키지에 보면 HttpSessionBindingListener 인터페이스가 있습니다.

이 인터페이스에는 몇개의 메소드가 있는데 그 중 한개가 아래에 있는것입니다.

 

// HttpSessionBindingListener 구현
public void valueUnbound(HttpSessionBindingEvent http) {
        logout();
}

 

위 메소드는 서블릿에서 사용자의 세션이 끊어졌을때 생기는 이벤트입니다.
그러니깐 사용자가 로그인 했을때 데이타 베이스에 세션 정보가 있다면 중복 로그인한 사용자이고, 없다면 세션 정보를 넣어두고, 위 메소드에서 세션 종료시 DB에 저장된 세션정보를 지우던지 필드를 셑팅하던지 작업을 하시면 될것같습니다.

 

? 관련 메소드 정리

Object getAttribute(String name)
 - 주어진 이름으로 세션에 저장된 객체를 리턴한다. ※ Object getValue(String name)

Enumeration getAttributeNames()
 - 세션에 저장된 모든 객체들의 이름을 Enumeration 타입으로 리턴한다. ※ String

 

getValueNames()
long getCreationTime()
 - 1970년 1월 1일 0시 0분 0초를 기준으로 세션이 생성된 시간을 리턴한다.(단위 ms)

String getId()
 - 세션의 ID를 리턴한다.

long getLastAccessedTime()
 - 1970년 1월 1일 0시 0분 0초를 기준으로 클라이언트가 이 세션에서 요청을 보낸 마지막 시간을 리턴한다.

int getMaxInactiveInterval()
 - 서버가 클라이언트의 요청없이 세션을 유지하는 최대 시간을 리턴한다. (단위 초)

void invalidate()
 - 세션을 종료한다.

boolean isNew()
 - 세션이 만들어지고 클라이언트가 아직 세션에 조인되지 않았으면 true를 리턴한다.

void setAttribute(String name, Object value)
 - 세션에 이름을 이용해서 객체를 저장시킨다. ※ void putValue(String name, Object value)

void removeAttribute(String name)
 - 주어진 이름의 객체를 세션에서 삭제한다. ※ void removeValue(String name)

void setMaxInactiveInterval(int interval)
 - 클라이언트의 요청없이 세션을 유지할 수 있는 최대 시간을 설정한다. (단위 초)


위 글은 http://bbs.hompy.info/bbs/board.php?bo_table=java_study&wr_id=12 퍼온글입니다.


request 내장객체 JSP

1.요청받을 form을 만든다.
1.1 requestForm.jsp 만든다.
 1.2 소스:
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>request Result</title></head>
<body>
<form name="frm" method="post" action="requestResult1.jsp">
<h3>Request 내장객체</h3>
이 름: <input name="name" type="text" size="10"><br>
나이 : <input name="age" type="text" size="10"><br>
성별 : 남자 <input name="gender" type="radio" value="m" checked>
 여자 <input name="gender" type="radio" value="w"><br>
취미 : <select name="hobby">
<option value="잠자기">잠자기</option>
<option value="온라인게임">온라인게임</option>
<option value="당구">당구</option>
</select>
<input type="submit" value="send">
</form>
</body>
</html>




이어지는 내용

URL과 URI차이점 IT용어

URL(Uniform Resource Locator)은 웹 상에서 서비스를 제공하는 각 서버들에 있는 파일들의 위치를 표시하기 위한 것으로 접속할 서비스의 종류,도메인명,파일의 위치 등을 포함한다.URI(Uniform Resource Identifier)는 존재하는 자원을 식별하기 위한 일반적인 식별자를 규정하기 위한 것으로 URL에서 HTTP프로토콜,호스트명,port 번호를 제외한 것이다.
예를들어 http://127.0.0.1:8180/study/ch04/requestTest1.jsp에서 URL은 http://127.0.0.1:8180/study/ch04/requestTest1.jsp 가 되고 study/ch04/requestTest1.jsp은 URI가 된다.

1 2 3


메모장