`
i_feng
  • 浏览: 87542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android客户端和struts框架之间的通信

阅读更多

android客户端和struts框架使用json数据通信很方便。参考了网上的一些资料和博客

struts.xml文件一定要注意小心:今天因为粗心浪费了不少时间。。

<package name="struts2" extends="json-default" namespace="/">一定不要写成

<package name="struts2" extends="struts-default" namespace="/">android客户端得json数据。服务器端:

其中一个action配置如:

<action name="returnGroupList" class="flow.com.cn.action.GroupPurchaseAction" method="returnGroupPurchaseInfoList">
           <result name="success" type="json"> 
           </result>
        </action>

服务器端其他的和一样,返回单个实体对象和实体列表没有区别。

json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回。

<result name="success" type="json">
只要为Action指定类型为json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回
           <param name="includeProperties"> 
                    flowinfo\.id,flowinfo\.monthusedflow,flowinfo\.dayusedflow 
           </param> 

<result>

 

服务器端接收android客户端传递过来的数据其中一个插入方法

public Boolean insertFeedbackInfo(FeedbackInfo feedback)throws Throwable{
        // TODO Auto-generated method stub
        String sql="insert into feedbackinfo(content,time)values('"+feedback.getContent()+"','"+feedback.getTime()+"')";
        Connection conn=null;
        PreparedStatement ps=null;
        conn=(Connection) DBUtilsC3P0.getInstance().getConnection();
        try {
            ps=conn.prepareStatement(sql);
            if(ps.execute())
                return true;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            ps.close();
            conn.close();
        }
       
        return false;
    }

struts.xml中配置为:  

  <action name="insertFeedbackInfo" class="flow.com.cn.action.FeedbackInfoAction" method="insertFeedbackInfo">
        <result name="success">/index.jsp</result>
   </action>

android客户端:

@Override
    public Boolean insertFeedbackInfo(String content,String time) {
        //192.168.1.122:8089为本机IP地址,不能用localhost代替
          String path = "http://192.168.1.122:8089/FlowServer/insertFeedbackInfo.action";
//          http://192.168.1.122:8089/Strust2Json/csdn/listNewsGoods.action
          Map<String,String> params = new HashMap<String,String>();
          params.put("content", content);
          params.put("time",time);
          Boolean res=false;
        try {
            res=sendHttpClientPOSTRequest(path,params,"UTF-8");
            System.out.println(res+"..............");
            return res;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           
        }
    return res;
           
        }

httpclient请求方法

 private  boolean sendHttpClientPOSTRequest(String path,
               Map<String, String> params, String encoding) throws Exception {
              List<NameValuePair> pairs = new ArrayList<NameValuePair>();//存放请求参数
             
              for(Map.Entry<String, String> entry:params.entrySet()){
               pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
              }
              //防止客户端传递过去的参数发生乱码,需要对此重新编码成UTF-8
              UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs,encoding);
              HttpPost httpPost = new HttpPost(path);
              httpPost.setEntity(entity);
              DefaultHttpClient client = new DefaultHttpClient();
              HttpResponse response = client.execute(httpPost);
              if(response.getStatusLine().getStatusCode()==200){
               return true;
              }
              return false;
             }

/**
      * 发送post请求
      * @param path 请求路径
      * @param params 请求参数
      * @param encoding 编码
      * @return 请求是否成功
      */
     private static boolean sendPOSTRequest(String path,
       Map<String, String> params, String encoding) throws Exception{
      StringBuilder data = new StringBuilder(path);
      for(Map.Entry<String, String> entry:params.entrySet()){
       data.append(entry.getKey()).append("=");
       //防止客户端传递过去的参数发生乱码,需要对此重新编码成UTF-8
       data.append(URLEncoder.encode(entry.getValue(),encoding));
       data.append("&");
      }
     
      data.deleteCharAt(data.length() - 1);
     
      byte[] entity = data.toString().getBytes();//得到实体数据
      HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
      conn.setConnectTimeout(5000);
      conn.setRequestMethod("POST");
     
      conn.setDoOutput(true);//设置为允许对外输出数据
     
      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
      conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
     
      OutputStream outStream = conn.getOutputStream();
      outStream.write(entity);//写到缓存
     
      if(conn.getResponseCode()==200){//只有取得服务器返回的http协议的任何一个属性时才能把请求发送出去
       return true;
      }
     
      return false;
     }

     /**
      * 发送GET请求
      * @param path 请求路径
      * @param params 请求参数
      * @return 请求是否成功
      * @throws Exception
      */
     private static boolean sendGETRequest(String path,
       Map<String, String> params,String encoding) throws Exception {
      StringBuilder url = new StringBuilder(path);
      url.append("?");
      for(Map.Entry<String, String> entry:params.entrySet()){
       url.append(entry.getKey()).append("=");
       //get方式请求参数时对参数进行utf-8编码,URLEncoder
       //防止客户端传递过去的参数发生乱码,需要对此重新编码成UTF-8
       url.append(URLEncoder.encode(entry.getValue(), encoding));
       url.append("&");
      }
      url.deleteCharAt(url.length()-1);
      HttpURLConnection conn = (HttpURLConnection) new URL(url.toString()).openConnection();
      conn.setConnectTimeout(5000);
      conn.setRequestMethod("GET");
      if(conn.getResponseCode() == 200){
       return true;
      }
      return false;
     }

android客户端要导入gson.jar包。

 

 

分享到:
评论

相关推荐

    基于android开发的服务器端和客户端例子Struts2AndJSON

    这个例子“基于android开发的服务器端和客户端例子Struts2AndJSON”是展示如何在Android客户端与使用Struts2框架的服务器端之间进行数据交换的一个教程。下面将详细阐述相关知识点。 1. **Android开发**:Android是...

    android客户端与后台服务器交互

    本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...

    struts2+Mysql搭建的服务端 +android 客户端 post,get请求

    在Android客户端与服务端的交互中,HTTP协议是连接两者的关键桥梁,允许客户端通过POST和GET请求发送数据并接收响应。下面将详细阐述这些知识点。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的...

    Android客户端远程登录web服务器数据交换实例

    本文将深入探讨“Android客户端远程登录Web服务器数据交换实例”,讲解如何使用MySQL数据库、JSON数据传输以及Struts2、JavaBean和Servlet等技术。 首先,让我们了解一下MySQL数据库。MySQL是一款开源的关系型...

    android客户端上传文件源码,struts2服务端接收源码 .zip

    本压缩包包含的源码示例提供了这样一个解决方案,使用了Android客户端和Struts2服务端技术。接下来,我们将深入探讨这两个关键组件以及它们如何协同工作。 首先,让我们关注Android客户端部分。在Android平台上,...

    Android客户端与服务器通信+json交互数据

    综上所述,Android客户端与服务器通信并使用JSON进行数据交互是一个涉及网络编程、JSON处理、服务器框架理解等多个层面的复杂过程。在实际开发中,需要对每个环节都有深入的理解,才能有效地实现客户端与服务器的...

    java ssh 框架整合(二)android客户端

    4. **Struts2配置**:在后端,Struts2需要配置Action来接收和处理来自Android客户端的请求。Action类通常会调用Service层的方法,Service层再调用DAO层(数据访问对象)以操作数据库。 5. **Spring整合**:Spring...

    android客户端与服务器数据交互的Demo

    本教程将深入探讨Android客户端如何与服务器进行有效的数据交互,以及如何实现数据的上传和接收。 首先,我们要理解数据交互的基本流程。在Android客户端与服务器的数据交互中,通常涉及到以下几个步骤: 1. **...

    json实现android客户端与服务器通信,用到数据库

    本篇将详细介绍如何利用JSON实现在Android客户端与服务器之间的通信,并涉及服务器端连接数据库以及Android与数据库的数据交互。 一、JSON简介 JSON(JavaScript Object Notation)是一种简洁、易读的数据格式,它...

    android客户端与服务器端的搭建ppt课件.ppt

    通过以上步骤,可以建立起Android客户端与服务器端的基本通信框架,使得Android应用能够从服务器获取JSON数据,并对这些数据进行解析和展示。这仅仅是整个流程的一部分,实际开发中可能还需要处理身份验证、错误处理...

    基于SSH的Android客户端与服务器端的数据交互.pdf

    在Android客户端与服务器端的数据交互中,JSON通常被用作数据传输的载体,因为它能够有效地封装复杂的数据结构,并且易于在不同语言之间进行解析和生成。 3.2 SSH框架SSH框架在JAVA EE服务器端的应用SSH框架是...

    struts2 android httpclient 上传文件

    2. **Android客户端文件上传**: 在Android应用中,使用HttpClient库可以实现文件上传。首先,创建一个`HttpPost`对象,设置目标URL。接着,创建`MultipartEntityBuilder`,添加`FileBody`表示要上传的文件和`...

    Struts2_Android(2.2)_模拟数据访问项目 JSON项目

    在“Struts2_Android(2.2)_模拟数据访问项目 JSON项目”中,我们关注的是如何在Android客户端与Struts2后端之间进行JSON数据交换。这个项目可能是为了展示如何在Android应用中利用Struts2提供的服务接口来获取或提交...

    android客户端与服务器端的搭建.ppt

    总之,搭建Android客户端与服务器端的通信环境涉及服务器端的Web框架配置、数据库连接、JSON处理库的选择,以及Android客户端的开发环境配置、HTTP请求库的选择和JSON解析。理解并掌握这些知识点,是实现Android应用...

    安卓Android源码——利用JSON,通过安卓Android客户端访问web服务器,实现一个登录功能.rar

    在安卓(Android)开发中,...通过以上分析,我们可以看出这个源码实例涵盖了Android网络编程、JSON数据交换、服务器交互、UI更新等多个重要知识点,对于学习和理解Android客户端与服务器之间的通信流程非常有帮助。

    android调用struts2源码

    在Android应用开发中,有时需要与服务器进行交互,获取或发送数据。在这个场景下,`Struts2`...通过这个示例,开发者可以学习如何在Android客户端与使用Struts2的服务器之间建立有效的通信机制,实现数据的高效交换。

    源代码和数据库皆上传。此项目为SSH框架的服务器端与Android的客户端通过Json进行数据交互,适合新手,简单易学

    该项目是一个综合性的学习资源,旨在帮助初学者理解如何在服务器端和Android客户端之间进行数据交互。主要使用了SSH(Spring、Struts2、Hibernate)框架,这是一个常见的Java Web开发组合,而Json则作为数据交换格式...

    Android代码-利用JSON通过Android客户端访问web服务器实现一个登录功能.zip

    总的来说,这个项目提供了一个完整的Android客户端利用JSON与Java Struts服务器进行登录功能交互的示例,涵盖了网络请求、JSON解析、服务器端处理和数据库操作等多个重要知识点,对于理解移动应用与服务器间的数据...

    Android+struts2+JSON方式的手机开发

    Struts2框架在服务器端处理Android客户端发送的HTTP请求。它允许开发者定义Action类,这些类映射到特定的URL,并执行相应的业务逻辑。当客户端发送一个请求到服务器时,Struts2框架会根据配置文件(struts.xml)来...

    android 客户端访问java后台实现登陆,服务器端也提供网页前台

    - **接收请求**:Struts2配置Action,处理Android客户端发来的登录请求,从HTTP请求中获取参数(如username和password)。 - **身份验证**:使用Hibernate查询数据库,比对用户名和密码,如果匹配则生成登录成功的...

Global site tag (gtag.js) - Google Analytics