在Eclipse 下以 Tomcat server 進行 MySQL database 存取之 WTP (Web Tools Platform) Project的偵錯與開發
下載之 Eclipse IDE 解壓縮後, 在其 eclipse 目錄下即有執行檔可直接執行
(在此我下載 apache-tomcat-6.0.28-windows-x86.zip 下載後解壓縮至 c:\Program Files\Java
解壓縮後, 請複製一份 MySQL 之 library (mysql-connector-java-5.1.x-bin.jar) 到Tomcat安裝目錄
下之lib目錄)
(建立 localhost:3306/user 之 database, id 為 root , pw 請自行設定, 以上參數, 在建立 database
connection 時, 會用到請依你的設定, 正確填入. 另外請再建立一 table, member 內含
sno,name,id,pw四個項目, 以存取資料)
選取 Windows -> Preferences -> Server -> Runtime Environments -> Add 以設定 WTP 使用 Tomcat

選擇你的 Tomcat 版本

設定 Tomcat 安裝之目錄

按 Finish 及 OK 後, 你已可以 Tomcat 執行 WTP project 了
選取 File -> New -> Other -> Web -> Dynamic Web Project. 以建立新的 "Dynamic Web Project"

建立專案名稱 testwtp

按 Finsh 後, 一個新的 "Dynamic Web Project" 就建立了
選取 File -> New -> Other -> Java -> Package (不一定要經 Other, 但是所有可建立的東西在此都可找到) 以建立與專案同名之 Package

我在 testwtp 下, 建了兩個 Package


在 member 下, 放了 AddMemberControlServlet.java, AddMemberControl.java 及 Member.java 三個程式
在 testwtp.member 下, 按右鍵 New -> Other -> Web -> Servlet 以建立Servlet

建立Java Class 如同一般 Java 程式

下面是此專案, Sever side utilities 之參考程式碼
Member.java 程式碼:
package testwtp.member;
public class Member {
private String name;
private String id;
private String pw;
public Member(String name, String id, String pw) {
this.name = name;
this.id = id;
this.pw = pw;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getPW() {
return this.pw;
}
public void setPW(String id) {
this.id = pw;
}
}
AddMemberControl.java 程式碼:
package testwtp.member;
import testwtp.Utility.MemberDAO;
import testwtp.member.Member;
public class AddMemberControl {
public boolean addMember(String name, String id, String pw) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
// String id = req.getParameter("id");
// String pw = req.getParameter("pw");
Member newMember = new Member(name,id, pw);
MemberDAO mDAO = new MemberDAO();
if (mDAO.addMember(newMember)) {
return true;
} else {
return false;
}
}
}
AddMemberControlServlet.java 程式碼:
package testwtp.member;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import testwtp.member.AddMemberControl;
/**
* Servlet implementation class AddMemberControlServlet
*/
public class AddMemberControlServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddMemberControlServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = req.getParameter("name");
String id = req.getParameter("id");
String pw = req.getParameter("pw");
// Member newMember = new Member(id,pw);
AddMemberControl mAdd = new AddMemberControl();
try {
if (mAdd.addMember(name, id, pw)) {
resp.sendRedirect("ResultPage.jsp?msg=1");
} else {
resp.sendRedirect("ResultPage.jsp?msg=0");
}
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MemberDAO.java 程式碼:
package testwtp.Utility;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import testwtp.member.Member;
public class MemberDAO {
private Connection con;
private void buildConn(String host, String id, String pw)
throws InstantiationException, IllegalAccessException,
ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://" + host, id, pw);
}
private Statement getStatement() throws SQLException {
return con.createStatement();
}
private boolean closeConn() throws SQLException {
this.con.close();
return true;
}
public boolean addMember(Member member) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
//1. 取得member的資料
String name=member.getName();
String id=member.getId();
String pw=member.getPW();
//2. 建立資料庫連線
try {
buildConn("127.0.0.1:3306/user", "root", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Statement stmt=null;
try {
stmt = getStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//A. 先給定查詢該使用者是否存在之SQL語法
String qsql="select * from member where id='"+id+"'";
//B. 判斷查詢結果,若存在,回傳False,不存在,繼續新增使用者
try {
if(stmt.executeQuery(qsql).next()){
closeConn();
return false;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Statement stmt2=null;
try {
stmt2 = getStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3. 建立SQL insert語法 (v)
String sql="insert into member(name,id,pw) values('"+name+"','"+id+"','"+pw+"')";
//4. 上傳資料
try {
stmt2.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//5. 回傳成功與否
try {
closeConn();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}
Client side utilities 之所有檔案要放在資料夾 WebComtent 下, 在此我建了 AddMemberPage.jsp 及 ResultPage.jsp
在 WebComtent 下, 按右鍵 New ->JSP 以建立 JSP 檔

下面是此專案, Client side utilities 之參考程式碼
AddMemberPage.jsp 程式碼:
<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
</head>
<body>
<form action="AddMemberControlServlet" method ="post">
<p align="center">
<font size="5"><b>請輸入:</b></font>
</p>
<p> </p>
<p align="center">
<br>
姓名: <input type="text" name="name" size="20"><br>
帳號: <input type="text" name="id" size="20"><br>
密碼: <input type="password" name="pw" size="20"><br>
<input type="submit" value="確認">
<input type="reset" value="取消">
</p>
</form>
</body>
</html>
ResultPage.jsp 程式碼:
<%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
</head>
<body>
<p><a href="AddMemberPage.jsp">回首頁</a></p>
<%
String msg1 = request.getParameter("msg");
if (msg1.equals("1")) {
out.print("Add successful!!");
} else {
out.print("Add failed!!");
}
%>
</body>
</html>
修改 WebContent/WEB-INF/web.xml 以使 AddMemberPage.jsp 成為 Welcome page, 參考程式碼如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>testwtp</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>AddMemberPage.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>AddMemberControlServlet</display-name>
<servlet-name>AddMemberControlServlet</servlet-name>
<servlet-class>testwtp.member.AddMemberControlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddMemberControlServlet</servlet-name>
<url-pattern>/AddMemberControlServlet</url-pattern>
</servlet-mapping>
</web-app>
以 Run ->Debug As ->Debug on Server 來執行程式之偵錯


執行 Debug 時, Eclipse 之視窗如下, 但有時不會顯示, 需用 外部 Browser 檢視 http://localhost:8080/testwtp/AddMemberPage.jsp

以 Run ->Run As ->Run on Server 來執行程式, 若程式正確則可以, Exoport Web Archive
在專案名稱上點擊滑鼠右鍵, Export -> WAR file 以 建立 Web Archive

Destination 依個人之選定