SpringMVC–SSH -- RESTful -- JSR303

最近在使用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校验可以被绕过,那么使用后台再进行校验,可以防止一些黑客的攻击手段。
 
今天又涨姿势了。
时间: 2024-10-23 23:38:55

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

springmvc的RESTful风格

springmvc对RESTful得支持RESTful架构,就是目前最流行得一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以挣得到越来越多网站的采用. RESTful(即Representational State Transfer变现层状态转换)其实是一个开发理念,是对http 的很好的诠释. 状态转换(State Transfer) 客户端用到的手段,只能是HTTP协议.具体来说就是HTTP协议里面四个表示操作方式的动词:GET/POST/PUT/DELETE,分别对应四中

maven+SpringMVC搭建RESTful后端服务框架

今天来尝试一下搭建基于SpringMVC的RESTful标准的后端服务. 首先,什么是MVC?M-model,模型,指业务数据层,具体一点就是业务逻辑与数据库的交互:V-view,视图,用来展示数据,传统SpringMVC中控制器有返回类型ModelAndView,即返回含有数据模型与页面视图的jsp文件:C-controller,控制器,通常负责处理与用户间的交互,控制从数据库取数与返回结果到用户等. 那么,什么是REST风格的服务呢?REST(Representational State T

SpringMVC实现Restful风格的WebService

1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文(链接1), 该博文中的第四小结是关于如何创建SpringMVC+maven教程.下面只给出创建好的目录结构,其中的部分文件如java程序是后面要完成的. 3.指定依赖文件 maven具有特定的文件结构,并通过pom.xml来管理工程.下面是在实现Restful时需要的依赖. 1 <project x

优雅的SpringMVC和Restful

一.前言 1.前段时间一直在写微信小程序的请求,终于把客户端的请求弄好了,可是服务端呢,该怎么写,纠结了半天,用servlet暂时写好了一个:http://www.cnblogs.com/JJDJJ/p/7299274.html 我们看一下整体代码: 当然这下面还有一大串.. 有没有发现,这些代码非常乱,以至于现在的我看着脑儿疼. 2.后来想着用API的那种形式写一个服务端,小程序这边post过去json格式数据,然后服务端获取json,接着对数据进行操作,最后返回结果就行了.类似百度外卖API

Springmvc构造RESTful详细讲解

/blog/1 HTTP GET => 得到id = 1的blog/blog/1 HTTP DELETE => 删除 id = 1的blog/blog/1 HTTP PUT => 更新id = 1的blog/blog HTTP POST => 新增BLOG 以下详细解一下spring rest使用. 首先,我们带着如下两个问题查看本文. 1.如何在java构造没有扩展名的RESTful url,如 /forms/1,而不是 /forms/1.do 2.浏览器的form标签不支持提交

SpringMVC构建Restful。

因为spring是依赖jackson来生成json,需要添加jar包. pom.xml文件添加依赖. <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency>

SwaggerUI+SpringMVC——构建RestFul API的可视化界面

今天给大家介绍一款工具,这个工具目前可预见的好处是:自动维护最新的接口文档. 我们都知道,接口文档是非常重要的,但是随着代码的不断更新,文档却很难持续跟着更新,今天要介绍的工具,完美的解决了这个问题.而且,对于要使用我们接口的人来说,不需要在给他提供文档,告诉他地址,一目了然. 最近项目中一直有跟接口打交道,恰好又接触到了一个新的接口工具,拿出来跟大家分享一下. 关于REST接口,我在上篇文章中已经有介绍,这里来说一下如何配合SwaggerUI搭建RestFul API 的可视化界面.最终要达到

SpringMVC之Restful

Spring MVC本身对Restful支持非常好.它的@RequestMapping.@RequestParam.@PathVariable.@ResponseBody注解很好的支持了REST. 1. @RequestMapping @RequestMapping 方法注解指定一个请求的URI映射地址. 类似于struts的action-mapping,同时可以指定POST或者GET请求类型. @RequestMapping("/owners/{ownerId}", method=R

springMvc中restful风格的api路径中把小数点当参数,SpringMvc中url有小数点

在springMvc web项目中restful风格的api路径中有小数点会被过滤后台拿不到最后一个小数点的问题, 有两种解决方案: 1:在api路径中加入:.+ @RequestMapping("/findByIp/{ip:.+}") public Object test(@PathVariable String ip) { System.out.println(ip); return ""; } 但这种方式在web服务中感觉太过于鸡肋 所以在springMvc.