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

网站建设基本完成100元网站建设

网站建设基本完成,100元网站建设,wordpress4.9邮件发送,WordPress是静态吗一、前言 在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/14311208/

相关文章:

  • 手机怎么做弹幕小视频网站深圳住房和建设局网站统一
  • 网站建设whjzyh做推广网站的去哪能买到有效资料
  • 网站建设在哪里可以筹集素材营销策划的内容包括哪些
  • 内蒙古网站建设可以做企业宣传的网站
  • 网站建设成都公司网站收录大幅度下降
  • 自建网站迁移海外全球购官网
  • 网站优化排名带分期功能的网站建设
  • 51自学网官方网站宿州房产信息网二手房
  • 四川建设网站信息查询中心做网站网页挣钱不
  • 怎么建设h5网站电子商务平台经营者义务有哪些
  • 用wordpress做外贸网站网站开发项目经验描述怎么写
  • 网站使用费用网站会动的页面怎么做的
  • 四川省建设厅官方网站电话湛江做网站说
  • 郑州恩恩网站建设天正电气网站建设
  • 国家城乡建设部网站导航网页
  • 高校校园网站建设培训班个人主页写什么内容
  • 辽宁工程建设工程信息网站健身房网站的建设情况
  • 建站行业消失了吗大连的网页设计公司
  • 做ppt很有创意的网站网站编辑做多久可以升职
  • 成都维尼网络 网站建设天津 网站设计
  • 江苏天宇建设集团官方网站先进的网站开发技术
  • 自适应自助建站网站htm5网站建设
  • 建设网站需要客户提供什么资料电商网站建设考试题
  • 郑州做网站推广的公司杭州专业的网站制作公司
  • php网站开发技术题目中国营销协会官网
  • 微网站建设目的联合实验室 网站建设方案
  • 产品推广网站哪个好wordpress显示称谓
  • 无忧网站建设哪家便宜网络营销师怎么报名
  • 给菠菜网站做外包wordpress在线浏览pdf
  • 营销型网站建设页面wordpress 禁止删除分类