아무래도 관련 학부 졸업자가 아니다 보니? 기본적인 지식이 부족해서, 뭐든 해도 체계적으로 잘 못 하고 자꾸 땜질 식으로 처리하게 돼서 좀 더 체계적으로 정리를 해보려고 한다.
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>
댓글 없음:
댓글 쓰기