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

做传奇网站云服务器地域改选哪里哪里有培训网页设计

做传奇网站云服务器地域改选哪里,哪里有培训网页设计,找网络公司做网站需要注意,外贸公司做网站该去哪里找一、前言 在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/14361444/

相关文章:

  • 北京网站设计公司兴田德润简介最近热点新闻事件2023
  • 常见的手机网站文化传媒有限公司网站建设
  • 站内推广有哪些具体方式深圳招聘一般在哪个网站
  • 网站转化率最新版的wordpress怎么添加特征图
  • 网站设计西安学习济南卓远网站建设
  • 邯郸网站只做安徽建设工程信息网监理查询
  • 做网站项目的弊端做一个企业的网站怎么做
  • 做信息网站能挣钱吗企业网站的维护工作要怎么做
  • 长沙网站建设长沙网站制作搜索引擎推广是什么工作
  • 普陀区网站建设网站是空间备案
  • seo推广需要网站吗仙游县建设局网站
  • 住房建设部官方网站公示公告知名的网站开发公司
  • 公司开通网站石家庄做网站科技公司
  • 关键词优化推广排名软件网站新闻标题标题怎样进行优化
  • 做网站相册国外做兼职的网站
  • ssh做的大型网站专属头像制作免费
  • 石家庄网站建设外包昆明网上商城网站建设
  • 昆明网站建设去出发科技公司抖音代运营
  • 广告公司怎么设置网站关键字网站后缀tw
  • 做可视化的网站建设银行网站一直打不开
  • 网站登记表考虑了软件开发过程中的风险
  • 怎么快速建立一个网站搜索优化报价
  • 关于合肥的网站好怎么做网站盗号
  • 可以看电视剧的网站中国网站制作企业排行榜
  • 创建网站的软件什么梦如何做网站小编
  • 南通通明建设监理有限公司网站谷德设计网站
  • 网站建设的方案计划工程合同承包协议书完整版
  • 个人建设什么网站太原企业网站建设
  • 大兴企业网站建设自己开平台怎么弄啊
  • 电子商务网站建设的总体目标网站模版与模板的使用