发表于: 2017-06-27 21:22:55
1 1189
今天完成:
@Controller
public class StudentController {
@Autowired
private StudentService studentService;
@Controller
public class StudentController1 {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String showStudent(ModelMap model) {
model.addAttribute("message", "你好呀!");
return "student";
}
@RequestMapping(value = "/a/student1_copy/{id}", method = RequestMethod.GET)
@ResponseBody
public Student get(@PathVariable long id) {
return studentService.findByStudentId(id);
}
}
@RequestMapping(value = "/a/u/student1_copy/{id}", method = RequestMethod.DELETE)
@ResponseBody
public boolean delete(@PathVariable long id){
return studentService.delete(id);
}
@RequestMapping(value = "/a/student1_copy/",method = RequestMethod.GET)
@ResponseBody
public int countAll(){
return studentService.countAll();
}
//插入学生 返回学生id
@RequestMapping(value = "/a/student1_copy",method = RequestMethod.POST)
@ResponseBody
public long insert( @RequestBody Student student ){
return studentService.insert(student);
}
//根据id更新学生信息
@RequestMapping(value = "/a/student1_copy/{id}",method = RequestMethod.POST)
@ResponseBody
public boolean update(@RequestBody Student student){
return studentService.update(student);
}
}
1、什么是restful ?
Representational State Transfer :表现层状态转化
URL:统一资源定位器 ,为标识网络资源位置设置的一种编址方式。
URI:只代表资源的实体,不代表它的形式。URI应该只代表"资源"的位置。
客户端和服务器端互动过程中,有数据和状态的转变。客户端要操作服务器,让服务器状态发生改变,此改变是建立在表现层上,所以称为表现层状态转换。所以rest 是一个过程?
客户端操作服务器的手段是通过http协议里的四个操作:GET、POST、PUT、DELETE。
GET——获取资源
POST——新建资源、更新资源
PUT——更新资源
URI设计:
不应该有动词 eg: /posts/show/1——/post/1,用http协议中的get表示show。
/post/accounts/1/transfer/500/to/2——POST/transactionHTTP/1.1 Host:127.0.0.1 from=1&to=2&amount=500.00
2、spring对rest的封装有哪些?
@RequestMapping ("someUrl/{paramId}" ) eg:"/owners/{ownerId}"
在方法里,通过@Pathvariable绑定@RequestMapping传过来的值作为参数
如何定义接口,规范有哪些?**
接口:分为四部分,方法、uri、请求参数、返回参数
方法:新增(post) 修改(put) 删除(delete) 获取(get)
URI:
以/a开头,需要登陆才能用的接口/a/u
中间放表名或者能表达这个接口的单词
get方法,如果是后台通过搜索查询列表,那么以/search结尾,如果是前台的查询列表,以/list结尾;url参数就不说了。
请求参数和返回参数,都分为5列:
字段:类的属性
说明:中文释义
类型:是属性类型,只有String、Number、Object、Array四种
备注:是一些解释,或者可以写一下例子,比如负责json结构的情况,最好写上例子,好让前端能更好理解
是否必填:是字段的是否必填
返回参数:
如果只返回接口调用成功还是失败,则只有一个结构体:coad和message两个参数
如果要返回某些参数,则有两个结构体:1是code/mesage/data,2是data里写返回的参数,data是object类型
如果要返回列表,则有三个结构体:1是code/mesage/data,data是object,里面放置page/size/total/totalPage/list 5个参数,其中list是Arrary类型,list里放object,object里是具体的参数。
验收标准和深度思考:
3、验收标准 2.使用SpringMVC完成Rest,使用JsonTagLib完成Json接口
师兄说springmvc很重要,我愣了半天在想springmvc是什么。一下没反应过来。model、view、controller。
JsonTagLib:
Json是一种轻量级数据交换格式。用于表示数据结构的可读格式。
4、深度思考2 了解maven的module(模块)。
看了一篇http://www.jianshu.com/p/79cc250be1b2
我现在能理解到的是,在多人合作开发一个项目时候,用maven划分模块能有利于开发。(具体怎么有利我想到的只有pom)
每个子模块有自己的pom文件。(小括号中是项目的打包类型)
这些模块之间具有依赖关系。但是模块也可以单独拿出来使用。
子模块可以继承父模块的:
groupId和version
url:项目的URL地址
dependencies:项目的依赖配置
dependencyManagement:项目的依赖管理配置
repositories:项目的仓库配置
build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
reporting:包括项目的报告输出目录配置、报告插件配置等
某些模块,如app-util被所有人依赖,但你不想给所有人修改,现在你完全可以从这个项目结构出来,做成另外一个项目,svn只给特定的人访问,但仍提供jar给别人使用。暂不知svn怎么用,类似git的东东?
5、深度思考3 rest的请求方法有哪些,有什么区别?
POST /uri 创建 post创建是作用于一个集合资源上,服务端确定url时候就用post
------以下三种操作都是幂等的 即操作多次结果一样 不会对资源发生什么改变----------
DELETE /uri/xxx 删除
PUT /uri/xxx 更新或创建 put创建是作用在一个具体资源上,客户端确定url时采用put
GET /uri/xxx 查看
6、深度思考4 什么是http协议?Get和post请求有什么区别?*什么是tcp/ip协议?*
计算机要遵守一定规则才可以通信,这种规则就是通信协议。
TCP/IP协议:传输控制协议/网际协议。是用于因特网的通信协议。是传输层协议。
HTTP协议:是基于TCP/IP协议的应用层协议。一直关于怎样在网络上传输HTML文档的协议。规定web运作过程,负责web服务器和web浏览器中间的通信。
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
HTTP协议的get和post请求区别:
request(请求)— post 更新资源信息
(1) response(应答)— get 查询资源信息,get方法提交数据会有安全问题,get提交的数据会放在URL之后,用?分隔URL和传输数据 ,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。因此post安全性比get高。
(2) get传输数据会受到长度限制。
(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
7、http请求content-Type有几种,有什么区别?
http请求包含三部分:(1) 请求方法/URI/http协议版本 (2)请求头 (3)请求正文。
http响应包含三部分:(1) http协议版本/状态代码/描述 (2)响应头 (3)响应正文。
eg: (1) 请求头:POST /hello.jsp HTTP/1.1
响应头:HTTP/1.1 200 OK
(2)请求头可以声明浏览器类型,所用语言,请求正文类型,请求正文长度等。响应头包含服务器类型,正文类型,长度等。
content-Type是http请求头和响应头中的指定请求和响应内容类型的属性,默认为text/html。
可以把请求头和响应头中的正文部分看作是邮件,遵守一个MIME(多用途忘了右键拓展协议)。content-Type就是用来指定请求正文和响应正文部分的MIME类型的。常见的MIME类型:
超文本标记语言文本 .html,.html text/html普通文本 .txt text/plainRTF文本 .rtf application/rtfGIF图形 .gif image/gifJPEG图形 .ipeg,.jpg image/jpegau声音文件 .au audio/basicMIDI音乐文件 mid,.midi audio/midi,audio/x-midiRealAudio音乐文件 .ra, .ram audio/x-pn-realaudioMPEG文件 .mpg,.mpeg video/mpegAVI文件 .avi video/x-msvideoGZIP文件 .gz application/x-gzipTAR文件 .tar application/x-tar
http请求的三次握手具体指什么?

TCP三次握手:我的理解是客户端和服务器建立连接的过程
第一次握手:发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.
8、http适合什么场景?*
用HTTP:双方不需要时刻保持连接,客户端只是通过一个个HTTP请求来获取服务器的特定资源。如通过get/post请求获取网页、图片、JSON或者XML数据,还有常用的文件上传、小文件下载等。
http适用场景:公司OA服务,互联网服务。我暂不能想到这些。
9、http状态码有哪些?
http状态码用来告诉客户端,服务器是否产生了预期的Response。
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求
200 (“OK”)用于一般性的成功返回
200 (“OK”)不可用于请求错误返回
201 (“Created”)资源被创建
202 (“Accepted”)用于Controller控制类资源异步处理的返回,仅表示请求已经收到。对于耗时比较久的处理,一般用异步处理来完成
204 (“No Content”)此状态可能会出现在PUT、POST、DELETE的请求中,一般表示资源存在,但消息体中不会返回任何资源相关的状态或信息。
301 (“Moved Permanently”)资源的URI被转移,需要使用新的URI访问
302 (“Found”)不推荐使用,此代码在HTTP1.1协议中被303/307替代。我们目前对302的使用和最初HTTP1.0定义的语意是有出入的,应该只有在GET/HEAD方法下,客户端才能根据Location执行自动跳转,而我们目前的客户端基本上是不会判断原请求方法的,无条件的执行临时重定向
303 (“See Other”)返回一个资源地址URI的引用,但不强制要求客户端获取该地址的状态(访问该地址)
304 (“Not Modified”)有一些类似于204状态,服务器端的资源与客户端最近访问的资源版本一致,并无修改,不返回资源消息体。可以用来降低服务端的压力
307 (“Temporary Redirect”)目前URI不能提供当前请求的服务,临时性重定向到另外一个URI。在HTTP1.1中307是用来替代早期HTTP1.0中使用不当的302
400 (“Bad Request”)用于客户端一般性错误返回, 在其它4xx错误以外的错误,也可以使用400,具体错误信息可以放在body中
401 (“Unauthorized”)在访问一个需要验证的资源时,验证错误
403 (“Forbidden”)一般用于非验证性资源访问被禁止,例如对于某些客户端只开放部分API的访问权限,而另外一些API可能无法访问时,可以给予403状态
404 (“Not Found”)找不到URI对应的资源
405 (“Method Not Allowed”)HTTP的方法不支持,例如某些只读资源,可能不支持POST/DELETE。但405的响应header中必须声明该URI所支持的方法
406 (“Not Acceptable”)客户端所请求的资源数据格式类型不被支持,例如客户端请求数据格式为application/xml,但服务器端只支持application/json
409 (“Conflict”)资源状态冲突,例如客户端尝试删除一个非空的Store资源
412 (“Precondition Failed”)用于有条件的操作不被满足时
415 (“Unsupported Media Type”)客户所支持的数据类型,服务端无法满足
500 (“Internal Server Error”)服务器端的接口错误,此错误于客户端无关
评论