Android網路程式設計之搭建一個屬於你自己的簡單servlet服務端。
部署一個自己的一個簡單servlet服務端有以下幾步:
1.jdk的安裝就不說啦。這裡我們將演示的是在Eclipse裡面釋出專案,要想釋出一個專案,首先我們要有一個tomcat,去官網下載或者百度都可以,下載好之後解壓到任意目錄,然後再eclipse裡面進行配置。Window->perferences->server->runtime environment ,然後再新增自己的tomcat目錄。需要注意的一點是,如下圖:
在eclipse裡面設定好之後,我們還要設定環境變數,跟jdk的設定類似:
第一張圖在變數裡面新增兩個變數,然後再path變數裡面進行引用新增,值就是tomcat的安裝路徑。
2.裝好之後,我們還需要操作資料庫,為了簡單起見,這裡使用mysql資料庫,去網上下載個xampp,解壓後,進入/xampp/XAMPP Control Pannel,點選開啟客戶端:
在沒有啟動之前,mysql是的action選項是start,點選就行了。現在環境基本上弄好了,現在開始專案搭建吧。
3.建立一個動態web專案,目錄結構如下:
首先在webcontent 裡面的web-info裡面建立web.xml檔案:
<?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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
<servlet>
<servlet-name> first</servlet-name>
<servlet-class>com.cvil.boanda.ForServerFirst</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/TestClient</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
這是一個簡單的servlet對映配置。我們看到有這麼一句
< servlet-class> com.cvil.boanda.ForServerFirst < /servlet-class>就是說,我們在觸發TestClient這個動作的時候,由這個類來處理這個動作。那麼我們來建立這個類吧。
public class ForServerFirst extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().print("Hello World!");
}
}
到這裡,我們就部署好了一個比較簡單的後臺伺服器了。光是顯示這個肯定還無法滿足我們的慾望!我們來操作一下資料庫,把資料顯示在介面上去。
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/hotel_search";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private String sql = null;
Connection conn = null;
private String tableName = null;
public DBHelper() {
try {
Class.forName(JDBC_DRIVER);// 反射載入mysql資料庫驅動
conn = (Connection) DriverManager.getConnection(DB_URL, USERNAME,
PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
}
這裡我們建立了一個數據庫助手類來操作資料庫,我們的專案裡面要匯入相應的jar包,mysql的驅動,這段程式碼就是載入mysql驅動,得到資料庫連線從而對資料庫進行操作。
/**
* 獲取指定表的欄位以及欄位對應的型別
*
* @param tableName
* 表名
* @return
* @throws Exception
*/
public JSONObject getColumns() throws Exception {
JSONObject columns = null;
Statement stat = (Statement) conn.createStatement();
try {
if (tableName == null || tableName.equals("")) {
throw new Exception("please set table name to get table info");
}
String sql = "select COLUMN_NAME,DATA_TYPE from information_schema.COLUMNS where table_name = '"
+ tableName + "' and table_schema = 'hotel_search'";
ResultSet rs = stat.executeQuery(sql);
if (rs != null) {
columns = new JSONObject();
while (rs.next()) {
columns.put(rs.getString("COLUMN_NAME"),
rs.getString("DATA_TYPE"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return columns;
}
這是一個獲取表各欄位資訊的一個操作,mysql建立表的時候,都會在自帶的一些表裡面進行資訊的註冊。這裡我們就是使用的它自帶的information_schema表,感興趣的小夥伴可以去看一下表裡面的結構,安裝一個navicat將有助於你對資料庫的瞭解和使用。通過上面的方法,我們就可以拿到一個表的所有欄位以及欄位對應的資料型別了。拿到 了欄位名了,我們就可以來迴圈取到表中的資料了。
public JSONArray getListValue() {
ResultSet rs = null;
JSONArray result = null;
try {
Statement stat = (Statement) conn.createStatement();
if (sql == null || sql.equals("")) {
throw new Exception("sql is illegall , please set sql .");
}
rs = stat.executeQuery(sql);
if (rs != null) {
JSONObject jsonItem = new JSONObject();
result = new JSONArray();
JSONObject columns = getColumns();
while (rs.next()) {
@SuppressWarnings("unchecked")
Iterator<String> iterator = columns.keys();
while (iterator.hasNext()) {
String column = iterator.next();
jsonItem.put(column, rs.getString(column));
}
result.add(jsonItem);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
我本地恰好有個hotel表,我們來把這些資料顯示到我們的瀏覽器上面吧。
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String tableName = "hotel";
DBHelper dbHelper = new DBHelper();
dbHelper.setSql("SELECT * FROM " + tableName);
dbHelper.setTableName(tableName);
JSONArray result = dbHelper.getListValue();
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().print(result.toString());
}
新增好程式碼之後,只需要重新整理一下瀏覽器就可以了。
成功搭建好之後,對於後面要講的網路程式設計有很大的幫助,幫助我們更方便的進行測試。
相關推薦
Android網路程式設計之搭建一個屬於你自己的簡單servlet服務端。
部署一個自己的一個簡單servlet服務端有以下幾步: 1.jdk的安裝就不說啦。這裡我們將演示的是在Eclipse裡面釋出專案,要想釋出一個專案,首先我們要有一個tomcat,去官網下載或者百度都可以,下載好之後解壓到任意目錄,然後再eclipse裡面進行配
使用XAMPP和Wordpress搭建一個屬於你自己的網站
你好,從今天開始,我將為大家帶來一些我學習SEO和建站的免費教程,今天為大家帶來的是如何用XAMPP搭建一個屬於你自己的網站。來到這裡,可以說很多在百度上已經過時了的資料需要總結的資料這裡都有,你只要按照我的教程來好的廢話不多說了現在開始教程。 首先我們要明白一些問題
Android網路程式設計之socket和http程式設計的區別
HTTP為短連線 Http協議是建立在TCP協議之上的一種應用。它與TCP連線不同之處在於,客戶端每次請求都需要伺服器返回響應,在請求結束後,會主動釋放連線,從建立連線到關閉連線的過程稱為“一次連線”。由於HTTP每次請求都會釋放連線,因為
Android網路程式設計之傳遞資料給伺服器(二)
我曾在《Android網路程式設計之傳遞資料給伺服器(一) 》一文中介紹瞭如何通過GET方式傳遞資料給伺服器,通過GET方式傳遞資料主要適用於資料大小不超過2KB,且對安全性要求不高的情況下。下面就介紹通過POST方式傳遞資料主到伺服器。 一、通過P
Android 網路程式設計之同步,非同步,阻塞和非阻塞
同步:函式沒有執行完不返回,執行緒被掛起; 阻塞:沒有收完資料函式不返回,執行緒也被掛起; 非同步:函式立即返回,通過事件或是訊號通知呼叫者; 非阻塞:函式立即返回,通過select通知呼叫者 同步:函式沒有執行完不返回,執行緒被掛起 阻塞:沒有收完資料函式不返回,執行緒也被掛起 非同步:函
Android---網路程式設計之Retrofit2原始碼分析
相關 前言 通過上篇的分析,大家應該對Retrofit2的大致情況有所瞭解吧,下面為我們一起看一下原始碼,沒看過的,可以看一下了解一下解析思路。 思路 我們現在知道了使用retrofit需要進行3步流程
Android---網路程式設計之Retrofit2整體結構瞭解以及+Okhttp3+rxjava2使用
Retrofit 相關 前言 要不要寫這篇文章,其實我糾結了好久,因為網上已經有好多的關於Retrofit的文章了,不乏有很經典的文章和部落格,讀後真的收益良多,相比以前的只會用,成長良多!但是,看完以後
Android---網路程式設計之OkHttp3整體結構瞭解以及使用
相關 在這裡為大家提供一種思路,看一款開源專案的時候,可以先看一下,這個開源框架包括那些類,哪些介面,根據註釋大體瞭解一下各個類和介面的作用,這樣有助於我們把握一個專案的全域性架構,更好的理解一個好的開源框架。
Android網路程式設計之TCP/IP的Socket、ServerSocket模式
TCP/IP是一種協議,一種面向連線的、可靠的協議。Socket僅僅是針對TCP、UDP網路介面來封裝,不涉及上層協議。TCP與UDP的傳輸特性不一樣,適用於不同型別的應用層協議,TCP有連線,延時較長,能保證服務質量。UDP無連線,應用程式需要進行資料分包、延時短,效率高
Android網路程式設計之--Socket
引言 這篇文章你能學到什麼? 瞭解網路通訊的基本原理 學會最基礎的Socket通訊原理(萬丈高樓平地起) 明白TCP協議與UDP協議的區別與適用場景 網路程式設計基礎 TCP/IP協議 我們先看看從巨集觀上來看兩臺機器是如何通訊的。 我們通過QQ和伺服器進行通訊,都需要哪些東西
從零開始做遠控 簡介篇 做一個屬於你自己的遠控
做一個屬於你自己的遠控:先對大家說句抱歉,上次答應帶大家一起做遠控但因為我的個人原因讓課程中途斷了,這次我答應大家一定要把這教程完成。你在看著課程之前你必須掌握c/c++,qt,win32 api。不用精通,懂就可以了。先向你們簡單講解下什麼叫遠端控制,就是在別人不知情的情況
Android布局之相對布局RelativeLayout(一) ----簡單模仿ios端原生計算器主界面UI
ive 問題 line 原生 計算 模仿 ati 線性布局 you Android布局之相對布局RelativeLayout(一) ----簡單模仿ios端原生計算器主界面UI ??上一節學習了線性布局(LinearLayout),很多時候做界面並不能只用LinearLay
教你寫Android網路框架之基本架構
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
教你寫Android網路框架之Request Response類與請求佇列
我正在參加部落格之星,點選這裡投我一票吧,謝謝~ 前言在教你寫Android網路框架之基本架構一文中我們已經介紹了SimpleNet網路框架的基本結構,今天我們就開始從程式碼的角度來開始切入該網路框架的實現,在剖析的同時我們會分析設計思路,以及為什麼要這樣做,這樣做的好處是
Android 網路請求之Xutils環境搭建
Xutils 在Android 開發中是一個比較老的網路請求框架,目前在市面上,仍然有一些老的專案在使用和維護. 本文給需要使用Xutils網路請求框架的朋友,提供一個快速搭建的程式碼參考: app的module build,gradle中 新增: compile 'org.xuti
Android程式設計師搭建一個屬於自己的伺服器
前言 最近在跟小夥伴合作開發一款app,苦於沒有合適的公共api介面,所以決定自己搭建一個伺服器,目前已實現註冊、登入,爬蟲定時拉取閒魚首頁更新資料庫。 搭建伺服器需要些什麼工作 本文所介紹的伺服器都是入門級別的,適合移動端同學自己搭建玩玩,還沒有達到商業開發水平,大牛請
Android程式設計師搭建一個屬於自己的伺服器,不再求各種公共API
搭建伺服器需要些什麼工作 本文所介紹的伺服器都是入門級別的,適合移動端同學自己搭建玩玩,還沒有達到商業開發水平,大牛請莫見怪。 我們搭建伺服器主要有以下幾個步驟: 1.搭建開發環境,IntelliJ + spring-boot + mybatis 2.搭建資料庫,
Android Studio 使用教程(三)之新建一個屬於自己的工程
一、新建工程: 1、新建一個Project: 開啟Android Studio,新建一個Project,介面如下: 上圖中,設定好工程名和路徑之後,接下來可以一路next:
Android網路程式設計實踐之旅
(一):網路狀態檢測 一直以來本人都在做Android Multi-Media Framework下的Lib支援庫的開發和修改,終於最近告一段落,但根據專案要求,需要寫一個和網路相關的service,用java來實現。其實,在Framework及其之上的應用層用j
【微信開發】02.搭建一個屬於自己的微信公眾平臺
tro 投票 新浪 關系 blank 訂閱 logs name 開發者 閱讀目錄 【網站開發】在新浪SAE上搭建一個博客 概述 公司年會上同事開發了一個微信企業號,包含了投票,抽獎,祝福墻功能,還開了一個Session,跟我們講了下公司的企業號開發過程和抽獎中獎