最近在使用SpringMVC+MyBatis感觉用起来效果很好。我不太明白SpringMVC和SSH的关系,遂搜索了一下。原来使用SpringMVC之后,可以替代之前的SSH这种开发模式。

附上知乎链接:https://www.zhihu.com/question/22014461

然后看到RESTful风格和JSR 303

之前指导RESTful风格,但是一直不知道此物为何物。今天研究了一下,附上两个链接:

http://bbs.csdn.net/topics/390908212

http://www.ruanyifeng.com/blog/2011/09/restful.html

这是个人对RESTful的拙见:

简单来说就是Restful风格是一种编程时候的约束,你的编程时候的URL地址等因素符合Restful提出的这一套标准,那么你就是rf风格的编程。

通常我们通过向URL地址发送GET请求,向服务器请求一个资源。服务器给我们返回比如html,txt,excel等等这种格式的资源(输入网址返回显示的页面其实就是请求服务器返回一个html文件,再由浏览器去解析),同理我们通过向URL发送POST请求,将本地的数据发送到服务器。其实我们和服务器之间只是一个资源上的交互。

其实Http 1.1协议还支持一些其他的请求方法,比如:DELETE,PUT等等。

借用阮一峰博客一段话:如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

其实通过这种方式,我们就可以客户端的HTTP请求,对服务器上的一些数据进行修改(更新或者删除等)而不是之前单单的通过GET和POST和服务器进行一个资源上的交互。

你也许会说比如我想删除一个资源,那我向后台传递数据的时候加个字段,后台再去判断不就好了吗?其实这样完全可以,但是这不符合Restful风格了。

下面说一下JSR 303

JSR 303介绍:

http://www.ibm.com/developerworks/cn/java/j-lo-jsr303/

JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案。2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个重要特性被包含其中。本文将对 Bean Validation 的主要功能进行介绍,并通过一些示例来演示如何在 Java 开发过程正确的使用 Bean Validation。

通过IBM的文章,我知道了JSR 303是一个数据校验的规范。然后小白的我又迷糊了。既然在前台页面我们使用过JS对数据进行校验,那么后台为什么还是需要对数据进行校验呢?

通过百度得到答案:

http://zhidao.baidu.com/link?url=ZUdwZ1HKp9x4xEJvZcK4Oes4hsHvtip9MacigMvdhZtKqNjZlVT0seMyXiRXtwVwikg5gDxhSW28XnNW51xp2W_ZWmhoDZZD7nsHlTno5pS

验证是分为两部分的,客户端(浏览器)验证也就是JavaScript的验证,和服务器验证的(你的例子里就是Struts2验证框架了)。

验证的目的一方面为了保证用户输入的正确性,其实更重要的是防止攻击。
而JavaScript的验证,只要让浏览器禁用JavaScript就可以绕过了,所以会有安全漏洞。因而必须要有服务器端的验证了(除了验证以外,一般还需设计一些代码防止如SQL注入攻击之类的。前一段爆发的Struts 2的某版本漏洞,你百度一下应该知道它的危害)
但是,服务器端验证有提交这一步,运行速度上比简单的JavaScript浏览器验证要慢,所以JavaScript验证一般也是需要的,让用户有更好的体验。

综上,对于一般成熟的商业程序来说,服务器和客户端两个验证都需要,原因就是这样。
 
原来是JS校验可以被绕过,那么使用后台再进行校验,可以防止一些黑客的攻击手段。
 
今天又涨姿势了。

SpringMVC–SSH -- RESTful -- JSR303的更多相关文章

  1. SpringMVC实现RESTful服务

    SpringMVC实现RESTful服务 这里只说service,controller层的代码.Mapper层则直接继承Mapper<T>则可以,记住mybatis-config.xml一 ...

  2. 基于springMVC的RESTful服务实现

    一,什么是RESTful RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映 ...

  3. springmvc的RESTful风格

    springmvc对RESTful得支持RESTful架构,就是目前最流行得一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以挣得到越来越多网站的采用. RESTful(即Repres ...

  4. 基于 springMVC 的 RESTful HTTP API 实践(服务端)

    理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他2000年 ...

  5. SpringMVC 使用 RESTful 架构实现 CRUD 操作

    软件152 余建强 源码下载:http://download.csdn.net/detail/qq_35318576/9826210 1 使用框架 SpringMVC.Maven.Ajax.JSTL. ...

  6. spring 3.0 应用springmvc 构造RESTful URL 详细讲解

    在线springmvc_rest demo 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题. springmvc 3 ...

  7. springMVC学习--RESTful支持

    简介 RESTful架构,就是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用.RESTful(即Representational State T ...

  8. SpringMVC实现Restful风格的WebService

    1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...

  9. Springmvc构造RESTful详细讲解

    Rest介绍 /blog/1 HTTP GET => 得到id = 1的blog/blog/1 HTTP DELETE => 删除 id = 1的blog/blog/1 HTTP PUT ...

随机推荐

  1. 编译内核时出错:/bin/sh: 1: lzop: not found

    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/71477.aspx 在上面链接中,发现时缺少了 lzop 工 ...

  2. 继网易博客后搜狐博客也增加了nofollow标签

    继网易博客后搜狐博客也增加了nofollow标签 今天在搜狐博客发表了篇文章,在末端添加上我的版权,结果回头查看是发现,这个锚文本被加上了nofollow标签,也就是说这样的外链已经没有传递权重的作用 ...

  3. bat命令大全

    一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.   语法 echo [{on│off}] [message ...

  4. WCF基于Cookie回传的系列(概述)

    1  WCF的基本知识(不作细述,园子里有很多的经典的文章系列) 2 WCF的执行过程 3 让服务通信像浏览器发送请求应答一样回传Cookie,并实现Cookie在不同的服务间共享 4  基于共享后的 ...

  5. js深入研究之无法理解的js类代码,extend扩展

    <script type="text/javascript"> function Person(name) { this.name = name; } Person.p ...

  6. BZOJ1671: [Usaco2005 Dec]Knights of Ni

    1671: [Usaco2005 Dec]Knights of Ni Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 175  Solved: 107[Su ...

  7. 教程:30分钟学会Adobe Premiere

    原文地址:http://tieba.baidu.com/p/2785313831 视频教程地址

  8. poj1185:炮兵阵地(状压dp)

    也算是比较基础的状压dp了,跟做过的第二道比较又稍微复杂了一点 需要记录之前两行的状态.. 统计结果也稍有不同 另外还学习了一个得到一个整数二进制位 1 的个数的位运算方法 详见代码: #includ ...

  9. 手游与App测试如何快速转型? —— 过来人科普手游与App测试四大区别

    随着智能设备的普及和移动互联网的兴起,各家互联网巨头纷纷在往移动端布局和转型,同时初创的移动互联网公司也都盯着这个市场希望分一杯羹.在这个大环境下,互联网的重心已经慢慢从Web端转向了移动端,而移动端 ...

  10. 高性能以太网芯片W5500 数据手册 V1.0(一)

    W5500 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案.W5500 集成了 TCP/IP 协议栈,10/100M 以太网数据链路层(MAC) ...