您的位置:首页 > 理论基础 > 计算机网络

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

2015-09-26 18:19 633 查看

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


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






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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: