달력

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

version.tistory.com  fs 2008 07

1.스트링 배열 사용 ~

int MaxArray=3;
String []Array_tag=new String[MaxArray];
Array_tag[0]="그냥 다시";
Array_tag[1]="new안해도";
Array_tag[2]="된다";

원래 String은 new 안해도 기본으로 되서 그런건가???


2. 객체 배열 사용

T_SEC []m_DOCS=new T_SEC[50];
위에서 선언해주고 다시 new 해주고 쓴다
m_DOCS[i]=new T_SEC();
   
m_DOCS[i].어쩌구~~~

 

:
Posted by mastar
2008. 7. 6. 14:39

JSP XML DOM 파서 활용 예제 용-ILE/LANG-JAVA(JSP)2008. 7. 6. 14:39

http://suite.tistory.com/  2008 07

드뎌 XML 돔파서 간단용 ASP ->  PHP -> ASPX -> JSP 순으로 완료다.

============= common.jsp =============================

<%@ page contentType="text/html;charset=EUC-KR" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>


<%!

 final String G_ROOT_URL="http://locahost:6973/test.cgi?";

 final String strVal(String str){
  if(str == null) str = "";
  return str.trim();
 }

 class T_DOC{
  String id;
  String sim;
  HashMap<String,String> hm_item=new HashMap<String,String>();
 }


 class SrchInfo{


  StringBuffer m_URL=new StringBuffer();
 
  SrchInfo(){
   m_URL.append(G_ROOT_URL);
  }
 
  public void SetQRY(String p_name,String p_value){
   m_URL.append(p_name + "=" + p_value + "&");
  }

  //  헤더 정보 변수
  String m_section_name;
  String m_usrspec;
  String m_idxname;
  String m_qryflag;
  String m_srtflag;
  String m_totcnt;
  String m_maxcnt;
  String m_outcnt;
  String m_pagenum;
 
  // 결과 정보
  ArrayList<T_DOC> m_DOCS=new ArrayList<T_DOC>();


  private DocumentBuilderFactory docBuilderFactory;

  private DocumentBuilder docBuilder;

  private Document doc;
  private NodeList nodeDOC;
 
  public void GetData(){

   try{
   
 // DocumentBuilderFactory 의 객체 생성
 DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
 // factory로부터 DocumentBuilder 를 얻어온다.
 DocumentBuilder docBuilder=docBuilderFactory.newDocumentBuilder();

   // XML 문서로부터 DOM 객체를 만들어서 문서(Document) 로 반환 받는다.
   //System.out.println(p_xmlfile);
   
   Document doc=docBuilder.parse(m_URL.toString());
   
   //메타 정보 추출
   nodeDOC=doc.getElementsByTagName("section");
   
  m_section_name=nodeDOC.item(0).getAttributes().getNamedItem("name").getNodeValue();
 
  m_usrspec=nodeDOC.item(0).getChildNodes().item(1).getFirstChild().getNodeValue();
  m_idxname=nodeDOC.item(0).getChildNodes().item(3).getFirstChild().getNodeValue();
  m_qryflag=nodeDOC.item(0).getChildNodes().item(5).getFirstChild().getNodeValue();
  m_srtflag=nodeDOC.item(0).getChildNodes().item(7).getFirstChild().getNodeValue();
  m_totcnt=nodeDOC.item(0).getChildNodes().item(9).getFirstChild().getNodeValue();
  m_maxcnt=nodeDOC.item(0).getChildNodes().item(11).getFirstChild().getNodeValue();
  m_outcnt=nodeDOC.item(0).getChildNodes().item(13).getFirstChild().getNodeValue();
m_pagenum=nodeDOC.item(0).getChildNodes().item(15).getFirstChild().getNodeValue();
   
   
   int count=Integer.parseInt(m_outcnt);
   
   for ( int i=0 , idx=19; i < count ; i++ , idx+=2 ){
   
    T_DOC tmp_doc=new T_DOC();
   
tmp_doc.id=nodeDOC.item(0).getChildNodes().item(idx).getAttributes().getNamedItem("id").getNodeValue();
tmp_doc.sim=nodeDOC.item(0).getChildNodes().item(idx).getAttributes().getNamedItem("sim").getNodeValue();
 
    int child_cnt=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().getLength();
     
    for ( int j = 1 ; j < child_cnt ; j+=2 ) {
     
 String tag=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().item(j).getAttributes().getNamedItem("name").getNodeValue();
 String value=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().item(j).getFirstChild().getNodeValue();
     tmp_doc.hm_item.put(tag,value);
    }
   
    m_DOCS.add(tmp_doc);
   }
   
    }catch(java.lang.Exception e) {

               System.err.println("==GetData()]"+ e.toString());
               e.printStackTrace(System.out);
              // System.exit(-1);
       }
  }// end of  GetHeader
 
  public void GetResults(){

  }

}//end of class

%>


==================== index.jsp ===========================================

실제 사용 샘플 페이지
 
<%--   xml parse fs 2008 07 --%>
<%@ page contentType="text/html;charset=EUC-KR" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%@ include file="common.jsp" %>

<%
 SrchInfo OB_SrchInfo=new SrchInfo();

 OB_SrchInfo.SetQRY("w","test");

 String qry=strVal(request.getParameter("qry"));
 
 if( qry.length() == 0 ) qry="*";


 OB_SrchInfo.SetQRY("q",URLEncoder.encode(qry));

 //  xml 파서 시작
 OB_SrchInfo.GetData();

 out.println("<xmp> "  + OB_SrchInfo.m_URL + "</xmp>" );

%>

 <HEAD>

 <TITLE>XML JAVA 파서 샘플 페이지</TITLE>

 </HEAD>

 <BODY>
 <P>
 <table>
 <form name=form action=index.jsp method=get>
  검색어:<input type=text name=qry value=<%= qry %>>
  <input type=submit value="검색">
 </form>

 </table>
 <검색 결과 헤더 정보> : <br>
  &nbsp;&nbsp;- 전체건수: <%= OB_SrchInfo.m_totcnt %> <br>
  &nbsp;&nbsp;- 요청건수(outmax값): <%= OB_SrchInfo.m_maxcnt %> <br>
  &nbsp;&nbsp;- 출력건수: <%= OB_SrchInfo.m_outcnt %> <br>
  &nbsp;&nbsp;- 출력페이지번호: <%= OB_SrchInfo.m_pagenum %> <br>

 <p>
 <검색 결과 데이터> :
 <p>

<%
 
 for(int i=0; i < OB_SrchInfo.m_DOCS.size() ; i++){
 
  T_DOC RESULT=OB_SrchInfo.m_DOCS.get(i);
 
  out.println( "DOC ID : " +  RESULT.id  + "<br>");
  out.println( "DOC SIM : " + RESULT.sim + "<br>");
  out.println( "제목 : " + RESULT.hm_item.get("TITLE=") + "<br>");
  out.println( "내용 : " + RESULT.hm_item.get("ARTICLE=") + "<p>");

 }
%>


실제 활용예 소스는 아니지만 좀 아는 사람이라면
실무에 패키지해서 유용하게 사용할수도 있을것이다~~
2008 07 fs

 

:
Posted by mastar

http://suite.tistory.com/

 2008 04 fs


<%@ page import="java.net.URL" %>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.InputStreamReader" %>

<%

String SRCH_URL="http://host_ip:6973/cgi-bin/pro.cgi?q=getUrlStr";
try {

    BufferedReader br = new BufferedReader(new InputStreamReader((new URL(SRCH_URL)).openConnection().getInputStream()));
 
    out.println(br.readLine());
 
} catch(Exception e) {
    throw e;
}
%>

 

:
Posted by mastar

http://suite.tistory.com/  fs 2007 12


환경 : 오라클 10G

was: jeus 5


jsp jdbc 디비연결 모듈을 자바 빈즈로 두고 사용하다가 가끔 아래와 같은 500 Internal server error 에러를 내보낸다.

몇가지 테스트를  하다보니

userBean 옵션중에 scope를 "request"로 변경하니 에러가 완전 사라짐





ex ) <jsp:useBean id="DBC_BEAN" class="fs_pkg.DBClass" scope="session"/>

      변경 => <jsp:useBean id="DBC_BEAN" class="fs_pkg.DBClass" scope="request"/>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



?? ??: next
 
error dump javax.servlet.ServletException: ?? ??: next
 at jeus.servlet.jsp2.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:859)
 at jeus.servlet.jsp2.runtime.PageContextImpl.handlePageException(PageContextImpl.java:789)
 at jeus_jspwork._srch_5fmgr._klaw_5finfo._500_left_5fbottom_5fjsp._jspService(_500_left_5fbottom_5fjsp.java:635)
 at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
 at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:213)
 at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)
 at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:185)


root cause java.sql.SQLException: ?? ??: next
 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
 at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1130)
 at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:202)
 at jeus_jspwork._srch_5fmgr._klaw_5finfo._500_left_5fbottom_5fjsp._jspService(_500_left_5fbottom_5fjsp.java:440)
 at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
 at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
 at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:213)
 at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)
 at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:185)

ORA-17009

Closed Statement


Ora 17009

ORA-17009

Closed Statement

 

:
Posted by mastar


http://suite.tistory.com/

fs 2007 05


JSP 서버: 톰켓 5.5.17 tomcat  / 리눅스

현상 : a href 링크로 다운로드 구현시 한글 경우 URL 인코딩  되어 파일을 찾을수 없는 현상 발생


조치: server.xml 수정 해당 포트의 URL encoding 못하게 설정

Connector 찾기 ex)4129

URIEncoding="UTF-8" 추가

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 <Connector port="4129" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

:
Posted by mastar

http://cafe.naver.com/linuxmaster.cafe 2006 11

각 해당 서버 WEB 로직 리스타트 : http://웹로직서버ip:포트/console  계정로긴: system계정/패스워드

 ==> 애플릿메뉴에서 Deployments -> Web  Application Modules -> kms ->deploy ->Redeploy

:
Posted by mastar

http://suite.tistory.com/

JSP jdk 1.5 이상 apache-tomcat-5.5.17


<%@ page pageEncoding="euc-kr"%>
<%@ page import="java.util.*" %>
<%
 //C sprintf 와 같은 String.format 사용 예제

 String tmp_str=new String();
 String srch_path="HOME &gt 마이홈 &gt 통합검색 &gt KMS";
 tmp_str=tmp_str.format(Locale.US,"테스트 %s ",srch_path);
 out.println(tmp_str);
%>

:
Posted by mastar

http://suite.tistory.com/ fs 2008 4


import java.io.*;
public class GET_LIST {

 /**
  * @param args
  */
 public static void RECURSIVE_FILE(File p_file){
 
  File []arrFS=p_file.listFiles();
  for(int i=0;i<arrFS.length;i++){
    if(arrFS[i].isDirectory()){
     //System.out.println(arrFS[i].getName());
     RECURSIVE_FILE(arrFS[i]);
    }
    System.out.println(arrFS[i].getName());
    //if()
  }
   
 
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 

  //c:\에 있는 모든 파일
  File fl=new File("C:/");
 
  RECURSIVE_FILE(fl);


 

 }

}
              

 

:
Posted by mastar

http://suite.tistory.com/ 2007 11 21 fs


자바 1.5 XML 파서 API 중에 getTextContent() 함수가  꽤? 유용하다~

근데 일반 적으로 쓰는 1.4 버전에는 지원을안한다 ~~ 그렇다고~ getFirstChild() 함수나 getNodeValue() 를 이용하면

코딩줄이 늘어나기 시작한다~~  

그래도 쓸려고 검색을 좀했더니

어느 착한 외국분이 구현해 두었다~~~


출처: http://www.java-answers.com/index.php?action=recent;start=60


소스를 보고 자신에 맞게 고쳐써두 잘돌아간다.

ex) CDATA 도 받을려면 if (child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.CDATA_SECTION_NODE) 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


public static String getTextContent(Node node) throws DOMException
{
String textContent = "";

if (node.getNodeType() == Node.ATTRIBUTE_NODE)
{
textContent = node.getNodeValue();
}
else
{
Node child = node.getFirstChild();
if (child != null)
{
Node sibling = child.getNextSibling();
if (sibling != null)
{
StringBuffer sb = new StringBuffer();
getTextContent(node, sb);
textContent = sb.toString();
}
else
{
if (child.getNodeType() == Node.TEXT_NODE)
{
textContent = child.getNodeValue();
}
else
{
textContent = getTextContent(child);
}
}
}
}

return textContent;
}


private static void getTextContent(Node node, StringBuffer sb) throws DOMException
{
    Node child = node.getFirstChild();
    while (child != null)
    {
if (child.getNodeType() == Node.TEXT_NODE)
{
sb.append(child.getNodeValue());
}
else
{
getTextContent(child, sb);
}
        child = child.getNextSibling();
    }
}


public static void setTextContent(Node node, String textContent) throws DOMException
{
if (node.getNodeType() == Node.ATTRIBUTE_NODE)
{
if (textContent == null) textContent = "";
node.setNodeValue(textContent);
}
else
{
Node child;
        while ((child = node.getFirstChild()) != null)
        {
            node.removeChild(child);
        }
       
        if (!StringUtils.isEmpty(textContent))
        {
Text textNode = node.getOwnerDocument().createTextNode(textContent);
node.appendChild(textNode);
        }
}
}


 

:
Posted by mastar

http://suite.tistory.com/ 2007 8  fs


아파치나 로그나 기타 검색 키워드 로그 리스트를 파일로 가지고 있다고 하고

여기서 키워들간에 랭킹을 하는걸 자바로 구현해보았다.

자바 API 만 이용햇고  성능이 어디까지 될런지는 모름  --;


소스는 파일 첨부


중요 소스


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

파일에서 한줄씩읽어서 vector 객체에 저장 후  

while( (readline_str=reader.readLine()) != null){
  AL.add(readline_str.substring(6).trim());
 }

 Object []AR=AL.toArray();
Arrays.sort(AR); <-같은 키워드 형태로 정렬????

~~~~~~~~~~~~~~~~~~~~~~~~~~~`

// 같은 키워드 정렬된 배열리스트를 랭킹 적용
Collections.sort(VT,new KWDComparator()); <- 해당키워드의 카운트를 백터에 저장할걸 함수 오버라이딩한

비교 함수 KWDComparator.class 를 이용 내림 차순????

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 무슨말인지 모르겠군 --; 그냥 소스 참고바람


사용 샘플

원본 리스트 (test.log)

~~~~
104825 내부
104833 내부
105926 종합
105930 종합
110023 종합
110914 연구개발서비스업
111352 종합

~~~


1. 사용법


  알축해제후 run.sh 실행

  윈도우라면 bat 파일로 만들어서 실행


2. 결과 resut.lst

카운트 / 키워드

~~~~~~~~~~~

  42 내부
18 종합
15 교육
15 휴가
2 공지
1 교육훈련
1 내ㅜㅂ
~~~~~~~~~~~~

     * 스크랫시 덧글 센스

 

:
Posted by mastar