1. 程式人生 > >Android網路程式設計之搭建一個屬於你自己的簡單servlet服務端。

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,跟我們講了下公司的企業號開發過程和抽獎中獎