# HRMS **Repository Path**: zsky/HRMS ## Basic Information - **Project Name**: HRMS - **Description**: 人力资源管理系统 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-04-08 - **Last Updated**: 2023-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HRMS 人力资源管理系统 ##一、路径规则说明 1. app.properties配置路径参数 * 以 ***`management.path`*** 开头的URL 是Ajax管理框架页面的内容 其他模块的配置类似但不以ajax框架页形式渲染 * 按照 ***`模块名.xx`*** 的形式为不同的模型页面定制资源逻辑,后缀名等 * 通过定制的viewResolver和view来区分管理框架页和普通页面的渲染逻辑 2. ViewResolver和View定制的逻辑。 * 如果是普通页请求,按viewName渲染。 * 如果是Ajax框架页请求,post的情况表示请求来自框架内部点击按照viewName渲染视图。get情况表示用户通过url地址输入访问。viewName变为frame的视图名,render的时候会维护几个标量 - innerView:表示主框体要访问的内容视图 - managePath:表示框架的根目录 ##二、Restful API说明 后台全部采用Restful API。支持多种形式的前端访问数据 Restful API 是Representational State Transfer,即”表现层状态转化”。 1. 在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词(一般为复数)。如 * https://域名/admin/users * https://域名/admin/users/a0001 * https://域名/admin/articles * https://域名/admin/articles/180293 2. 用request的形式来区分对资源的操作,即动词放在request请求部分 * GET 获取一个资源 + 安全要保证权限且操作幂等(可重复很多次记过都一样) + 返回一个集合或者单个资源 + 可用返回状态码: - 200(OK) - 表示已在响应中发出 - 204(无内容) - 资源有空表示 - 301(Moved Permanently) - 资源的URI已被更新 - 303(See Other) - 其他(如,负载均衡) - 304(not modified)- 资源未更改(缓存) - 400 (bad request)- 指代坏请求(如,参数错误) - 404 (not found)- 资源不存在 - 406 (not acceptable)- 服务端不支持所需表示 - 500 (internal server error)- 通用错误响应 - 503 (Service Unavailable)- 服务端当前无法处理请求 * POST 创建/新建 + 不安全 保证有适当权限且不幂等 + 使用服务端管理的(自动产生)的实例号创建资源或有用户指定但不能重复 + 返回被创建的资源 + 可用返回状态码: - 200(OK)- 如果现有资源已被更改 - 201(created)- 如果新资源被创建 - 202(accepted)- 已接受处理请求但尚未完成(异步处理) - 301(Moved Permanently)- 资源的URI被更新 - 303(See Other)- 其他(如,负载均衡) - 400(bad request)- 指代坏请求 - 404 (not found)- 资源不存在 - 406 (not acceptable)- 服务端不支持所需表示 - 409 (conflict)- 通用冲突 - 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突) - 415 (unsupported media type)- 接受到的表示不受支持 - 500 (internal server error)- 通用错误响应 - 503 (Service Unavailable)- 服务当前无法处理请求 * PUT 更新(全部更新) + 不安全 保证有适当权限且不幂等 + 返回被创建的资源 + 可用返回状态码: - 200 (OK)- 如果已存在资源被更改 - 201 (created)- 如果新资源被创建 - 301(Moved Permanently)- 资源的URI已更改 - 303 (See Other)- 其他(如,负载均衡) - 400 (bad request)- 指代坏请求 - 404 (not found)- 资源不存在 - 406 (not acceptable)- 服务端不支持所需表示 - 409 (conflict)- 通用冲突 - 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突) - 415 (unsupported media type)- 接受到的表示不受支持 - 500 (internal server error)- 通用错误响应 - 503 (Service Unavailable)- 服务当前无法处理请求 * PUT 更新(局部更新) json没有指明的属性将保留原值 * DELETE 删除一组资源或者单个资源 + 不安全 保证有适当权限且不幂等 + 返回被创建的资源 + 可用返回状态码: - 200 (OK)- 资源已被删除 - 301 (Moved Permanently)- 资源的URI已更改 - 303 (See Other)- 其他,如负载均衡 - 400 (bad request)- 指代坏请求 - 404 (not found)- 资源不存在 - 409 (conflict)- 通用冲突 - 500 (internal server error)- 通用错误响应 - 503 (Service Unavailable)- 服务端当前无法处理请求 3. 分页通过参数表示 4. 错误处理用 `error:"sdfsdf"` 表示显示 ##三、区分是页面还是还是Restful API 通过contentType配合SpringMVC的comsumes和produces来指定 * 如果是`text/html`等类似形式 表示 展示页面 * 如果是`application/json`表示 操作资源/数据 四、put patch delete传参 https://blog.csdn.net/u012737182/article/details/52831008 按照常规 RestfulApi 的这几个方法参数会纳入到Request Payload中 后台通过@RequestBody解析 这里三种变通方法(结合使用1.2更牛) 1. 将参数写到URL中 (delete方法最好这样,因为只传ID 及时多个 可以写id="1,2,3") 2. 加入一个filter org.springframework.web.filter.HttpPutFormContentFilter 过滤PUT和PATCH请求,可以通过ServletRequest.getParameter*等一系列方法调用编码后的form数据form encoded data `Servlet规范要求表单数据可以用于HTTP POST,而不是用于HTTP PUT或PATCH请求。 该过滤器拦截HTTP PUT和补丁请求,其中内容类型为“应用程序/x-www-form-urlencode”, 从请求体中读取表单编码的内容,并封装ServletRequest,以使表单数据作为请求参数可用,就像HTTP POST请求那样。` 3. org.springframework.web.filter.HiddenHttpMethodFilter 这个filter隐藏ajax中的提交方式 然后通过在data中加入`_method:"put" or "patch"` 例子: $.ajax({ url: "member", type : "post", // 此处发送的是POST请求 data : { _method : "put", // 将请求转变为PUT请求 empno : 1170, ename : "SMITH", sal : 11.1, hiredate : "11111-11-11" }, });