本篇文章主要介紹了java如何為行動端寫接口,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
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框架,他提供了一套下面是一個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[128]; char oldPassword[128]; 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:@"1"]){ NSLog(@"登录成功!"); }else{ NSLog(@"登录失败,用户名或密码错误!"); } } return 0; }
以上是Java如何為行動端寫介面開發的實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能