Android网络编程之搭建一个属于你自己的简单servlet服务端。

来源:互联网 发布:德军 知乎 编辑:程序博客网 时间:2024/06/08 15:24

部署一个自己的一个简单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!");    }}

来测试一下吧,在浏览器中输入http://localhost:8080/TestServer/TestClient 就能看到我们最熟悉的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());    }

添加好代码之后,只需要刷新一下浏览器就可以了。

这里写图片描述
这里写图片描述

成功搭建好之后,对于后面要讲的网络编程有很大的帮助,帮助我们更方便的进行测试。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美萍餐饮管理系统下单错误怎么办 淘宝店上传宝贝显示空间不足怎么办 淘宝店品牌被投诉未授权怎么办 淘宝天猫退货单号填错了怎么办 淘宝退货我把快递单号弄丢了怎么办 唯品会退货快递单号填错了怎么办 天猫换货写错运单号怎么办 训练衣舍的店铺名连接怎么办 兼职模特被骗去微整还贷了款怎么办 卖家已经发货了我要退款怎么办 卖家显示发货单号信息查不到怎么办 淘宝申请退款卖家发货了怎么办 咸鱼卖家不发货好会自动退款怎么办 淘宝卖家涨价后不发货怎么办 淘宝卖家发货选错在线下单怎么办 申请退款后卖家又虚假发货了怎么办 公司用淘宝没发票做账怎么办 淘宝网买了假货确认了怎么办? 吃了安眠药睡了一天还没有醒怎么办 淘宝买的东西退货快递弄丢了怎么办 在淘宝上已付钱店家说没货了怎么办 从淘宝物流寄东西到国外被扣怎么办 不是天猫的淘宝卖家不发货怎么办 微店违规说卖假冒商品怎么办 云集微店的商品没货了怎么办 淘宝买家被检测有虚拟交易怎么办 媒体声音突然没有声音了该怎么办 华为微信运动步数为零怎么办 淘宝店铺没货了客户拍了怎么办 房子涨价了卖家反悔不卖了怎么办 买的东西很贵质量不好怎么办 在淘宝开的店账号忘了怎么办 建了个淘宝优惠券群没人购物怎么办 刚开的淘宝店没有生意怎么办 房产代理公司不给渠道结佣金怎么办 天猫超过72小时不发货怎么办 流量魔盒苹果下载怎么打不开怎么办 淘宝包邮店铺新疆地区拍怎么办 淘宝客服当顾客要优惠时怎么办 微信手机号注册的找不到了怎么办 之前注册的微信找不到了怎么办