当前位置: 首页 > news >正文

网站程序包括数据库和网页程序网站开发免费视频教程

网站程序包括数据库和网页程序,网站开发免费视频教程,佛山企业建网站,电商网站建设收费1、REST 风格 1.1、REST 简介 REST#xff08;Representational State Transfer#xff09;#xff0c;表现形式状态转换 在开发中#xff0c;它其实指的就是访问网络资源的格式 1.1.1、传统风格资源描述形式 http://localhost/user/getById?id1http://localhost/user…1、REST 风格 1.1、REST 简介 RESTRepresentational State Transfer表现形式状态转换 在开发中它其实指的就是访问网络资源的格式 1.1.1、传统风格资源描述形式 http://localhost/user/getById?id1http://localhost/user/saveUser 1.1.2、REST 风格描述形式 在 REST 风格中一般用 模块名  s 的格式描述资源表示这是一类资源而不是单个资源。 4 个常用的 REST 风格请求行为 http://localhost/users        查询所有用户信息        GET 查询http://localhost/users/1        查询指定用户信息        GET 查询http://localhost/users        添加用户信息        POST 新增http://localhost/users        修改用户信息        PUT 更新http://localhost/users/1        删除用户信息        DELETE 删除 REST 风格下对于同一个路径不同的请求代表对资源不同的操作。也就是说我们只需要一个路径和一个请求方式就可以确定一个访问行为。 根据 REST 风格对资源进行访问称为 RESTful 。 优点 最大在优点就是隐藏资源的访问行为无法通过地址得到对资源是如何操作的 注意REST 风格只是一种风格并不是一种规范可以打破。也就是说我们想怎么写就怎么写但是我们只是希望大家都遵守这种风格方便开发。 1.2、RESTful 入门案例 RESTful 就是指使用 REST 风格开发项目。 1.2.1、设定 http 请求动作 REST 风格下我们对资源的不同操作由路径和请求动作决定这里的路径我们统一为 模块名 s所以我们需要把 Controller 类上面的 RequsetMapping 中指定的该模块资源的统一前缀去掉。 添加请求动作只需要先把原本 Controller 类的方法上 RequsetMapping 注解的参数改为 模块名 s  然后通过 method 属性来给方法添加请求动作。 查询都是 GET、新增是 POST 、修改是 PUT、删除是 DELETE。 RequestMapping(value /users,method RequestMethod.POST)ResponseBodypublic String save(RequestBody User user){System.out.println(user save, name user.getName() , age user.getAge());return {module:user save};} 这里的新增用户请求需要传递用户参数这里我们通过 RequestBody 注解来表示从请求体中获取参数也就是通过 json 来传递。 1.2.2、设定请求路径参数 也就是我们控制器类方法上面的注解 RequsetMapping 中的 value 参数这里需要根据需求决定需不需要带参数比如删除 name 为 zs 的用户那就需要指定 value/users/name 而不只是模块名s。 此外对于带有路径变量的请求参数需要给形参前面添加注解 PathVariable 表示从请求路径中解析出该变量当做形参的值。 RequestMapping(value /users/{id},method RequestMethod.DELETE)ResponseBodypublic String delete(PathVariable Integer id){System.out.println(user deleted ... user id id);return {module: user delete};} 完整代码 Controller public class UserController {RequestMapping(value /users,method RequestMethod.POST)ResponseBodypublic String save(RequestBody User user){System.out.println(user save, name user.getName() , age user.getAge());return {module:user save};}RequestMapping(value /users/{id},method RequestMethod.DELETE)ResponseBodypublic String delete(PathVariable Integer id){System.out.println(user deleted ... user id id);return {module: user delete};}RequestMapping(value /users,method RequestMethod.PUT)ResponseBodypublic String update(RequestBody User user){System.out.println(user deleted ... user user.toString());return {module: user update};}RequestMapping(value /users/{id},method RequestMethod.GET)ResponseBodypublic String getById(PathVariable Integer id){System.out.println(user get ... user id id);return {module: user get};}RequestMapping(value /users,method RequestMethod.GET)ResponseBodypublic String getAll(){System.out.println(user get all ...);return {module: user get all};} } 测试结果 查询所有用户 查询 id 为 1 的用户 新增用户 注意新增用户时我们需要给控制器方法传递一个 User 类型创参数因为需要使用 jackson 把我们的 json 转为 java 对象这里要求该对象必须要有无参构造器不然会报错 删除用户 修改用户   1.2.3、请求参数总结 到现在我们共学习了三种请求参数的传递方法 RequestBodyRequestParam用的比较少PathVariable 1.3、RESTful 快速开发 这一节我们来对上面的代码进行简化开发比如所有的控制器方法的前缀都是 /users 所有的控制器方法上面都有一个 ResponseBody 因为我们不需要返回页面。 1.3.1、统一路径前缀 上一节使用 REST 风格后我们发现所有的请求路径的前缀都是 /users 路径变量所以既然都有一个前缀 /users 那么为什么不可以都踢出来呢 RequestMapping(/users) public class UserController {// ... } 这样对于那些在 REST 风格下路径本来就是 模块名s/users的方法直接就可以直接省去 RequestMapping 中的 value 属性对于请求路径包含路径变量的方法可以省去前缀就像这样 RequestMapping(value /{id},method RequestMethod.DELETE)public String delete(PathVariable Integer id){System.out.println(user deleted ... user id id);return {module: user delete};} 1.3.2、RestController 从上一节我们的代码中可以发现控制器类的方法都带有一个 ResponseBody 这是因为因为我们不需要返回页面。所以这里我们可以直接简化把它提到控制器类上面 Controller ResponseBody RequestMapping(/users) public class UserController {// ... } 但是 SpringMVC 还是觉得不够简化它又提供了一个注解 RestController 它就相当于同时包含了 ResponseBody 和 Controller 两个注解毕竟控制器类上面肯定是由 Controller 注解的。所以以后我们直接这么写就行了 RestController RequestMapping(/users) public class UserController {// ... } 1.3.2、标准请求动作注解 经过上一步的简化我们的 UserController 现在变成了这样 RestController RequestMapping(/users) public class UserController {RequestMapping(method RequestMethod.POST)public String save(RequestBody User user){System.out.println(user save, name user.getName() , age user.getAge());return {module:user save};}RequestMapping(value /{id},method RequestMethod.DELETE)public String delete(PathVariable Integer id){System.out.println(user deleted ... user id id);return {module: user delete};}RequestMapping(method RequestMethod.PUT)public String update(RequestBody User user){System.out.println(user deleted ... user user.toString());return {module: user update};}RequestMapping(value /{id},method RequestMethod.GET)public String getById(PathVariable Integer id){System.out.println(user get ... user id id);return {module: user get};}RequestMapping(method RequestMethod.GET)public String getAll(){System.out.println(user get all ...);return {module: user get all};} } 现在看起来还是很冗余我们可以对这些方法的请求行为进行进一步简化现在这么长的参数太扎眼了现在我们的代码就变成了这样把 value   /{param} 和  method RequestMethpd.X 合并到一个注解中 RestController RequestMapping(/users) public class UserController {PostMappingpublic String save(RequestBody User user){System.out.println(user save, name user.getName() , age user.getAge());return {module:user save};}DeleteMapping(/{id})public String delete(PathVariable Integer id){System.out.println(user deleted ... user id id);return {module: user delete};}PutMappingpublic String update(RequestBody User user){System.out.println(user deleted ... user user.toString());return {module: user update};}GetMapping(/{id})public String getById(PathVariable Integer id){System.out.println(user get ... user id id);return {module: user get};}GetMappingpublic String getAll(){System.out.println(user get all ...);return {module: user get all};} } 显然一下子变得清新脱俗舒服多了。 1.4、基于 RESTful 页面数据交互 实体类 package com.lyh.domain;public class Book {private Integer id;private String type;private String name;private String description;public Book(){}public Book(Integer id, String type, String name, String description) {this.id id;this.type type;this.name name;this.description description;}Overridepublic String toString() {return Book{ id id , type type \ , name name \ , description description \ };}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getType() {return type;}public void setType(String type) {this.type type;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getDescription() {return description;}public void setDescription(String description) {this.description description;} }SpringMVC 配置类 Configuration ComponentScan(com.lyh.controller) // 扫描 EnableWebMvc // 开启 json 转对象的功能等各种格式转换 public class SpringMvcConfig {} Sevlet 容器配置类 public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {protected Class?[] getRootConfigClasses() {return new Class[0];}protected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected String[] getServletMappings() {return new String[]{/};}// 乱码处理Overrideprotected Filter[] getServletFilters() {CharacterEncodingFilter filter new CharacterEncodingFilter();filter.setEncoding(UTF-8);return new Filter[]{filter};} } BookController 控制器类 RestController RequestMapping(/books) public class BookController {PostMappingpublic String save(RequestBody Book book){System.out.println(book save ... book book.toString());return {module:book save};}GetMappingpublic ListBook getAll(){ListBook list new ArrayListBook();list.add(new Book(1,编程,《图解Spark》,大数据技术));list.add(new Book(2,小说,《黄金时代》,王小波著作));return list;} } 测试 导入静态资源后访问 localhost:85/pages/boos.html 发现报错找不到映射No Mapping for GET /pages/books.html 这是因为我们现在的请求都被 SpringMVC 拦截走了其实这些静态资源应该是由 Tomcat 处理的。 1.4.1、放行非 SpringMVC 请求 上面的问题是对于静态资源的访问本该是由 Tomcat 处理但是前面我们在 Servlet 配置类中设置了所有请求都由 SpringMVC 来响应。所以现在我们需要通过添加一个配置类来实现放行静态资源 Configuration public class SpringMvcSupport extends WebMvcConfigurationSupport {Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {// 当访问 /pages/下的资源时,走 /pages 目录下的内容registry.addResourceHandler(/pages/**).addResourceLocations(/pages/);registry.addResourceHandler(/js/**).addResourceLocations(/js/);registry.addResourceHandler(/css/**).addResourceLocations(/css/);registry.addResourceHandler(/plugins/**).addResourceLocations(/plugins/);} } 然后我们需要让 SpringMVC 去加载这个新的配置类 这样就可以访问到了
http://www.zqtcl.cn/news/497665/

相关文章:

  • 网站建设目的是什么建筑机械人才培训网官网
  • 建筑建设行业网站大型购物网站开发
  • 手机网站开发用什么设计之家网
  • 网站开发平台有哪些什么是网络开发
  • 学校网站前置审批网站做哪些比较有意思
  • 怎么给企业做网站学计算机网站建设
  • 网站关键词优化排名技巧aiyuan wordpress
  • 建设工程资质证书二维码扫描网站自己做的网站如何让qq登录
  • 网站域名有效期wordpress 特别慢
  • 建立个人网站服务器如何用dedecms做网站
  • php网站开发实市场推广策略 包括哪些
  • 合众商道网站开发可以投稿的写作网站
  • 北京贸易公司网站制作免费的查企业的网站
  • 网站建设报价表模板下载小程序怎么找出来
  • 网站制作简单协议wordpress快速建站教程视频教程
  • 杭州做网站价格北京企业响应式网站建设
  • 30个成功的电子商务网站设计中企动力 网站报价
  • php 网站开发 视频百度seo排名查询
  • 网站开发代码wordpress提示安装
  • 网站推广的策略高端网球拍
  • 广东知名网站建设wordpress 用户量
  • asp源代码网站网络架构图是什么
  • 专业做淘宝网站公司吗苏州网站制作开发
  • 电商网站模板html安阳历史
  • seo快速排名多少钱安阳网站怎么优化
  • 如何在网站后台删除栏目阿里巴巴上做网站要多少钱
  • 网站建设意识形态工作河北省两学一做网站
  • 綦江建站哪家正规php做不了大型网站吗
  • 优秀的设计网站青岛网站设计企业
  • 谁有做爰网站号wordpress 4.8 中文