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

郑州网站建设推销学网站建设与管理有用吗

郑州网站建设推销,学网站建设与管理有用吗,导航wordpress主题,手机桌面布局设计软件标签#xff1a;Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖#xff0c;SpringBoot可以快速启动一个web容器#xff0c;简化项目的开发#xff1b; 在web开发中又涉及如下几个功能点#xff1a; 拦截器#xff1a;可以让接口被访问之前#xff0c;将请求拦截… 标签Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖SpringBoot可以快速启动一个web容器简化项目的开发 在web开发中又涉及如下几个功能点 拦截器可以让接口被访问之前将请求拦截到通过对请求的识别和校验判断请求是否允许通过 页面交互对于服务端的开发来说需要具备简单的页面开发能力解决部分场景的需求 Swagger接口通过简单的配置快速生成接口的描述并且提供对接口的测试能力 Junit测试通过编写代码的方式对接口进行测试从而完成对接口的检查和验证并且可以不入侵原代码结构 二、工程搭建 1、工程结构 2、依赖管理 !-- 基础框架组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/version /dependency !-- 接口文档组件 -- dependencygroupIdorg.springdoc/groupIdartifactIdspringdoc-openapi-starter-webmvc-ui/artifactIdversion${springdoc.version}/version /dependency !-- 前端页面组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactIdversion${spring-boot.version}/version /dependency !-- 单元测试组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion${spring-boot.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactId/exclusion/exclusions /dependency dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version /dependency三、Web开发 1、接口开发 编写四个简单常规的接口从对资源操作的角度也就是常说的增Post、删Delete、改Put、查Get并且使用了swagger注解可以快速生成接口文档 RestController Tag(name Rest接口) public class RestWeb {Operation(summary Get接口)GetMapping(rest/get/{id})public String restGet(PathVariable Integer id) {return OK:id;}Operation(summary Post接口)PostMapping(/rest/post)public String restPost(RequestBody ParamBO param){return OK:param.getName();}Operation(summary Put接口)PutMapping(/rest/put)public String restPut(RequestBody ParamBO param){return OK:param.getId();}Operation(summary Delete接口)DeleteMapping(/rest/delete/{id})public String restDelete(PathVariable Integer id){return OK:id;} }2、页面交互 对于服务端开发来说在部分场景下是需要进行简单的页面开发的比如通过页面渲染再去生成文件或者直接通过页面填充邮件内容等 数据接口 Controller public class PageWeb {RequestMapping(/page/view)public ModelAndView pageView (HttpServletRequest request){ModelAndView modelAndView new ModelAndView() ;// 普通参数modelAndView.addObject(name, cicada);modelAndView.addObject(time, 2023-07-12);// 对象模型modelAndView.addObject(page, new PageBO(7,页面数据模型));// List集合ListPageBO pageList new ArrayList() ;pageList.add(new PageBO(1,第一页));pageList.add(new PageBO(2,第二页));modelAndView.addObject(pageList, pageList);// Array数组PageBO[] pageArr new PageBO[]{new PageBO(6,第六页),new PageBO(7,第七页)} ;modelAndView.addObject(pageArr, pageArr);modelAndView.setViewName(/page-view);return modelAndView ;} }页面解析分别解析了普通参数实体对象集合容器数组容器等几种数据模型 div styletext-align: centerhr/h5普通参数解析/h5姓名span th:text${name}/span时间span th:text${time}/spanhr/h5对象模型解析/h5整形span th:text${page.getKey()}/span字符span th:text${page.getValue()}/spanhr/h5集合容器解析/h5table stylemargin:0 auto;width: 200pxtrthKey/ththValue/th/trtr th:eachpage:${pageList}td th:text${page.getKey()}/tdtd th:text${page.getValue()}/td/tr/tablehr/h5数组容器解析/h5table stylemargin:0 auto;width: 200pxtrthKey/ththValue/th/trtr th:eachpage:${pageArr}td th:text${page.getKey()}/tdtd th:text${page.getValue()}/td/tr/tablehr/ /div效果图展示 四、拦截器 1、拦截器定义 通过实现HandlerInterceptor接口完成对两个拦截器的自定义请求在访问服务时必须通过两个拦截器的校验 /*** 拦截器一*/ public class HeadInterceptor implements HandlerInterceptor {private static final Logger log LoggerFactory.getLogger(HeadInterceptor.class);Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {log.info(HeadInterceptor:preHandle);IteratorString headNames request.getHeaderNames().asIterator();log.info(request-header);while (headNames.hasNext()){String headName headNames.next();String headValue request.getHeader(headName);System.out.println(headName:headValue);}// 放开拦截return true;}Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {log.info(HeadInterceptor:postHandle);}Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler, Exception e) throws Exception {log.info(HeadInterceptor:afterCompletion);} }/*** 拦截器二*/ public class BodyInterceptor implements HandlerInterceptor {private static final Logger log LoggerFactory.getLogger(BodyInterceptor.class);Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {log.info(BodyInterceptor:preHandle);IteratorString paramNames request.getParameterNames().asIterator();log.info(request-param);while (paramNames.hasNext()){String paramName paramNames.next();String paramValue request.getParameter(paramName);System.out.println(paramName:paramValue);}// 放开拦截return true;}Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {log.info(BodyInterceptor:postHandle);}Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler, Exception e) throws Exception {log.info(BodyInterceptor:afterCompletion);} }2、拦截器配置 自定义拦截器之后还需要添加到web工程的配置文件中可以通过实现WebMvcConfigurer接口完成自定义的配置添加 Configuration public class WebMvcConfig implements WebMvcConfigurer {/*** 添加自定义拦截器*/Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new HeadInterceptor()).addPathPatterns(/**);registry.addInterceptor(new BodyInterceptor()).addPathPatterns(/**);} }五、测试工具 1、Swagger接口 添加上述的springdoc依赖之后还可以在配置文件中简单定义一些信息访问IP:端口/swagger-ui/index.html即可 Configuration public class WebMvcConfig implements WebMvcConfigurer {/*** 接口文档配置*/Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title(【boot-web】).description(Rest接口文档-2023-07-11).version(1.0.0));} }2、Junit测试 在个人的习惯上Swagger接口文档更偏向在前后端对接的时候使用而Junit单元测试更符合开发的时候使用这里是对RestWeb中的接口进行测试 RunWith(SpringRunner.class) SpringBootTest AutoConfigureMockMvc public class RestWebTest {Autowiredprivate MockMvc mockMvc;Testpublic void testGet () throws Exception {// GET接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.get(/rest/get/1)).andReturn();printMvcResult(mvcResult);}Testpublic void testPost () throws Exception {// 参数模型JsonMapper jsonMapper new JsonMapper();ParamBO param new ParamBO(null,单元测试,new Date()) ;String paramJson jsonMapper.writeValueAsString(param) ;// Post接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.post(/rest/post).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content(paramJson)).andReturn();printMvcResult(mvcResult);}Testpublic void testPut () throws Exception {// 参数模型JsonMapper jsonMapper new JsonMapper();ParamBO param new ParamBO(7,Junit组件,new Date()) ;String paramJson jsonMapper.writeValueAsString(param) ;// Put接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.put(/rest/put).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content(paramJson)).andReturn();printMvcResult(mvcResult);}Testpublic void testDelete () throws Exception {// Delete接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.delete(/rest/delete/2)).andReturn();printMvcResult(mvcResult);}/*** 打印【MvcResult】信息*/private void printMvcResult (MvcResult mvcResult) throws Exception {System.out.println(请求-URI【mvcResult.getRequest().getRequestURI()】);System.out.println(响应-status【mvcResult.getResponse().getStatus()】);System.out.println(响应-content【mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8)】);} }六、参考源码 文档仓库 https://gitee.com/cicadasmile/butte-java-note源码仓库 https://gitee.com/cicadasmile/butte-spring-parent
http://www.hkea.cn/news/14352724/

相关文章:

  • 火狐显示网站开发wordpress 阅读全文
  • 手机网站图片点击放大加强教育信息网站建设
  • 网站信息登记表扫描件学平面设计网上哪个培训好
  • 太原自助模板建站wordpress+导入+媒体
  • 网站建设网站建怎么做游戏门户网站
  • 建设银行官方招聘网站张家港做网站的公司
  • 个人网站的设计流程宜昌网站建设开发团队
  • 口腔医院东莞网站建设汕头快速排名
  • 泉州官方网站js做网站需要那些软件
  • 网站模板凡平台网站收缩广告
  • 网站违反了 google 质量指南建筑公司logo
  • html5网站后台专业网页制作
  • 怎样做网站触屏版网站模板
  • 学会了php的语法怎么做网站海报设计兼职app
  • 网站运营者网址内蒙古创意网站开发
  • 网站侧边栏怎么做网站充值怎么做分录
  • 爱情表白网站制作黑龙江省建设集团网站
  • 网站二级域名设置做网站的带宽
  • 自己开发电商网站难吗广西建设厅网站行业网
  • 深圳市城乡建设部网站首页app开发的价值
  • 优质网站建设价格建设工程合同可以约定仲裁管辖吗
  • icp备案的网站名称最新上市新手机
  • 广州建网站公司那个旅游网站做攻略最好
  • 手机网站建设创意新颖拼多多无货源电商怎么做
  • 松江做公司网站vs做网站怎样加数据库
  • wordpress文章修改大小网络优化的流程
  • 网站建设论文摘要江苏建设工程招标网官方网站
  • 怎么建设网站最便宜会计招聘
  • 网站编程工具网页游戏网站2345
  • 门户网站建设工作总结嘉兴微信网站建设