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

查询网网站毕业答辩ppt模板免费下载 素材

查询网网站,毕业答辩ppt模板免费下载 素材,关联词有哪些,专注做农产品的网站一、前言 在Spring Boot项目开发过程中#xff0c;对于接口API发布URL访问路径#xff0c;一般都是在类上标识RestController或者Controller注解#xff0c;然后在方法上标识RequestMapping相关注解#xff0c;比如#xff1a;PostMapping、GetMapping注解#xff0c;通…一、前言 在Spring Boot项目开发过程中对于接口API发布URL访问路径一般都是在类上标识RestController或者Controller注解然后在方法上标识RequestMapping相关注解比如PostMapping、GetMapping注解通过设置注解属性发布URL。在某些场景下我觉得这样发布URL太麻烦了不适用有没有什么其他方法自由发布定义的接口呢答案是肯定的。 二、一般开发流程 按照上面的描述我们先看一下一般常用的开发代码 import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;import java.util.Map;RestController public class TestController {RequestMapping(/test/url)public String test(RequestParam String name, RequestBody MapString, Object map) { // 这里只是方便测试实际情况下请勿使用Map作为参数接收StringBuilder stringBuilder new StringBuilder();stringBuilder.append(hello, ).append(name).append(, receive param:);for (Map.EntryString, Object entry : map.entrySet()) {stringBuilder.append(\n).append(key: ).append(entry.getKey()).append(-- value: ).append(entry.getValue());}return stringBuilder.toString();}}测试效果 三、自定义URL发布逻辑 参考步骤二的测试截图效果我们自定义发布一个URL。 1. 新建一个spring boot项目导入相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency2. 修改Controller实现类代码 去掉RestController和RequestMapping相关注解示例代码如下 import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.ResponseBody;import java.util.Map;// RestController Component public class TestController {//RequestMapping(/test/url)ResponseBody // 注意此注解需要添加不能少public String test(/*RequestParam*/ String name,/* RequestBody*/ MapString, Object map) { // 这里只是方便测试实际情况下请勿使用Map作为参数接收StringBuilder stringBuilder new StringBuilder();stringBuilder.append(hello, ).append(name).append(, receive param:);for (Map.EntryString, Object entry : map.entrySet()) {stringBuilder.append(\n).append(key: ).append(entry.getKey()).append(-- value: ).append(entry.getValue());}return stringBuilder.toString();}}3. 自定义一个事件监听实现URL发布功能 参考代码如下 import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean;/*** 注册一个web容器初始化以后的事件监听注册自定义URL*/ Component public class CustomRegisterUrl implements ApplicationListenerWebServerInitializedEvent {/*** 标识事件监听器是否已经注册避免重复注册*/private volatile AtomicBoolean flag new AtomicBoolean(false);/*** 需要发布的地址*/public static final String CUSTOM_URL /test/url;Autowiredprivate RequestMappingHandlerMapping requestMappingHandlerMapping;Autowiredprivate TestController testController;SneakyThrowsOverridepublic void onApplicationEvent(WebServerInitializedEvent event) {if (flag.compareAndSet(false, true)) {// 构建请求映射对象RequestMappingInfo requestMappingInfo RequestMappingInfo.paths(CUSTOM_URL) // 请求URL.methods(RequestMethod.POST, RequestMethod.GET) // 请求方法可以指定多个.build();// 发布url同时指定执行该请求url的具体类变量的的具体方法requestMappingHandlerMapping.registerMapping(requestMappingInfo, testController, testController.getClass().getMethod(test, String.class, Map.class));}} }4. 测试效果 同样请求http://localhost:8080/test/url?namejack 可以看到此时请求效果并不是正常的存在参数丢失怎么办呢 注意如果请求出现如下错误 java.lang.IllegalArgumentException: Expected lookupPath in request attribute org.springframework.web.util.UrlPathHelper.PATH.可以在application.yaml文件中添加如下内容 spring:mvc:pathmatch:matching-strategy: ant_path_matcher5. 增加统一请求处理器 为了实现参数可以正常解析同时方便增加自定义处理逻辑我们可以增加一个统一的请求处理器参考示例 import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Method; import java.util.Map;Component public class CustomHandlerUrl {public static final Method HANDLE_CUSTOM_URL_METHOD;private static final ObjectMapper OBJECTMAPPER new ObjectMapper();Autowiredprivate TestController testController;static {// 提前准备好参数对象Method tempMethod null;try {tempMethod CustomHandlerUrl.class.getMethod(handlerCustomUrl, HttpServletRequest.class, HttpServletResponse.class);} catch (NoSuchMethodException e) {e.printStackTrace();}HANDLE_CUSTOM_URL_METHOD tempMethod;}ResponseBody/*** 拦截自定义请求的url可以做成统一的处理器这里我只做简单实现专门处理test*/public Object handlerCustomUrl(HttpServletRequest request, HttpServletResponse response) throws IOException {// 获取参数 get方式请求参数String name request.getParameter(name);// 获取 post方式请求参数MapString, Object map OBJECTMAPPER.readValue(request.getInputStream(), Map.class);// 执行业务方法String result testController.test(name, map);return result;} }6. 修改事件监听逻辑 修改事件监听逻辑此时注册URL时绑定统一处理器就行了。 示例代码 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;import java.util.concurrent.atomic.AtomicBoolean;/*** 注册一个web容器初始化以后的事件监听注册自定义URL*/ Component public class CustomRegisterUrl implements ApplicationListenerWebServerInitializedEvent {/*** 标识事件监听器是否已经注册避免重复注册*/private volatile AtomicBoolean flag new AtomicBoolean(false);/*** 需要发布的地址*/public static final String CUSTOM_URL /test/url;Autowiredprivate RequestMappingHandlerMapping requestMappingHandlerMapping;Autowiredprivate CustomHandlerUrl customHandlerUrl;Overridepublic void onApplicationEvent(WebServerInitializedEvent event) {if (flag.compareAndSet(false, true)) {// 构建请求映射对象RequestMappingInfo requestMappingInfo RequestMappingInfo.paths(CUSTOM_URL) // 请求URL.methods(RequestMethod.POST, RequestMethod.GET) // 请求方法可以指定多个.build();// 发布url指定一下url的处理器requestMappingHandlerMapping.registerMapping(requestMappingInfo, customHandlerUrl, CustomHandlerUrl.HANDLE_CUSTOM_URL_METHOD);}} }7. 重新测试 此时请求可以发现效果和使用RestControllerRequestMapping注解就一样了。 四、写在最后 自定义发布URL路径一般情况下很少使用不过针对特殊url的处理以及自定义rpc框架发布url时选择这样处理好了可以达到出其不意的效果。
http://www.hkea.cn/news/14479608/

相关文章:

  • 游戏网站做关键字做3d图的网站有哪些软件
  • 网站优化是做什么的wordpress默认相册图片连接到媒体
  • 可以自己做网站吗企业oa系统下载
  • 济南建网站品牌自适应网站建设
  • 建筑网站建设赏析免费网站下载大全
  • 企业做网站公司排名口碑详情页设计策划
  • 更新网站的步骤wordpress建站如何微信
  • 花生壳动态域名做网站做两个阿里网站吗
  • 云网站建设017年青吴忠市建设工程质量监督站网站
  • 怎么知道网站哪家公司做的网络营销导向的网站建设
  • 文化网站前置审批定位网站关键词
  • 搭建网站宣传建设小说网站小说源
  • 主题网站设计域名防红直连
  • 作文库网站娱乐网站设计多少行业
  • ppt免费下载完整版免费下载西安做网站优化公司报价
  • 网站设计建设有限公司国外 电子 商务 网站 欣赏
  • 济南做网站的公司有哪些十大永久免费财务软件
  • 个性化网站建设定制苏州电商关键词优化
  • 驻马店市住房和城乡建设局网站wordpress二维码管理插件下载
  • 网站建设的面试要求公司网站建设费如何入账
  • 年栾洪全单页做网站教程百度上海总部
  • 怎么样网站吸引人天天向上做图网站
  • 企业网站seo推广技巧类似于美团的网站怎么做
  • 有源码手机怎么搭建网站国内wordpress主题免费
  • 网站开发什么意思p2p理财网站开发框架
  • 如何请人创建一个网站旅游网站建设网
  • 成都网站制作公司电话c 还可以做网站
  • 建站公司是外包吗陕西省建设网三类人员证书查询系统
  • 卫浴洁具网站模板建设银行嘉兴分行官方网站
  • 优秀英文企业网站大型旅行社自建网站