2011년 1월 20일 목요일

자바 웹 struts 개발환경 설치

아무래도 관련 학부 졸업자가 아니다 보니? 기본적인 지식이 부족해서, 뭐든 해도 체계적으로 잘 못 하고 자꾸 땜질 식으로 처리하게 돼서 좀 더 체계적으로 정리를 해보려고 한다.

 

WebApp 개발을 위한 환경 설정

1. 다운로드 및 설치
eclipse-jee-helios-SR1-win32-x86_64
, apache-tomcat-7.0.5
, mysql-essential-5.1.53-win32, mysql-workbench-gpl-5.2.31a-win32

1.1. eclipse 설정
charset: window>preferences>general>content types> [type 별로 utf-8로]
...>general>workspace> [text file encoding utf-8로]
...>web>css files, html files, jsp files> [encoding utf-8로]

1.2. apache-tomcat 실행 위한 환경변수 설정
제어판>시스템>고급시스템속성>환경변수>시스템변수>새로만들기>[변수JAVA_HOME 값java\jdk1.6.0_23]
...>편집>[Path 값 끝에 ;%JAVA_HOME%\bin 추가]

2. struts를 위한 설정
eclipse
file>import>war file> [다운로드 받은 struts의 예제 war파일: \struts-1.3.10\apps\struts-mailreader-1.3.10.war 등]

3. apache-tomcat 서버 eclipse에 설정
eclilpse
file>new>other>server

3.1. tomcat이 jre로 jdk의 jre를 사용하도록 설정(꼭 필요한지?)
eclipse
window>preferences>java>installed jres> [jre6 선택 후 edit]>jre home 변경

 

4. web application에서 mysql 접근할 수 있도록 tomcat에 resource로 등록(jndi 등록?) -> 다소 복잡
cf) jndi: The Java Naming and Directory Interface. 자바 플랫폼에서 제공하는, 여러가지 서비스를 이용하기 위한 통일된 주소 체계. 분산 컴퓨팅 환경에서 컴포넌트를 관리하고 찾을 수 있도록, java ee(enterprise edition)에 일치하여 동작한다.
참고url: http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_Example

1) http://www.mysql.com/products/connector/에서 jdbc 드라이버 다운로드 하여 $CATALINA_HOME/lib에 복사
2) tomcat에 ds에 관한 jndi설정을 추가하여 ds를 사용할 수 있게.
* tomcat의 server.xml에 설정하면 안됨. 반드시 해당 webapp의 meta-inf 아래 context.xml을 만들고 아래 내용을 복사

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="struts-mailreader-1.3.10" path="/struts-mailreader-1.3.10" reloadable="true" source="org.eclipse.jst.j2ee.server:struts-mailreader-1.3.10">
    <!-- maxActive: Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to -1 for no limit.
         -->

    <!-- maxIdle: Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->

    <!-- maxWait: Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->

    <!-- username and password: MySQL dB username and password for dB connections  -->

    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
         -->
   
    <!-- url: The JDBC connection url for connecting to your MySQL dB.
         -->

  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="1004" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/test"/>

</Context>

3)해당 webapp(or context)의 web.xml에 아래 내용 추가       
   
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
  <description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
</web-app>

*향후 db연결 정보는 해당 webapp의 meta-inf아래 context.xml만 수정하면 된다.

4) test!
test.jsp만들고 기입
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="javax.naming.*, javax.sql.*, java.sql.*" %>
<%
Connection conn = null;
PreparedStatement stmt = null;
Statement stmt2 = null;
ResultSet rs = null;

Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/TestDB");

conn = ds.getConnection();
String msg = "disconnection";
if(conn!= null){
    msg = "connection";
}

stmt2 = conn.createStatement();

String query = "select id, foo, bar from testdata where id = 2";

rs = stmt2.executeQuery(query);

rs.next();

String r1 = "";
String r2 = "";
String r3 = "";

r1 = rs.getString(1);
r2 = rs.getString(2);
r3 = rs.getString(3);

System.out.println(r1);
System.out.println(r2);
System.out.println(r3);
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
hello world!
</body>
</html>

댓글 없음:

댓글 쓰기