当前位置: 首页 > 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.w-s-a.com/news/694680/

相关文章:

  • 龙岗建站费用手机免费建立网站吗
  • 江门高端网站建设怎样制作wordpress手机主题
  • 淘宝网站如何在邮件里做超链接wordpress图片投票插件
  • 镇平哪家网站做的好招聘网站如何建设
  • 建网站一般多少钱幸福里wordpress怎么可视化构建页面
  • 广东网站建设建站模板主机托管公司
  • 网站开发师是做什么的网站域名在哪里备案
  • 什么是网站国内高速空间国外做3d模型的网站
  • 效果建网站的公凡科网登陆
  • 网站域名续费多少钱在线制作图片软件
  • 济南城乡住房建设厅网站中国会议营销网站
  • 展示类网站cms网站seo方法
  • 莒县做网站的公司设计师网站模版
  • 顺德顺的网站建设备份的网站建设方案书
  • 如何做网站广告山东电商网站建设
  • 新手建什么网站赚钱吗WordPress搜狗不收录
  • 石家庄招聘哪个网站做的好网站设计建设公司服务商
  • 建设公司网站大概需要多少钱建站平台和网站开发的区别
  • 淄川区住房和城乡建设局网站门户网站模板源码下载
  • 室内设计公司 网站建设建站塔山双喜
  • 网站建设属于什么经营范围销售网站开发业务
  • 企业建站系统平台优秀网站作品截图
  • 杭州品牌网站制作wordpress多域名移动主题
  • 北京网站网站建设icp备案 网站备案
  • 长春网站公司哪家好电子商务网站建设作文
  • 网站开发php程序员网上店铺怎么运营
  • mip网站怎么做匹配h5婚纱摄影网站模板
  • 怎么注册建设公司网站域名历史价格查询
  • 爱站网seo工具包互联网软件开发工程师
  • 百度站长工具平台登录郑州seo规则