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

安徽省建设工程信网站做网站职业咋样

安徽省建设工程信网站,做网站职业咋样,四川专门做招聘酒的网站,dedecms织梦和wordpress一、前言 在实际开发中,有时候我们可能使用springboot注册web组件,实现某些功能,比如我们需要生成一些api来提供对外的服务,而对应的路径其实是不固定的,那么这种情况下,其实是可以通过这种方式来注册web组…

一、前言
在实际开发中,有时候我们可能使用springboot注册web组件,实现某些功能,比如我们需要生成一些api来提供对外的服务,而对应的路径其实是不固定的,那么这种情况下,其实是可以通过这种方式来注册web组件的。

二、如何实现?
1.使用SpringBoot注解加继承HttpServet类实现注册Servlet组件。

@WebServlet("/api")
public class APIServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {log.debug("servlet execute");String servletPath = request.getRequestURI();servletPath = servletPath.substring(apiContext.length() + 2);PrintWriter out = null;try {out = response.getWriter();ResponseDto responseDto = process(servletPath, request, response);out.append(JSON.toJSONString(responseDto));} catch (Exception e) {response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);out.append(JSON.toJSONString(ResponseDto.fail(e.toString())));log.error(e.toString(), e);} finally {if (out != null)out.close();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req, resp);}public ResponseDto process(String path, HttpServletRequest request, HttpServletResponse response) {System.out.println("请求处理");ResponseDto dto = new ResponseDto();return dto;}
}

2.通过继承HttpServet类加配置类来进行注册。

public class APIServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {log.debug("servlet execute");String servletPath = request.getRequestURI();servletPath = servletPath.substring(apiContext.length() + 2);PrintWriter out = null;try {out = response.getWriter();ResponseDto responseDto = process(servletPath, request, response);out.append(JSON.toJSONString(responseDto));} catch (Exception e) {response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);out.append(JSON.toJSONString(ResponseDto.fail(e.toString())));log.error(e.toString(), e);} finally {if (out != null)out.close();}}
}

新建一个配置类,将该Servlet加载到Spring容器中,配置类代码如下:

@Slf4j
@Configuration
public class ServletConfig {@Value("${dbapi.api.context}")String apiContext;@Autowiredprivate APIServlet apiServlet;@Beanpublic ServletRegistrationBean getServletRegistrationBean() {String format = String.format("/%s/*", apiContext);ServletRegistrationBean bean = new ServletRegistrationBean(apiServlet);bean.addUrlMappings(format);log.info("regist APIServlet servelet for {} urlMappings",format);return bean;}
}

两种注册方式都是可用的。

3.注册Filter组件实现过滤。

@Slf4j
@Component
@WebFilter("/api")
public class ApiIPFilter implements Filter {@Autowiredprivate IPService ipService;@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException {log.debug("IP filter execute");HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String originIp = IPUtil.getOriginIp(request);String method = request.getMethod();PrintWriter out = null;try {//js跨域的预检请求,不经过处理逻辑。开发模式下,前端启动,访问8521的页面进行请求测试会跨域if (method.equals("OPTIONS")) {response.setStatus(HttpServletResponse.SC_OK);return;}boolean checkIP = ipService.checkIP(originIp);if (!checkIP) {out = response.getWriter();response.setStatus(HttpServletResponse.SC_FORBIDDEN);out.append(JSON.toJSONString(ResponseDto.fail("Illegal ip (" + originIp + "), access forbidden")));} else {filterChain.doFilter(servletRequest, servletResponse);}} catch (Exception e) {response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);out.append(JSON.toJSONString(ResponseDto.fail(e.toString())));log.error(e.toString());} finally {if (out != null) {out.close();}}}

这里会对某些IP进行过滤。

最后启动类中的@ServletComponentScan注解扫描web组件。

@SpringBootApplication
//SpringBoot启动时扫描注册注解标注的Web组件
@ServletComponentScan
public class SpringbootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDemoApplication.class, args);}
}
http://www.yayakq.cn/news/495319/

相关文章:

  • 个人网站开发 服务器廊坊视频优化价格
  • 朱腾鹏个人网站wordpress自定义选项
  • 有网站可以接设计的单子做吗ajax分页 WordPress
  • 白山网站建设现在什么网页游戏最好玩最火
  • 网站开发用什么框架卧龙区网站建设
  • 网站建设开票多少个点东城免费做网站
  • 先做网站后备案吗官网seo是什么
  • 做pc端网站渠道网站建设目标计划书
  • 柯桥网站建设wordpress 发音
  • 医院网站建设建议云凡济南网站建设开发
  • 淄博手机网站开发公司网站制作收费标准
  • 泰安市网站建设公司网站域名列表是什么
  • 网站布局图片jsp开发的网站
  • 想做微商怎么找厂家360seo
  • 杭州建德网站建设wordpress字怎么变大
  • 唐山网站定制思帽西宁网站建设
  • 上海 建设工程质量监督站网站红塔网站制作
  • 哪家专门做特卖网站手机医疗网站模板
  • 公司网站建设劳伦阜阳市网站建设
  • 邯郸网站建设安联网络公司中山中小企业网站建设
  • 做网站哪里最便宜建设公司企业愿景
  • 湛江网站建设维护南京建设企业
  • 明港网站建设大朗东莞网站建设
  • 网站怎么做百度认证平顶山网站建设费用
  • 宁波网站优化景区电子商务网站建设
  • 北京驾校网站建设网业搜索
  • 新乡建设公司网站中小企业信息网官网
  • 加强网站的建设工作的通知网站改版后 搜索不到
  • 网站开发多少钱农民做3d地形比较好的网站
  • 如何在word上做网站网址做网站好的公司