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
- Android网络编程之搭建一个属于你自己的简单servlet服务端。
- 使用XAMPP和Wordpress搭建一个属于你自己的网站
- 如何使用XAMPP本地搭建一个属于你自己的网站
- 打造一个属于你自己的Android版2048
- 搭建与Android 交互的简单的网络服务端
- 创建一个属于你自己的JavaScript库
- 构建一个属于你自己的镜像
- linux 网络编程之最简单的tcp通信服务端
- Android->Toast 建立属于你自己的Toast
- Android定制属于你自己的导航栏
- Android定制属于你自己的导航栏
- Android定制属于你自己的导航栏
- Android定制属于你自己的导航栏
- Android定制属于你自己的导航栏
- Android 建立属于你自己的Toast
- android网络编程之servlet
- 简单的一个视频网络传输服务端
- Android网络编程之TCP通信----简单客户端与服务端通信
- Hibernate更新某些字段的几种update方法
- 判断s3字符串是否由s1和s2交错组成
- Hibernate sql操作的三种方法 HQL QBC Native SQL查询
- HDU 5477 A Sweet Journey(本场的最水题,过程处理好是关键)——2015 ACM/ICPC Asia Regional Shanghai Online
- ListView乱谈之ListView的滚动原理
- Android网络编程之搭建一个属于你自己的简单servlet服务端。
- 黑马程序员-----java基础(IO上)
- 杭电acm--2071
- 顶点动画原理和实例之MD2FrameAnimation
- didLoadFromCCB方法的调用顺序
- win8系统桌面自动刷新解决方案
- .Net 学习记录 首篇
- 大数据学习篇:hadoop深入浅出系列之HDFS(六) ——JavaAPI操作
- 课程设计