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

流媒体网站建设规划中华南大街网站建设

流媒体网站建设规划,中华南大街网站建设,青海西宁高端网站建设,做二手钢结构网站有哪些RESTful 1、RESTful简介 REST#xff1a;Representational State Transfer#xff0c;表现层资源状态转移。 a资源 资源是一种看待服务器的方式#xff0c;即#xff0c;将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一…RESTful 1、RESTful简介 RESTRepresentational State Transfer表现层资源状态转移。 a资源 资源是一种看待服务器的方式即将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西可以将资源设计的要多抽象有多抽象只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似资源是以名词为核心来组织的首先关注的是名词。一个资源可以由一个或多个URI来标识。URI既是资源的名称也是资源在Web上的地址。对某个资源感兴趣的客户端应用可以通过资源的URI与其进行交互。 b资源的表述 资源的表述是一段对于资源在某个特定时刻的状态的描述。可以在客户端-服务器端之间转移交换。资源的表述可以有多种格式例如HTML/XML/JSON/纯文本/图片/视频/音频等等。资源的表述格式可以通过协商机制来确定。请求-响应方向的表述通常使用不同的格式。 c状态转移 状态转移说的是在客户端和服务器端之间转移transfer代表资源状态的表述。通过转移和操作资源的表述来间接实现操作资源的目的。 2、RESTful的实现 具体说就是 HTTP 协议里面四个表示操作方式的动词GET、POST、PUT、DELETE。 它们分别对应四种基本操作GET 用来获取资源POST 用来新建资源PUT 用来更新资源DELETE 用来删除资源。 REST 风格提倡 URL 地址使用统一的风格设计从前到后各个单词使用斜杠分开不使用问号键值对方式携带请求参数而是将要发送给服务器的数据作为 URL 地址的一部分以保证整体风格的一致性。 操作传统方式REST风格查询操作getUserById?id1user/1–get请求方式保存操作saveUseruser–post请求方式删除操作deleteUser?id1user/1–delete请求方式更新操作updateUseruser–put请求方式 3、HiddenHttpMethodFilter 由于浏览器只支持发送get和post方式的请求那么该如何发送put和delete请求呢 SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们将 POST 请求转换为 DELETE 或 PUT 请求 HiddenHttpMethodFilter 处理put和delete请求的条件 a当前请求的请求方式必须为post b当前请求必须传输请求参数_method 满足以上条件HiddenHttpMethodFilter 过滤器就会将当前请求的请求方式转换为请求参数_method的值因此请求参数_method的值才是最终的请求方式 在web.xml中注册HiddenHttpMethodFilter filterfilter-nameHiddenHttpMethodFilter/filter-namefilter-classorg.springframework.web.filter.HiddenHttpMethodFilter/filter-class /filter filter-mappingfilter-nameHiddenHttpMethodFilter/filter-nameurl-pattern/*/url-pattern /filter-mapping源码 if (POST.equals(request.getMethod()) request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) null) { //this.methodParam_methodString paramValue request.getParameter(this.methodParam); if (StringUtils.hasLength(paramValue)) { String method paramValue.toUpperCase(Locale.ENGLISH); if (ALLOWED_METHODS.contains(method)) { requestToUse new HttpMethodRequestWrapper(request, method); } } } filterChain.doFilter(requestToUse, response);后端 RequestMapping(value /user ,method RequestMethod.PUT) public String insertUser(User user){ System.out.println(修改用户user); return success; }前端 注 目前为止SpringMVC中提供了两个过滤器CharacterEncodingFilter和HiddenHttpMethodFilter 在web.xml中注册时必须先注册CharacterEncodingFilter再注册HiddenHttpMethodFilter 原因 在 CharacterEncodingFilter 中通过 request.setCharacterEncoding(encoding) 方法设置字符集的 request.setCharacterEncoding(encoding) 方法要求前面不能有任何获取请求参数的操作 而 HiddenHttpMethodFilter 恰恰有一个获取请求方式的操作 String paramValue request.getParameter(this.methodParam);RESTful案例 1、准备工作 和传统 CRUD 一样实现对员工信息的增删改查。 搭建环境 准备实体类 package com.atguigu.mvc.bean;public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender gender;}public Employee(Integer id, String lastName, String email, Integer gender) {super();this.id id;this.lastName lastName;this.email email;this.gender gender;}public Employee() {} }准备dao模拟数据 package com.atguigu.mvc.dao;import java.util.Collection; import java.util.HashMap; import java.util.Map;import com.atguigu.mvc.bean.Employee; import org.springframework.stereotype.Repository;Repository public class EmployeeDao {private static MapInteger, Employee employees null;static{employees new HashMapInteger, Employee();employees.put(1001, new Employee(1001, E-AA, aa163.com, 1));employees.put(1002, new Employee(1002, E-BB, bb163.com, 1));employees.put(1003, new Employee(1003, E-CC, cc163.com, 0));employees.put(1004, new Employee(1004, E-DD, dd163.com, 0));employees.put(1005, new Employee(1005, E-EE, ee163.com, 1));}private static Integer initId 1006;public void save(Employee employee){if(employee.getId() null){employee.setId(initId);}employees.put(employee.getId(), employee);}public CollectionEmployee getAll(){return employees.values();} public Employee get(Integer id){return employees.get(id);}public void delete(Integer id){employees.remove(id);} }2、功能清单 功能URL 地址请求方式访问首页√/GET查询全部数据√/employeeGET删除√/employee/2DELETE跳转到添加数据页面√/toAddGET执行保存√/employeePOST跳转到更新数据页面√/employee/2GET执行更新√/employeePUT 3、具体功能访问首页 a配置view-controller mvc:view-controller path/ view-nameindex/b创建页面 !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8 titleTitle/title /head body h1首页/h1 a th:href{/employee}访问员工信息/a /body /html4、具体功能查询所有员工数据 a控制器方法 RequestMapping(value /employee, method RequestMethod.GET) public String getEmployeeList(Model model){CollectionEmployee employeeList employeeDao.getAll();model.addAttribute(employeeList, employeeList);return employee_list; }b创建employee_list.html !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8titleEmployee Info/titlescript typetext/javascript th:src{/static/js/vue.js}/script /head bodytable border1 cellpadding0 cellspacing0 styletext-align: center; iddataTabletrth colspan5Employee Info/th/trtrthid/ththlastName/ththemail/ththgender/ththoptions(a th:href{/toAdd}add/a)/th/trtr th:eachemployee : ${employeeList}td th:text${employee.id}/tdtd th:text${employee.lastName}/tdtd th:text${employee.email}/tdtd th:text${employee.gender}/tdtda classdeleteA clickdeleteEmployee th:href{/employee/${employee.id}}delete/aa th:href{/employee/${employee.id}}update/a/td/tr/table /body /html5、具体功能删除 a创建处理delete请求方式的表单 !-- 作用通过超链接控制表单的提交将post请求转换为delete请求 -- form iddelete_form methodpost!-- HiddenHttpMethodFilter要求必须传输_method请求参数并且值为最终的请求方式 --input typehidden name_method valuedelete/ /formb删除超链接绑定点击事件 引入vue.js script typetext/javascript th:src{/static/js/vue.js}/script删除超链接 a classdeleteA clickdeleteEmployee th:href{/employee/${employee.id}}delete/a通过vue处理点击事件 script typetext/javascriptvar vue new Vue({el:#dataTable,methods:{//event表示当前事件deleteEmployee:function (event) {//通过id获取表单标签var delete_form document.getElementById(delete_form);//将触发事件的超链接的href属性为表单的action属性赋值delete_form.action event.target.href;//提交表单delete_form.submit();//阻止超链接的默认跳转行为event.preventDefault();}}}); /scriptc控制器方法 RequestMapping(value /employee/{id}, method RequestMethod.DELETE) public String deleteEmployee(PathVariable(id) Integer id){employeeDao.delete(id);return redirect:/employee; }6、具体功能跳转到添加数据页面 a配置view-controller mvc:view-controller path/toAdd view-nameemployee_add/mvc:view-controllerb创建employee_add.html !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8titleAdd Employee/title /head bodyform th:action{/employee} methodpostlastName:input typetext namelastNamebremail:input typetext nameemailbrgender:input typeradio namegender value1maleinput typeradio namegender value0femalebrinput typesubmit valueaddbr /form/body /html7、具体功能执行保存 a控制器方法 RequestMapping(value /employee, method RequestMethod.POST) public String addEmployee(Employee employee){employeeDao.save(employee);return redirect:/employee; }8、具体功能跳转到更新数据页面 a修改超链接 a th:href{/employee/${employee.id}}update/ab控制器方法 RequestMapping(value /employee/{id}, method RequestMethod.GET) public String getEmployeeById(PathVariable(id) Integer id, Model model){Employee employee employeeDao.get(id);model.addAttribute(employee, employee);return employee_update; }c创建employee_update.html !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8titleUpdate Employee/title /head bodyform th:action{/employee} methodpostinput typehidden name_method valueputinput typehidden nameid th:value${employee.id}lastName:input typetext namelastName th:value${employee.lastName}bremail:input typetext nameemail th:value${employee.email}br!--th:field${employee.gender}可用于单选框或复选框的回显若单选框的value和employee.gender的值一致则添加checkedchecked属性--gender:input typeradio namegender value1 th:field${employee.gender}maleinput typeradio namegender value0 th:field${employee.gender}femalebrinput typesubmit valueupdatebr /form/body /html9、具体功能执行更新 a控制器方法 RequestMapping(value /employee, method RequestMethod.PUT) public String updateEmployee(Employee employee){employeeDao.save(employee);return redirect:/employee; }
http://www.dnsts.com.cn/news/127232.html

相关文章:

  • 电子代加工东莞网站建设网站优化包括哪些内容
  • 公司网站建设技术方案模板许昌建设局网站
  • 想学做网站 应该学重庆城市建设档案馆网站
  • 网站手机版排名seo移动端下载
  • 柳州市诚信体系建设网站免费开源代码网站
  • 西安网站建设方案优化上海做外贸建站的专业公司
  • 学生版 建设网站软件下载iis7网站绑定域名
  • 申请一个网站得多钱中山网站设计素材
  • 哈尔滨网站优化技术公司网站建设哪家公司好
  • 做微信公众号第三网站免费制作网站的平台
  • 天津建设工程注册中心网站深圳北网站建设
  • 电子商务网站设计流程恩施建设银行网站
  • 莱芜网站建设哪里有广河网站建设
  • 百度搜索显示网站logowordpress媒体库地址修改
  • 三合一网站怎么做网络营销是做什么的工作
  • 兰州做网站哪个平台好wordpress 4.1 主题
  • 网站后台上次图片网站看不到排版怎么办
  • 用文本文档做网站企业站官网
  • 展会搭建设计案例网站电子商务网站制作教程
  • 上海市建设厅网站查询企业网站建设 总结
  • 网站建设图书推荐wordpress搜索按钮
  • 狂人站群系统河南建设银行网站
  • 自己可以给公司做网站吗百度免费广告发布平台
  • 做网站前端代码saas平台是干嘛的
  • 专业网站建设科技公司月付购物网站建站
  • 网站输入一级域名自动跳转二级域名wordpress git
  • 企业建设网站要注意的要素卖房子上哪个网站最好卖
  • 黄石网站建设方案做网页代码的素材网站
  • 莱州一中网站网站门户建设方案
  • 郓城那家网站做的好深圳个性化建网站公司