java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢。通常是让java作为一个app的服务端,为app客户端提供数据,做业务逻辑,所以我们用java来写接口,app客户端访问接口返回json文件进行解析,最后实现业务逻辑。

而这种方式我们通常叫做restful。

  restful是一种架构思想,是一位博士生在N年前发表的一篇博士生论文,其核心思想就是前后端分离,前端通过http请求,如www.xxxx.com/demo/username/password  来访问后端的接口,然后后端将处理好的数据封装为json返回,这样,后端只需关注具体逻辑 提供接口,而前端只关心界面,提高了程序解耦性。 在移动优先的时代,restful极为重要。通常一套后台可以让多种终端访问,包括移动端,pc端。     通过restful改进的mvc    在java中比较容易实现restful的是SpringMVC框架,他提供了一套处理json的注解。通过@ResponseBody返回json数据,通过@ResquestBody解析json。

下面是一个ios访问我的java后台demo,java后台采用了springMVC和Hibernate。

//java端

 package cotroller;

 import java.util.HashMap;
import java.util.Map;
import java.util.List; import javax.servlet.http.HttpServletRequest; import jdk.nashorn.api.scripting.JSObject;
import model.Student;
import model.Teacher; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import dao.Get;
import dao.StudentDAO; //登陆servlet
@Controller
public class LoginCotroller {
/**
* 1. value="/doLogin/{username}/{password}" 拦截 xxx/doLogin/xx/xx
* 2. @ResponseBody 使用此注解将返回数据类型封装json
* 3. @PathVariable("username") 截取请求1.value中{username}的值
* 4. Map<String, Object> 服务端将值放入map中再封装为json,客户端方便通过key取出value
*/ StudentDAO studentDAO = new StudentDAO();//调用登陆判断方法 @RequestMapping(value="/doLogin/{username}/{password}",method=RequestMethod.GET)
@ResponseBody
public Map<String, Object> getTeacher(@PathVariable("username") Integer username, @PathVariable("password") String password){
System.out.println("拦截了客户端json请求");
Map<String, Object> map = new HashMap<String, Object>(); if(studentDAO.loginByStudent(username, password)){
System.out.println("密码正确");
map.put("result", "1");
return map; //封装为json返回给客户端
} System.out.println("密码错误");
map.put("result", "0");
return map; //封装为json返回给客户端
} }

//ios端

 #import <Foundation/Foundation.h>
#import <stdio.h> int main(int argc, const char * argv[]) {
@autoreleasepool { char oldUsername[];
char oldPassword[]; NSLog(@"请输入用户名 :");
scanf("%s", oldUsername);
NSString *username = [NSString stringWithUTF8String:oldUsername]; //转换为NSString *
NSLog(@"请输入密码 :");
scanf("%s", oldPassword);
NSString *password = [NSString stringWithUTF8String:oldPassword]; //转换为NSString * //访问springMVC后台并解析返回的json数据
//定义一个异常
NSError *error; //定义请求action 使用stringWithFormat拼接字符串
NSString *url = [NSString stringWithFormat:@"http://154212l6t7.imwork.net:27063/partyOS_APP/doLogin/%@/%@", username, password]; //加载一个NSURL对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; //发送请求 将请求的url数据放到NSData对象中
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //NSJSONSerialization从response请求中解析出数据放到字典中
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error]; NSString *resultValue = [jsonResult objectForKey:@"result"]; NSLog(@"你的url是%@", url);
NSLog(@"服务端返回值%@", resultValue); // oc字符串比较方法 resultValue isEqualToString:@"1"] 和java 的equlse类似
if([resultValue isEqualToString:@""]){
NSLog(@"登录成功!");
}else{
NSLog(@"登录失败,用户名或密码错误!");
} }
return ;
}

java为移动端写接口的更多相关文章

  1. 【转载】php如何给APP端写接口

    如何写好接口 目的:清楚明白所写接口的用途 安全性:做好接口的安全性,防止接口数据泄露,做好必要的参数加密措施 按需分配: 接受值和返回值要实用,不接受和返回不需要的数据,返回值返回什么应与使用者时时 ...

  2. Java后端开发工作 - 写接口

    我在公司的工作内容是,对于一个BS应用,负责服务器端开发工作,Java语言.与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应. 经验之谈 一个接口可以理解为一个业务逻辑,一个业务 ...

  3. JAVA写接口傻瓜(?)教程(一)

    当一个安卓开发人员/微信小程序开发者想做点什么的时候,如果他发现没有合适的接口,那么单机安卓.本地数据库emmm.没了接口就好像老人没了拐杖.盲人没了墨镜,完全可以称得上是举步维艰.生活艰难到需要自己 ...

  4. java实现利用httpclient访问接口

    HTTP协议时Internet上使用的很多也很重要的一个协议,越来越多的java应用程序需要通过HTTP协议来访问网络资源. HTTPClient提供的主要功能: 1.实现了所有HTTP的方法(GET ...

  5. java servlet手机app访问接口(一)数据加密传输验证

    前面几篇关于servlet的随笔,算是拉通了 servlet的简单使用流程,接下去的文章将主要围绕手机APP访问接口这块出发续写,md5加密传输--->短信验证--->手机推送---> ...

  6. Java集合框架之Collection接口

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  7. 闲来无事,用Java的软引用写了一个山寨的缓存

    闲来无事,用Java的软引用写了一个山寨的缓存 博客分类: java基础 众所周知java中的引用分为 StrongReference.SoftReference.WeakReference.Phan ...

  8. JAVA调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  9. 黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式

    ------- android培训.java培训.期待与您交流! ---------- 抽象定义:           抽象就是从多个事物中将共性的,本质的内容抽取出来.           例如:狼 ...

随机推荐

  1. [转]配置 VIM 的 Go 语言开发环境

    本文是针对像我这样的 VIM 小白而写的,所使用的 VIM-GO 插件虽然步骤简单但不够详细,特写此文以做记录和分享.欢迎各位大神纠正补充! 特别说明 本博文不是 Go 语言环境搭建教程,只是 VIM ...

  2. awk程序设计语言之-awk基础

    awk程序设计语言之-awk基础 http://man.linuxde.net/ 常用工具命令之awk命令 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(s ...

  3. Makefile常用调试方法

    转载自 陈皓<跟我一起写 Makefile><GNU Make项目管理> GNU make 提供了若干可以协助调试的内置函数以及命令行选项. 1.warning函数 $(war ...

  4. 两台机子的repcached Memcache 的安装与实验

    安装memcached前先要确定系统是否安装了gcc: 1.解压安装包: tar -zxf memcached-1.2.8-repcached-2.2.tar.gz 2.编译: 系统应安装了libev ...

  5. Linux 系统分区

    合理的系统分区,便于后期管理和提高文件的搜索速度 分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四 个,SCSI,SA ...

  6. Android3.0 以前的Fragment支持

    Fragment非常实用,Android也为3.0以前的平台增加了Fragment支持,只是该Fragment不是继承android.app.Fragment,而是继承android.support. ...

  7. BNU Online Judge-34978-汉诺塔

    题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34978 这题在比赛时AC了不过那时是根据测试数据  抱着来试一下的想法,没想就AC了,其实 ...

  8. Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式

    解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式.面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和Out ...

  9. Android笔记:Fragment与ViewPager组合时,如何在FragmentActicity获取Fragment对象

    项目中有一处需要监听宿主的控件,再去更新Fragment页面,由此必须去获取Fragment里的对象; 在FragmentActivity + Fragment组合里是可以使用以下方案: MedicF ...

  10. vijos P1001 谁拿了最多奖学金

    vijos P1001 谁拿了最多奖学金 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(&g ...