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>密&nbsp;&nbsp;&nbsp;码:</td>
27   <td><input type="text" name="password"  id="password" value="${password }"/></td>
28 </tr>
29  <tr>
30  <td>
31 <input type="submit" value="登录" />&nbsp;&nbsp;&nbsp;
32 <input type="button" value="重置" onclick="checnLogin()"/>&nbsp;&nbsp;&nbsp;
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风格的架构的更多相关文章

  1. RestKit ,一个用于更好支持RESTful风格服务器接口的iOS库

    简介 RestKit 是一个用于更好支持RESTful风格服务器接口的iOS库,可直接将联网获取的json/xml数据转换为iOS对象. 项目主页: RestKit 最新示例: 点击下载 注意: 如果 ...

  2. 一个Demo带你彻底掌握View的滑动冲突

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 近期在又一次学习Android自己定义View这一块的内容.遇到了平时开发中常常碰到的一个棘手问题:View的滑 ...

  3. 【接入指南】一个Demo带你玩转华为帐号服务

    在<接入指南:一文带你了解华为帐号服务>中已经给大家介绍了华为帐号服务有哪些优势,如一键授权登录华为全场景共享.共享华为帐号所有用户资源.帐号安全可靠.接入方便快捷等,以及为什么能帮助开发 ...

  4. 【DDD】领域驱动设计实践 —— 架构风格及架构实例

    概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场 ...

  5. 通过beego快速创建一个Restful风格API项目及API文档自动化

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  6. 使用webpy创建一个简单的restful风格的webservice应用

    下载:wget http://webpy.org/static/web.py-0.38.tar.gz解压并进入web.py-0.38文件夹安装:easy_install web.py 这是一个如何使用 ...

  7. SpringMVC RESTful风格URL处理带点的参数

    使用了RESTful风格的URL.但是在处理带点的搜索参数,比如baidu.com的时候,后台就取不到正确的参数了. 搜索了下原因,原来是SpringMVC将点号看作扩展分隔符号了,因此后台没法拿到正 ...

  8. 通过beego快速创建一个Restful风格API项目及API文档自动化(转)

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  9. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...

随机推荐

  1. golang---信号signal

    golang中os/signal包的使用 chenbaoke · 2015-06-17 20:03:59 · 2748 次点击 · 预计阅读时间 1 分钟 · 不到1分钟之前 开始浏览 这是一个创建于 ...

  2. SCX-4521F一体机MAC驱动

    如果您想下载SCX-4521F一体机MAC驱动,请从下面的链接中下载相应驱动:MAC打印驱动:http://org.downloadcenter.samsung.com/downloadfile/Co ...

  3. (C)strcpy ,strncpy与strlcpy

    1. 背景 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 2. strcpy strcpy 是依据 /0 作为 ...

  4. WPF 之Converter

    WPF  之Converter Leo 在我们做项目的时候,经常会遇见这样的事情: 在数据中我们定义的是true,false 而在现实的时候则可能要求男,女 我们还得能定义成了0,1,2,3,4,5, ...

  5. 【NOIP2012】 国王游戏

    [题目链接] 点击打开链接 [算法] 按ai * bi升序排序,贪心即可 [代码] #include<bits/stdc++.h> using namespace std; #define ...

  6. 修改cocos2dx 背景颜色

    只需要在AppDelegate的设置FPS后面加入一行: glClearColor(1.0, 1.0, 1.0, 1.0); 同理如果要修改成其它颜色,只需修改里面的值即可( r, g, b, a);

  7. cocos2d-js使用plist执行自身动作

    首先需要将精灵动作帧动画图片使用TexturePacker创建plist,创建好后,将生成的plist和png图片(所有帧动画图片集成的一张大图): 百牛信息技术bainiu.ltd整理发布于博客园 ...

  8. html 样式之style属性的使用

    转自:https://www.ggbiji.com/html-style.html html中的style属性是用来改变html元素的样式的,样式是 在html 4 引入的,它是改变 html元素样式 ...

  9. [msf]CentOS VPS创建pptpd 并搭建msf

    安装pptpd服务 vps下 下载 centos 6 一键安装包 wget --no-check-certificate https://raw.githubusercontent.com/teddy ...

  10. ORACLE知识点整理之一

    1. 安装客户端 去官方网站下载 此处略 2. 客户端登陆身份 Oracle有三种身份登录方式:Normal.sysdba.sysoper. normal身份:普通用户身份,默认选项(默认可以不写), ...