前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ServerForXML网络编程

ServerForXML网络编程

作者头像
提莫队长
发布2019-02-21 15:28:09
2480
发布2019-02-21 15:28:09
举报
文章被收录于专栏:刘晓杰刘晓杰

第一步

新建Dynamic Web Project,名称为ServerForXML(该勾选的勾上)。

第二步:服务器端

1.建立并实现服务端的业务类 Java Resources–>src–>新建serverlet

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

Java Package选择“com.example.server.xml” Class Name选择“ServletForXML” 然后一路next。最后会自动打开ServerForXML.java文件

2.在web.xml文件中配置新建的ServerForXML 目录文件结构如下

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

打开web.xml。在

代码语言:javascript
复制
<display-name>ServerForXML</display-name>
  <welcome-file-list>

这两行之间插入

代码语言:javascript
复制
  <servlet>
      <servlet-name>ServletForXML</servlet-name>
      <servlet-class>com.example.server.xml.ServletForXML</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>ServletForXML</servlet-name>
      <url-pattern>/ServletForXML</url-pattern>
  </servlet-mapping>

3.建立业务Bean,实现业务方法 (1)先在src文件夹下新建一个包(service)。然后新建News.java

代码语言:javascript
复制
package service;

public class News {
    private Integer id;
    //java支持自动包箱解箱。定义为int也可以
    private String title;
    private Integer timelength;

    public News(Integer id, String title, Integer timelength) {
        super();
        this.id = id;
        this.title = title;
        this.timelength = timelength;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Integer getTimelength() {
        return timelength;
    }

    public void setTimelength(Integer timelength) {
        this.timelength = timelength;
    }
}

(2)然后新建接口XMLService.java

代码语言:javascript
复制
package service;

import java.util.List;

public interface XMLService {
    public List<News> getLastNews();
}

(3)建立实体类XMLServiceBean继承接口

代码语言:javascript
复制
package service;

import java.util.ArrayList;
import java.util.List;

public class XMLServiceBean implements XMLService {

    @Override
    public List<News> getLastNews() {
        List<News> list = new ArrayList<News>();
        list.add(new News(10, "lxj", 20));
        list.add(new News(20, "lxj", 100));
        list.add(new News(30, "lxj", 50));
        return list;
    }
}

(4)最后完成ServletForXML.java的编写

代码语言:javascript
复制
package com.example.server.xml;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import service.News;
import service.XMLServiceBean;

/**
 * Servlet implementation class ServletForXML
 */
@WebServlet("/ServletForXML")//注意,如果在web.xml里面注册过servlet,请一定要注释掉,否则报错
public class ServletForXML extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private XMLServiceBean service = new XMLServiceBean();// ****************

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletForXML() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);// *************************
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        List<News> news = service.getLastNews();
        request.setAttribute("news", news);
        request.getRequestDispatcher("/WEB-INF/page/NewFile.xml").forward(request,
                response);
        //转向某个界面
    }
}

教程上给出的jsp文件运行不了,不过在这里我还是给出 news.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/xml; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<?xml version="1.0" encoding="UTF-8"?>
<videonews> 
    <c:forEach items="${news}" var="list">
        <news id="${list.id}"> 
            <title>${list.title}</title> 
            <timelength>${list.timelength}</timelength>
        </news>
    </c:forEach> 
</videonews>

我用的是自己写的NewFile.xml.当然,之前写的很多文件(从3建立业务开始)都没用了

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="23">
        <name>NEwii</name>
        <age>21</age>
    </person>
    <person id="20">
        <name>wiiWill</name>
        <age>25</age>
    </person>
</persons>

4.run on server开始测试

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

成功

第三步:编写客户端

1.创建android工程GetXMLFromInternet

2.添加网络权限

3.main.xml

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.getxmlfrominternet.MainActivity" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>

4.MainActivity.java

代码语言:javascript
复制
package com.example.getxmlfrominternet;

import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
    private ListView listview;
    private ArrayAdapter<String> adapter;
    private List<Person> personList;
    private Handler myHandler = new Handler(){
        public void handleMessage(Message msg) {
            if(msg.what == 1){
                for (int i = 0; i < personList.size(); i++) {
                    adapter.add(personList.get(i).toString());
                }
                listview.setAdapter(adapter);
            }
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        listview = (ListView) findViewById(R.id.listview);
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_expandable_list_item_1);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    personList = PullPersonService.getPersons();
                    myHandler.sendEmptyMessage(1);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

5.工具类 Person.java

代码语言:javascript
复制
package com.example.getxmlfrominternet;

public class Person {
    private int id;
    private String name;
    private Short age;

    public Person() {
    }

    public Person(int id, String name, Short age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Person(String name, Short age) {
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Short getAge() {
        return age;
    }

    public void setAge(Short age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "id=" + id + ",name=" + name + ",age=" + age;
    }
}

PullPersonService.java

代码语言:javascript
复制
package com.example.getxmlfrominternet;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Log;
import android.util.Xml;

public class PullPersonService {
    public static List<Person> getPersons() throws Exception{
        String path = "http://10.107.56.64:8080/ServerForXML/ServletForXML";
        HttpURLConnection connection = (HttpURLConnection) new URL(path)
                .openConnection();
        connection.setConnectTimeout(5000);
        connection.setRequestMethod("GET");
        if(connection.getResponseCode() == 200){
            InputStream inputStream = connection.getInputStream();
            return XMLParse(inputStream);
        }
        return null;
    }

    //如何解析请看
    //http://blog.csdn.net/lxj1137800599/article/details/50774788
    //http://blog.csdn.net/lxj1137800599/article/details/50777322
    private static List<Person> XMLParse(InputStream inputStream) throws Exception {
        Person person = null;
        List<Person> list = null;

        XmlPullParser pullParser = Xml.newPullParser();
        pullParser.setInput(inputStream, "UTF-8");
        int event = pullParser.getEventType();// 触发第一个事件
        while (event != XmlPullParser.END_DOCUMENT) {
            switch (event) {
            case XmlPullParser.START_DOCUMENT:
                list = new ArrayList<Person>();
                break;
            case XmlPullParser.START_TAG:
                if ("person".equals(pullParser.getName())) {
                    int id = Integer.valueOf(pullParser.getAttributeValue(0));
                    person = new Person();
                    person.setId(id);
                }
                if (person != null) {
                    if ("name".equals(pullParser.getName())) {
                        person.setName(pullParser.nextText());
                    }
                    if ("age".equals(pullParser.getName())) {
                        person.setAge(new Short(pullParser.nextText()));
                        Log.i("TAG", person.toString());
                    }
                }
                break;
            case XmlPullParser.END_TAG:
                if ("person".equals(pullParser.getName())) {
                    list.add(person);
                    person = null;
                }
                break;
            }
            event = pullParser.next();
        }
        return list;
    }
}

6.效果展示

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步
  • 第二步:服务器端
  • 第三步:编写客户端
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档