由浅入深一个Demo带你认识Restful风格的架构
java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大之处呢? 通常是让java作为一个app的服务端,为app客户端提供数据,做业务逻辑,所以我们用java来写接口,app客户端访问接口返回json格式数据文件进行解析,最后实现业务逻辑。这种方式就是我们通常所说的restful架构风格的api。
restful是一种架构思想,最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出。HTTP就是该架构风格的一个典型应用,其核心思想就是前后端分离,前端通过http请求,如www.xxxx.com/demo/username/password 来访问后端的接口,然后后端将处理好的数据封装为json返回,这样,后端只需关注具体业务逻辑 提供接口,而前端只关心界面和数据渲染,提高了程序解耦性。 在移动优先的时代,restful极为重要。通常一套后台可以让多种终端访问,包括移动端,pc端。通过restful改进的mvc 在java中比较容易实现restful的是SpringMVC框架,他提供了一套处理json的注解。通过@ResponseBody返回json数据,通过@ResquestBody解析json。

下面是一个web端访问我的java后台demo,java后台采用了springMVC和Hibernate。
java端:
1 package cotroller;
3 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.List;
7 import javax.servlet.http.HttpServletRequest;
9 import jdk.nashorn.api.scripting.JSObject;
10 import model.Student;
11 import model.Teacher;
13 import org.springframework.stereotype.Controller;
14 import org.springframework.ui.Model;
15 import org.springframework.web.bind.annotation.PathVariable;
16 import org.springframework.web.bind.annotation.RequestBody;
17 import org.springframework.web.bind.annotation.RequestMapping;
18 import org.springframework.web.bind.annotation.RequestMethod;
19 import org.springframework.web.bind.annotation.ResponseBody;
23 import dao.Get;
24 import dao.StudentDAO;
25
26 //登陆servlet
27 @Controller
28 public class LoginCotroller {
29 /**
30 * 1. value="/doLogin/{username}/{password}" 拦截 xxx/doLogin/xx/xx
31 * 2. @ResponseBody 使用此注解将返回数据类型封装json
32 * 3. @PathVariable("username") 截取请求1.value中{username}的值
33 * 4. Map<String, Object> 服务端将值放入map中再封装为json,客户端方便通过key取出value
34 */
35
36 StudentDAO studentDAO = new StudentDAO();//调用登陆判断方法
37
38 @RequestMapping(value="/doLogin/{username}/{password}",method=RequestMethod.GET)
39 @ResponseBody
40 public Map<String, Object> getTeacher(@PathVariable("username") String username, @PathVariable("password") String password){
41 System.out.println("拦截了客户端json请求");
42 Map<String, Object> map = new HashMap<String, Object>();
43
44 if(studentDAO.loginByStudent(username, password)){
45 System.out.println("密码正确");
46 map.put("result", "");
47 return map; //封装为json返回给客户端
48 }
49
50 System.out.println("密码错误");
51 map.put("result", "");
52 return map; //封装为json返回给客户端
53 }
54
55 }
web端login页面的请求和解析
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2 pageEncoding="utf-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7 <title>客户端登录</title>
8 </head>
9 <script type="text/javascript" src="static/js/jquery-1.7.1.min.js"></script>;
10 <script type="text/javascript">
11 function checnLogin(){
$.ajax({
type:"post",
url:"<%=request.getContextPath%>/student/doLogin",
data:{userName:$("#userName").val(),password:$("#password").val()}
dataType:"json",
success:function(data){
$("#loginResult").text(data);
}
});
}
12 </script>
13 <body>
14 <form action="#" method="post" >
15 <table align="left">
16 <tr>
17 <td>用户登录</td>
18 </tr>
19 <tr>
20 <td>用户名:</td>
21 <td><input type="text" name="loginName" id="loginName" value="${loginName }"/></td>
22 </tr>
23 <tr>
26 <td>密 码:</td>
27 <td><input type="text" name="password" id="password" value="${password }"/></td>
28 </tr>
29 <tr>
30 <td>
31 <input type="submit" value="登录" />
32 <input type="button" value="重置" onclick="checnLogin()"/>
34 </td>
35 </tr>
36 <br>
37 <tr>
38 <td colspan="">登录结果:<span id="loginResult"></span></td>
39 </tr>
40 <br>
41 </table>
42 </form>
43 </body>
44 </html>
https://www.cnblogs.com/yshang/p/10654491.html
由浅入深一个Demo带你认识Restful风格的架构的更多相关文章
- RestKit ,一个用于更好支持RESTful风格服务器接口的iOS库
简介 RestKit 是一个用于更好支持RESTful风格服务器接口的iOS库,可直接将联网获取的json/xml数据转换为iOS对象. 项目主页: RestKit 最新示例: 点击下载 注意: 如果 ...
- 一个Demo带你彻底掌握View的滑动冲突
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 近期在又一次学习Android自己定义View这一块的内容.遇到了平时开发中常常碰到的一个棘手问题:View的滑 ...
- 【接入指南】一个Demo带你玩转华为帐号服务
在<接入指南:一文带你了解华为帐号服务>中已经给大家介绍了华为帐号服务有哪些优势,如一键授权登录华为全场景共享.共享华为帐号所有用户资源.帐号安全可靠.接入方便快捷等,以及为什么能帮助开发 ...
- 【DDD】领域驱动设计实践 —— 架构风格及架构实例
概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场 ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- 使用webpy创建一个简单的restful风格的webservice应用
下载:wget http://webpy.org/static/web.py-0.38.tar.gz解压并进入web.py-0.38文件夹安装:easy_install web.py 这是一个如何使用 ...
- SpringMVC RESTful风格URL处理带点的参数
使用了RESTful风格的URL.但是在处理带点的搜索参数,比如baidu.com的时候,后台就取不到正确的参数了. 搜索了下原因,原来是SpringMVC将点号看作扩展分隔符号了,因此后台没法拿到正 ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化(转)
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- 在 Docker 上运行一个 RESTful 风格的微服务
tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...
随机推荐
- 数据库的事务与ACID
一.事务: 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).在计算机术语中,事务通常就是指数据库事务. 二 ...
- p1697食物链
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说法 ...
- 网络转载:局域网安全:解决ARP攻击的方法和原理
局域网安全:解决ARP攻击的方法和原理 IT世界网2006-01-26 10:17 [故障原因] 局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). ...
- driver, module以及怎么看他们
1. driver和module的区别 https://unix.stackexchange.com/questions/47208/what-is-the-difference-between-ke ...
- UVA-11082 Matrix Decompressing(有上下界的最大流)
题目链接: Matrix Decompressing 题意: 给一个矩阵的每行和每列的和,(给的是前i行或者列的和); 矩阵中每个元素的值在1到20之间,找出这样的一个矩阵: 思路: 把它转化成一个二 ...
- IOS中延时执行方式
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- [Selenium] 操作页面元素等待时间
WebDriver 在操作页面元素等待时间时,提供2种等待方式:一个为显式等待,一个为隐式等待,其区别在于: 1)显式等待:明确地告诉 WebDriver 按照特定的条件进行等待,条件未达到就一直等待 ...
- kvm_虚拟机迁移
virsh domblklist 虚拟机名称 #查看虚拟磁盘文件 一.kvm虚拟机静态迁移 1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移. (1)虚 ...
- teamviewer被识别为商业用途
1.卸载teamviewer,在控制面板里或者用360等软件卸载: 2.删除下面两个目录 C:\Program Files (x86)\TeamViewer C:\Users\Administrato ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging
常用的诊断中间件: UseDeveloperExceptionPage UseStatusCodePages:返回 400~600 的状态码 UseExceptionHandler 自定义异常的处理器 ...