1. 程式人生 > >Java Web開發-簡單的Java Web專案(含訪問本地MySQL)-應用例程

Java Web開發-簡單的Java Web專案(含訪問本地MySQL)-應用例程

一、例程簡介

    本例程可配合Android例程MyApplication測試使用,包含一個TestServlet,用於接收POST請求,訪問本地MySQL資料並返回對應訊息。

    Android例程的開發請看:http://blog.csdn.net/sinat_30685475/article/details/52126549。

    搭建 Java Web 開發環境(包含Eclipse、Tomcat和MySQL的安裝配置)的步驟請看:http://blog.csdn.net/sinat_30685475/article/details/52117384。

二、新建專案

    開啟 Eclipse , [File] - [New] - [Dynamic Web Project] ,輸入專案名稱, [Next] 到最後一頁,勾選 “Generate web.xml deployment descriptor”。

三、建立伺服器專案主頁

    為了在測試Web專案的時候能在瀏覽器上看到點東西,我們在專案中加入一個 index.html 檔案作為訪問的預設主頁。

    1、展開專案目錄,在 WebContent 資料夾下 [New] 一個 [HTML File],命名為 index.html,根據需要輸入標題和內容,例如:

<html>
<head>
<meta charset="UTF-8">
<title>MyWebProject</title>
</head>
<body>
<h2>Hello World!</h2>
</body>
</html>
    2、然後,還要在 WebContent/WEB-INF 資料夾下的 web.xml 裡新增一些內容,這個檔案就像一個目錄,將程式和地址關聯起來。專案要執行 Servlet 和 html 等都要在這裡正確宣告,否則會報 404 錯誤。現在將web.xml 修改成以下這樣:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>MyWebProject</display-name>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
</web-app>
    3、現在,右鍵專案, [Run as] - [Run on Server] ,執行到本地 Tomcat 伺服器後可看到 “http://localhost/MyWebProject/”地址顯示出 index.html 對應的頁面。注意 Tomcat伺服器的預設埠號為8080,這裡設為了80,設定方法:找到對應 Tomcat Server 目錄下的 server.xml,找到:
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
    “8080”改為“80”。

四、建立Servlet

    1、在工程目錄 Java Resources/src 資料夾下 [New] - [Servlet] ,命名為 TestServlet ,內容如下:

package com.example.z.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.example.z.service.TestService;

//@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public TestServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 返回字串
		String responseMsg="FAIL";
		// 輸出流
		PrintWriter out = response.getWriter();
		// 設定編碼形式
		request.setCharacterEncoding("utf-8");	
		// 獲取傳入資料
		String str = request.getParameter("str");

		// 訪問資料庫
		int value = TestService.testSelect(str);
		if(value == 11) {
			responseMsg = "SUCCESS";
		}
		out.print(responseMsg);
	}

}
        當提示無法import javax.servlet,需要在專案匯入對應的 .jar 包。右鍵專案, [Properties] - [Java Build Path] ,選中 [Libraries] 選項卡,點選 [Add External JARs...],選中 Tomcat 安裝目錄下 lib 資料夾下的 servlet-api.jar 。

        Servlet 的作用主要是讀取POST訊息中的資料,訪問 MySQL 等操作通過呼叫自定義的 TestService 類中的方法實現。

        注意由於我們已經添加了 web.xml 檔案,所以要去掉自動生成的 “@WebServlet("/TestServlet")” 。現在繼續修改 web.xml ,加入關於 TestServlet 的資訊:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>MyWebProject</display-name>
  
  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>  
            com.example.z.servlet.TestServlet  
    </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
</web-app>
五、TestService類
package com.example.z.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.example.z.manager.DBManager;

public class TestService {
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	
	public static int testSelect(String str) {
		int key = 0;
		// 執行 SQL 查詢語句
		String sql = "select * from t_test where name='" + str +"'";
		try {	
			Connection con = DBManager.getConnection();
			pstmt = con.prepareStatement(sql);
			try{
				rs = pstmt.executeQuery();
				// 查詢結果
				if(rs.next()){	
					key = rs.getInt("key");
				}
				pstmt.close();
				con.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return key;
	}
}
        自定義類 DBManager 用於連線資料庫。該過程需要在 Tomcat 安裝目錄 lib 資料夾下放入用於連線 MySQL 的 .jar包 “mysql-connector-java-5.1.39-bin.jar” 。我已經在本地 MySQL 中建立了對應的資料庫和表格,並插入的資料。執行的 SQL 語句為:
create database db_test;

use db_test;

create table `t_test`(
 `id` int not null auto_increment,
 `name` varchar(100) default '',
 `key` int default 0,
 primary key(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

insert into t_test(`name`,`key`) values ('hello',22);

六、DBManager類
package com.example.z.manager;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBManager {
	// 載入的驅動
	private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
	// 資料庫URL
	private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf8";
	// 資料庫連線使用者名稱
	private static final String DATABASE_USERNAME = "Admin";
	// 資料庫連線密碼
	private static final String DATEBASE_PASSWORD = "123456";
	public static Connection getConnection() throws SQLException {
		try {
			Class.forName(DRIVER_CLASS);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		Connection con = DriverManager.getConnection(DATABASE_URL,DATABASE_USERNAME, DATEBASE_PASSWORD);
		return con;
	}
}

七、專案結構

        經過以上步驟,本次Java Web專案已經完成。下面提供工程目錄作為參考:



八、程式碼下載

    CSDN CODE:https://code.csdn.net/sinat_30685475/mywebproject/tree/master。

    CSDN 下載:http://download.csdn.net/detail/sinat_30685475/9596363。