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

业务型网站首页企业文化标语

业务型网站首页,企业文化标语,房产中介网站建设技巧,100款应用软件免费大全文章目录 1、RESTful简介a资源b资源的表述c状态转移 2、RESTful的实现HiddenHttpMethodFilterRESTful案例 1、RESTful简介 REST#xff1a;Representational State Transfer#xff0c;表现层资源状态转移。 a资源 资源是一种看待服务器的方式#xff0c… 文章目录 1、RESTful简介a资源b资源的表述c状态转移 2、RESTful的实现HiddenHttpMethodFilterRESTful案例 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请求方式 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注 目前为止SpringMVC中提供了两个过滤器CharacterEncodingFilter和HiddenHttpMethodFilter 在web.xml中注册时必须先注册CharacterEncodingFilter再注册HiddenHttpMethodFilter 原因 在 CharacterEncodingFilter 中通过 request.setCharacterEncoding(encoding) 方法设置字符集的 request.setCharacterEncoding(encoding) 方法要求前面不能有任何获取请求参数的操作 而 HiddenHttpMethodFilter 恰恰有一个获取请求方式的操作 String paramValue request.getParameter(this.methodParam);RESTful案例 和传统 CRUD 一样实现对员工信息的增删改查。 1.搭建环境 web.xml ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--配置编码过滤器--filterfilter-nameCharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-paraminit-paramparam-nameforceResponseEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--配置处理请求方式put和delete的HiddenHttpMethodFilter--filterfilter-nameHiddenHttpMethodFilter/filter-namefilter-classorg.springframework.web.filter.HiddenHttpMethodFilter/filter-class/filterfilter-mappingfilter-nameHiddenHttpMethodFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--配置SpringMVC的前端控制器DispatcherServlet--servletservlet-nameDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springMVC.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping/web-appdelete put 方法需要过滤器org.springframework.web.filter.HiddenHttpMethodFilter 记得添加 springMVC.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!--扫描组件--context:component-scan base-packagecom.restful.demo_restful/context:component-scan!--配置Thymeleaf视图解析器--bean idviewResolver classorg.thymeleaf.spring5.view.ThymeleafViewResolverproperty nameorder value1/property namecharacterEncoding valueUTF-8/property nametemplateEnginebean classorg.thymeleaf.spring5.SpringTemplateEngineproperty nametemplateResolverbean classorg.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver!-- 视图前缀 --property nameprefix value/WEB-INF/templates//!-- 视图后缀 --property namesuffix value.html/property nametemplateMode valueHTML5/property namecharacterEncoding valueUTF-8 //bean/property/bean/property/bean!--配置视图控制器--mvc:view-controller path/ view-nameindex/mvc:view-controllermvc:view-controller path/toAdd view-nameemployee_add/mvc:view-controller!--开放对静态资源的访问--mvc:default-servlet-handler /!--开启mvc注解驱动--mvc:annotation-driven //beansMycontroller.java package com.restful.demo_restful.controller;import com.restful.demo_restful.dao.EmployeeDao; import com.restful.demo_restful.pro.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;import java.util.Collection;/*** ClassName: MyController* Package: com.restful.demo_restful.controller* Description:** Author Thmiao* Create 2023/10/24 17:21* Version 1.0*/Controller public class MyController {AutowiredEmployeeDao employeeDao;// 获取所有的员工RequestMapping(value /employee, method RequestMethod.GET)public String getEmployeeList(Model model){CollectionEmployee employeeList employeeDao.getAll();model.addAttribute(employeeList, employeeList);return employee_list;}// 删除员工RequestMapping(value /employee/{id}, method RequestMethod.DELETE)public String deleteEmployee(PathVariable(id) Integer id){employeeDao.delete(id);return redirect:/employee;}// 添加员工信息RequestMapping(value /employee, method RequestMethod.POST)public String addEmployee(Employee employee){employeeDao.save(employee);return redirect:/employee;}// 修改页面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;}// 修改员工信息RequestMapping(value /employee, method RequestMethod.PUT)public String updateEmployee(Employee employee){employeeDao.save(employee);return redirect:/employee;} } EmpolyeeDao.java package com.restful.demo_restful.dao;import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.restful.demo_restful.pro.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);} }Employee.java package com.restful.demo_restful.pro;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() {} }myjs.js var vue new Vue({el:#dataTable,methods:{//event表示当前事件deleteEmployee:function (event) {//阻止超链接的默认跳转行为event.preventDefault();//通过id获取表单标签var delete_form document.getElementById(delete_form);//将触发事件的超链接的href属性为表单的action属性赋值delete_form.action event.target.href;//提交表单delete_form.submit();} } }); 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 /htmlemployee_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 iddataTable border1 cellpadding0 cellspacing0 styletext-align: center; trth 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!-- 作用通过超链接控制表单的提交将post请求转换为delete请求 -- form iddelete_form methodpost!-- HiddenHttpMethodFilter要求必须传输_method请求参数并且值为最终的请求方式 --input typehidden name_method valueDELETE/ !-- input typehidden name_method valuedelete/-- /form /body script typetext/javascript th:src{/static/js/myjs.js}/script /htmlemployee_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 /htmlindex.html !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8 titleTitle/title /head body h1首页/h1 a th:href{/employee}访问员工信息/a /body /html spring 环境 。还有vue.js记得导入 功能清单 功能URL 地址请求方式访问首页√/GET查询全部数据√/employeeGET删除√/employee/2DELETE跳转到添加数据页面√/toAddGET执行保存√/employeePOST跳转到更新数据页面√/employee/2GET执行更新√/employeePUT
http://www.yayakq.cn/news/2068/

相关文章:

  • 做网站的云服务器选什么WordPress评论第页
  • 网站设计 网站开发 西安成都网站备案
  • 旅游网站建设电子商务的困惑百度权重排名高的网站
  • 用dw做的网站怎么发布到网上太原网站建设pnjfw
  • 荣耀手机商城官方网站入口正能量网站推荐
  • 个人网站怎么做cps甘肃网站建设域名注册公司
  • 网站建设中轩网怎么样郑州seo优化外包热狗网
  • 陕西网站建设制作北京理想创意艺术设计有限公司
  • 网站效果演示wordpress与微信支付宝
  • 牛网站全国网页设计大赛
  • 网站响应速度优化搜索关键词
  • 建阳网站建设深圳网站建设怎么做
  • 企业网站文案外包网页设计尺寸怎么算
  • 图书馆网站开发需求分析成品网站1688入口网页版
  • 下载站源码cms哪个网站做员工增员
  • 成都网站建设模版腾讯云自助建站
  • 网站设计报价智慧校园网络建设方案
  • 如何看一个网站用什么程序做的什么叫精品网站建设
  • 做网站公司需要多少钱wordpress live2d
  • 新乡网站建设制作vps挂网站
  • 大学生网站的设计风格wordpress自学
  • 网站模板免费下载商淘软件
  • 在线支付网站制作网站设计公司南京
  • 免费网站技术永久3e38cos
  • 网站挂百度推广网站广告动图怎么做
  • 长沙租车网站排名宁波seo在线优化方案
  • 企业站群cms外贸英文网站设计
  • 住房和城乡建设部网站登录asp网站助手
  • 做网站的费用计入销售费用吗中卫网站推广营销
  • 环保h5微网站租用网络服务器的价格