jsp 파일다운로드 샘플

내가 해본 샘플소스

http://fruitdev.tistory.com/48

 

찾다가 먼가 많긴한데 먼지몰라 일단 스크랩한 주소

http://kitchu.tistory.com/48

 

둘다 글번호가 48이넹 -0-

[펌글]mod_jk를 이용한 Apache2 + Tomcat6.0.18 연동 및 가상호스팅

* 개요
이 문서는 80포트만이 열린 네트워크 환경에서 아파치(80포트)와 톰캣(8080포트)을 동시에 서비스 하기 위한

방법을 설명하고 있습니다.

* 시스템사항
Operating System: Centos5
Webserver: Apache 2.2.2
JDK: JDK 6.0
Servlet Container: Tomcat 6.0.18
Tomcat Connector: Jakarta Tomcat Connector mod_jk (not mod_jk2)
* 기본폴더
apache2 : /usr/local/apache
tomcat_home : /usr/local/tomcat
java_home : /usr/local/java
mod_jk : /usr/lib/apache/modules/mod_jk.so
* 설정 순서
1. mod_jk 설치
2. workers.properties 파일 만들기
3. 톰캣의 server.xml 수정
4. httpd.conf 수정
5. 가상호스팅
6. classpath 설정
* 설정설명
1. mod_jk 설치 및 tomcat_native 설치
1.1 mod_jk 설치
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz 을 다운 받아
압축을 푼다.
# cd tomcat-connectors-1.2.28-src
# ./configure –with-apxs=/usr/local/apache/bin/apxs
# make
# make install
1.2 tomcat_native 설치
fedora에서 apr관련 라이브러리 설치(apr-devel)
yum install apr*
tomcat-native.tar.gz 파일을 tomcat 디렉토리에서 찾아 압축을 푼다.
./configure –with-apr=/usr/bin/apr-1-config –with-java-home=/usr/local/java –with-ssl=yes –prefix=/usr/local/tomcat
make
make install
2. workeers.properties 파일 만들기
# vi /usr/local/apache/conf/workers.properties
#아래의 두 설정의 경로는 자신에 맞게 수정합니다.
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
#아래 반복되는 worker1 대신 다른 이름도 상관없습니다.
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1
worker.inprocess.type=jni
3. 톰캣의 server.xml 수정
톰캣/conf/server.xml 에 아래의 코드를 추가합니다.
# vi /usr/local/tomcat/conf/server.xml

Server 태그 바로 아래쪽에 Listener 태그가 적힌곳에 추가하면 됩니다.
modjk와 workersConfig의 경로에 주의해서 자신에 맞게 수정합니다.
톰캣을 재시작 합니다.
# /etc/init.d/tomcat restart

에러없이 재시작 되면 아래와 같은 파일이 생성됩니다.
/usr/local/tomcat/conf/auto/mod_jk.conf
4. httpd.conf 수정
/usr/local/apache/httpd.conf 설정 파일에 아래의 코드를 추가합니다. 항상 경로에 신중하세요.

 

# vi /usr/local/apache/httpd.conf
# Load mod_jk module
# Update this path to match your modules location
#LoadModule jk_module /usr/local/apache/modules/mod_jk.so
# Where to find workers.properties
# update this path to match your conf directory location
JkWorkersFile /usr/local/apache/conf/workers.properties
# Where to put jkshared Memory
JkShmFile /usr/local/apache/logs/mod_jk.shm
# where to put jk logs
JkLogFile /usr/local/apache/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
JkLogStampFormat “[%a %b %d %H:%M:%S %Y] ”
JkRequestLogFormat “%w %V %T”

파일을 저장하고 아파치를 재시작 합니다.
브라우저에서 http://127.0.0.1로 접속했을때 톰캣 페이지가 보이면 연동된 것입니다.
5. 가상호스팅
아파치, 톰캣 각각의 가상호스팅 설정에 대해서 자세히 다루지는 않겠습니다.
아파치, 톰캣 두개의 가상호스팅 설정이 일치해야 연동에 문제가 없습니다.
아파치의 가상호스팅

DocumentRoot /home/test/public_html
ServerName test.co.kr
ServerAlias http://www.test.co.kr
JkMount /*.jsp worker1
JkMount /*.do worker1
JkMount /servlet/* worker1

톰캣의 가상호스팅(server.xml)
# vi /usr/local/tomcat/conf/server.xml
아래 구문을 추가한다.

# cd /usr/local/tomcat/conf/Catalina
# mkdir http://www.test.co.kr
# cd http://www.test.co.kr
가상호스트 설정파일을 만든다.
# vi ROOT.xml
아래 내용을 ROOT.xml에 작성한다.

tomcat 재시작
apache 재시작
6. classpath 설정
가상호스트의 WEB-INF를 인식하지 못하는 경우 /usr/local/tomcat/bin/setclasspath.sh 파일을 아래와 같이 수정
CLASSPATH= 구문 대신 아래 코드를 추가 입력한다.
CLASSPATH=”$CLASSPATH:$CATALINA_HOME/lib/el-api.jar:$CATALINA_HOME/lib/servlet-api.jar:$CATALINA_HOME/lib/jsp-api.jar”
home_root=’/home’
cd $home_root
for home_name in $(ls)
do
if [ -d “$home_root/$home_name/public_html/WEB-INF/classes” ] ; then
CLASSPATH=”$CLASSPATH:$home_root/$home_name/public_html/WEB-INF/classes”
fi
if [ -d “$home_root/$home_name/public_html/WEB-INF/lib” ] ; then
CLASSPATH=”$CLASSPATH:$home_root/$home_name/public_html/WEB-INF/lib”
fi
done
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
class.jsp 파일을 다음과 같이 작성하여 classpath 확인
<%@page contentType=”text/html; charset=euc-kr”%>
<%=System.getProperty(“java.class.path”)%>

[출처] [강추!!!]mod_jk를 이용한 Apache2 + Tomcat6.0.18 연동 및 가상호스팅 (webdori) |작성자 풍사

java.sql.SQLException: ResultSet.next가 호출되지 않았음

8월 05, 2012 12:57:58 오전 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet [jsp] in context with path [/JspProject] threw exception [An exception occurred processing JSP page /act12/member_info.jsp at line 50

47: <table border=”1″ width=”300″>
48: <tr align=”center”>
49: <td>아이디 : </td>
50: <td><%=rs.getString(“id”)%></td>
51: </tr>
52: <tr align=”center”>
53: <td>비밀번호 : </td>
Stacktrace:] with root cause
java.sql.SQLException: ResultSet.next가 호출되지 않았음
at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1107)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:424)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
at org.apache.jsp.act12.member_005finfo_jsp._jspService(member_005finfo_jsp.java:116)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

 

쿼리해온 결과에 접근하여 데이터를 불러오고 싶으면

rs.next() 를 호출해라…

커서를 첫 레코드 앞에 갔다놔야함. 한번만 해야지 또 호출하면 2번째 레코드로 가버린다.

 

[AS-IS]

rs = pstmt.executeQuery();

[TO-BE]

rs = pstmt.executeQuery();
rs.next(); // 쿼리결과 1행만 나올것이므로 커서 위치를 첫 레코드에 위치하게 해줌

오라클 11g 설치관련 정보사이트

1. 설치

– 윈도우 xp환경에 설치시 참조받은 곳

http://blog.naver.com/PostView.nhn?blogId=k2brother&logNo=100041630174&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

 

2. 삭제

– 오라클 삭제관련하여 참조한 곳

http://www.allsoft.co.kr/bbs/board.php?bo_table=study4_2&wr_id=7

 

3. 리스너 관련 정보

http://www.okprogramming.com/742

http://happybruce.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%A6%AC%EC%8A%A4%EB%84%88%EC%9D%98-%EC%97%AD%ED%95%A0-%EB%B0%8F-%EA%B5%AC%EB%8F%99-listenerora-tnsnamesora-%ED%8C%8C%EC%9D%BC%EC%9D%98-%EC%97%AD%ED%95%A0

useBodyEncodingFroURI

톰캣의 server.xml에 URIEncoding=”euc-kr”을 추가하여 한글처리를 할 수 도 있으나

먼가 동적이지 못하다.

같은 위치에 useBodyEncodingForURI=”true” 를 입력후 <– get방식으로 넘어올때는 꼭 입력해줘야한다. post 방식일때는 이런 설정없이 java 소스에서 아래와 같이 설정하면 된다.

java 소스단에서 화면에서 넘어온 값을 euc-kr로 인식하도록 하면된다.

request.setCharacterEncoding(“euc-kr”);

[샘플소스]

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

request.setCharacterEncoding(“euc-kr”);
String name = request.getParameter(“name”);
// String korName = HangulUtil.toKor(name);
String korName = name;

response.setContentType(“text/html;charset=euc-kr”);
PrintWriter out = response.getWriter();
out.println(“original = ” + name + “<br>”);
out.println(“hangul Process = ” + korName);
}