Struts2+JSON+Android简单实现
来源:互联网 发布:港澳游哪个软件好 编辑:程序博客网 时间:2024/04/28 07:30
首先是相关jar包。
struts2.3.1的一些必要jar包
struts2-json-plugin-2.3.1.2.jar
gson-2.2.4.jar
第一步:实现服务端
(1)、打开MyEclipse,新建Web Project,取名StrutsJson
(2)、将上面的jar包下载好之后导入WebRoot/WEB-INF/lib中
(3)、打开WebRoot/WEB-INF/web.xml,修改内容
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name></display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>(4)、在src下新建包com.tcc.strutsjson,新建类JSONAction
package com.tcc.strutsjson;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import com.google.gson.Gson;import com.opensymphony.xwork2.ActionSupport;public class JSONAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {private static final long serialVersionUID = 1L;private HttpServletRequest request;private HttpServletResponse response;public void setServletResponse(HttpServletResponse arg0) {// TODO Auto-generated method stubthis.response = arg0;}public void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubthis.request = arg0;}public void getJson() {try {this.response.setContentType("text/html;charset=utf-8");this.response.setCharacterEncoding("utf-8");String name = this.request.getParameter("username");List<TestUser> list = new ArrayList<TestUser>();TestUser user = new TestUser();user.setName(name);user.setAge(18);user.setSex("男");TestUser user1 = new TestUser();user1.setName(name);user1.setAge(16);user1.setSex("女");user1.setCode("99");list.add(user);list.add(user1);Gson gson = new Gson();String res = gson.toJson(list);this.response.getWriter().write(res);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}新建TestUser
package com.tcc.strutsjson;public class TestUser {private String name;private int age;private String sex;private String code;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}}(5)、在src目录下新建struts.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- setting encoding,DynamicMethod,language <constant name="struts.custom.i18n.resources" value="messageResource"></constant> --><constant name="struts.i18n.encoding" value="UTF-8"></constant><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><!-- add package here extends="struts-default" --><package name="tcc" extends="json-default"> <!--需要将struts-default改为json-default --><!-- setting action --><action name="jsonaction" class="com.tcc.strutsjson.JSONAction" method="getJson"><result type="json"></result> <!--返回值类型设置为json,不设置返回页面 --></action></package></struts>
(6)启动logcat,在浏览器输入
http://localhost:8080/StrutsJson/jsonaction.action?username=zhangsan
如果正确的话就会看到浏览器中出现以下结果
[{"name":"zhangsan","age":18,"sex":"男"},{"name":"zhangsan","age":16,"sex":"女","code":"99"}]
第二步:实现Android客户端请求数据
打开ADT,新建android项目JSONDemo。
打开res/layout/activity_main.xml,添加一个按钮用于请求数据。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <Button android:id="@+id/resuestBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请求数据" /></LinearLayout>
打开MainActivity添加以下代码
package com.example.jsondemo;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Dialog dialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button requestBtn = (Button) findViewById(R.id.resuestBtn);requestBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew JSONThread().start();}});dialog = new AlertDialog.Builder(this).create();}Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);switch (msg.what) {case 0:JSONArray array = null;String title = "";try {array = new JSONArray(msg.obj.toString());} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int i = 0; i < array.length(); i++) {try {JSONObject object = array.getJSONObject(i);title += object.getString("name");title += object.getString("age");title += object.getString("sex");title += object.getString("code");} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}dialog.setTitle(title);dialog.show();break;case 1:dialog.setTitle(msg.obj.toString());dialog.show();break;}}};class JSONThread extends Thread {String url = "http://192.168.123.17:8080/StrutsJson/jsonaction.action";@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();Map<String, String> params = new HashMap<String, String>();params.put("username", "zhangsan");try {String result = sendHttpURLConnectionPost(url, params);handler.obtainMessage(0, result).sendToTarget();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();handler.obtainMessage(1, "请求失败").sendToTarget();}}}public String sendHttpURLConnectionPost(String path,Map<String, String> params) throws Exception {StringBuilder sb = new StringBuilder();if (params != null && !params.isEmpty()) {for (Map.Entry<String, String> entry : params.entrySet())sb.append(entry.getKey()).append('=').append(URLEncoder.encode(new String(entry.getValue().getBytes(), "utf-8"), "utf-8")).append('&');sb.deleteCharAt(sb.length() - 1);}System.out.println(path + "?" + sb.toString());byte[] entitydata = sb.toString().getBytes();URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setReadTimeout(5 * 1000);conn.setDoOutput(true);conn.setDoInput(true);conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded; charset=utf-8"); //conn.setRequestProperty("Content-Length",String.valueOf(entitydata.length));conn.connect();String line, lines = "";try {OutputStream outPutStream = conn.getOutputStream();outPutStream.write(entitydata);outPutStream.flush();outPutStream.close();InputStream in = conn.getInputStream();if (in != null) {// 取得输入流,并使用Reader读取BufferedReader reader = new BufferedReader(new InputStreamReader(in));while ((line = reader.readLine()) != null) {lines += line;System.out.println(line);}reader.close();// 断开连接conn.disconnect();}} catch (Exception e) {System.out.println(e);}return lines;}}
运行点击按钮,正确的话,会出现类似下图的弹窗。(提示:请求连接换成自己的IP)
源码下载
0 0
- Struts2+JSON+Android简单实现
- Struts2+JSON+JQuery实现简单验证
- JQuery+JSON+Struts2实现
- Struts2 实现Json返回
- Android+json+Struts2客户端
- Struts2 Json使用 简单注释
- struts2实现ajax传输json
- Struts2实现简单上传
- Struts2实现简单分页
- Struts2简单实现
- Android + struts2服务器 Json 通信
- Android+json+Struts2服务器端开发
- Android+json+Struts2服务器端开发
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(三)——ajax,struts2使用json格式的交互
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(三)——ajax,struts2使用json格式的交互
- Android+J2ee 回传Json包实现简单登陆
- Struts2 + json + Jquery 简单入门登陆
- 建立一个简单的 struts2 + json 应用
- Mybatis 3.1中 Mapper XML 文件 的学习详解
- oracle创建表空间
- Android再学习-->Android编译系统
- 数据结构第四章字符串和多维数组
- CentOS 7.0的硬盘安装与配置
- Struts2+JSON+Android简单实现
- lex yacc 学习
- 新版live555代理服务器
- Linux下的dd和cat
- excel导入导出
- Mac os下解决Sublime Text2或3中文乱码问题
- Android设置背景图片平铺
- activity的模式
- 使用json数据转换工具