springmvc给app提供接口
来源:互联网 发布:手机淘宝怎么发帖子 编辑:程序博客网 时间:2024/05/22 23:41
1.直接PrintWriter输出json数据
使用该方法时,可以自己拼凑json字符串,不过我并不赞同使用该方法,毕竟太容易出错了。所以这里我是先构建jsonobject对象,在将该对象打印出来。首先,我们要导入一个最重要的jar包。
json-lib-2.2.2-jdk15.jar
接下来我们看代码。
1 package sedion.zhr.controller; 2 3 import java.io.PrintWriter; 4 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 8 import net.sf.json.JSONObject; 9 10 import org.springframework.stereotype.Controller;11 import org.springframework.web.bind.annotation.RequestMapping;12 13 @Controller14 @RequestMapping("/test")15 public class TestController 16 {17 /**18 * 直接 PrintWriter输出json 19 * @param req20 * @param rep21 * @throws Exception22 */23 @RequestMapping("/login")24 public void getjson(HttpServletRequest req,HttpServletResponse rep) throws Exception25 {26 String username = req.getParameter("username");27 String pass = req.getParameter("pass");28 29 System.out.println(" 直接 PrintWriter输出json :"+username +"--->" + pass);30 31 PrintWriter writer = rep.getWriter();32 JSONObject object = new JSONObject();33 if(username.equals("zhr") && pass.equals("123"))34 {35 object.put("results", "login success");36 }37 else38 {39 object.put("results", "login fail");40 } 41 42 writer.println(object.toString());43 writer.flush();44 writer.close();45 46 }47 }
服务端好了以后,我们简单做个Android端的来测试一下,界面很简单,代码就不给出了。
测试代码如下
1 package com.example.jsontest; 2 3 import org.json.JSONObject; 4 import webservice.Webservice; 5 import android.annotation.SuppressLint; 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.os.Handler; 9 import android.os.Message;10 import android.view.Menu;11 import android.view.View;12 import android.view.View.OnClickListener;13 import android.widget.Button;14 import android.widget.EditText;15 import android.widget.Toast;16 17 public class MainActivity extends Activity 18 {19 20 private EditText edit_username,edit_pass;21 private Button loginbtn;22 private Handler handler;23 private JSONObject object;24 25 @SuppressLint("HandlerLeak")26 @Override27 protected void onCreate(Bundle savedInstanceState)28 {29 super.onCreate(savedInstanceState);30 setContentView(R.layout.activity_main);31 edit_username = (EditText)findViewById(R.id.username);32 edit_pass = (EditText)findViewById(R.id.pass);33 loginbtn = (Button)findViewById(R.id.login_btn);34 35 handler = new Handler()36 {37 @Override38 public void handleMessage(Message msg) 39 {40 if(msg.what == 123)41 Toast.makeText(getApplicationContext(), object.optString("results"), Toast.LENGTH_SHORT).show();;42 43 }44 };45 46 loginbtn.setOnClickListener(new OnClickListener()47 {48 49 @Override50 public void onClick(View arg0) {51 52 new Thread(new Runnable()53 {54 55 @Override56 public void run() 57 {58 object = Webservice.login(edit_username.getText().toString(), edit_pass.getText().toString());59 Message message = new Message();60 message.what = 123;61 handler.sendMessage(message);62 63 }64 }).start();65 66 }67 });68 69 70 }71 }
其中Webservice.login()方法是我自己封装好的数据提交方法,具体细节可以看我的另一篇博客 Android之提交数据到服务端方法简单封装。
我们来测试一下,输入用户名zhr,密码123,可以看到控制台上打印出来了 直接 PrintWriter输出json :zhr--->123,说明请求到了,同时手机端上也得到返回的结果
测试成功。
2.使用Spring内置的支持
使用该方法先要在springmvc中添加如下配置
1 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">2 <property name="messageConverters">3 <list>4 <bean5 class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />6 </list>7 </property>8 </bean>
随后引入两个jar包。jackson-mapper-asl-1.8.5.jar和jackson-core-asl-1.8.5.jar。
再将服务端代码改为
/** * 使用Spring内置的支持 * @param req * @param rep * @throws Exception */ @RequestMapping("/login") @ResponseBody public Map<String, String> getjson(HttpServletRequest req,HttpServletResponse rep) throws Exception { String username = req.getParameter("username"); String pass = req.getParameter("pass"); System.out.println("使用Spring内置的支持:"+username +"--->" + pass); Map<String, String> map = new HashMap<String, String>(); if(username.equals("zhr") && pass.equals("123")) { map.put("results", "login success"); } else { map.put("results", "login fail"); } return map;
记得加上 @ResponseBody,这样便支持返回复杂对象,Android端不做任何修改,再次测试即可。
0 0
- springmvc给app提供接口
- Web 给app提供接口
- Web 给app提供接口!
- 第一次给APP提供接口的感想
- matlab给java提供接口
- SpringMVC如何写APP接口
- springMVC注解开发及提供restful接口
- SpringMVC提供接口返回json数据
- springMVC、httpClient调用别人提供的接口。
- 如何给第三方人员提供oracle接口
- springmvc 上传文件 上传多张照片 的APP接口
- android—给app指定网络接口原理分析
- PHP给App端写简单的接口
- 用springmvc 开发为 app 提供后台服务遇到跨域请求的问题
- 利用springmvc提供一个HandlerExceptionResolver接口实现出错返回Json数据
- Java实现爬虫给App提供数据(Jsoup 网络爬虫)
- Android5.1 FrameWork添加自己的SystemService提供API给APP
- Java实现爬虫给App提供数据(Jsoup 网络爬虫)
- PBR基于物理渲染
- 各种内核对象用于线程同步的区别
- 头文件作用整理 stdlib.h stdio.h errno.h string.h
- CentOS最常用命令及快捷键整理
- Struts2学习总结(1)--基本原理,开发步骤,配置详解
- springmvc给app提供接口
- WebView与JS的交互与使用总结
- quick-cocos中c3b和c4f的区别
- Android Studio发布library到jCenter(问题集合)
- 初学Zynq与Vivado
- 使用javascript屏蔽百度搜索的广告
- Java.lang.IllegalStateException Activity has been destroyed
- 动态规划问题的几个合集
- CSS3 background-origin,background-clip的比较