Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

Jetty是一个轻量级的高度可扩展的基于 java的web服务器和servlet引擎。

下面是 使用 Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器 从而获取到 Http 的 Get 和 Post 请求

一、添加 pom.xml

Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器
    <dependency>
      <groupId>org.eclipse.jetty.aggregategroupId>
      <artifactId>jetty-allartifactId>
      <version>8.0.4.v20111024version>
    dependency>

二、在 maven 加载 jetty

Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

点击 刷新 图标 系统会自动 加载 jetty

加载完成后 就会 出现 org.eclipse.jetty.aggregate:jetty-all:8.0.4.v20111024

三、新建 AttendentConsoleHttpServlet.java

package com.SinaServer;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;import java.util.HashMap;
import java.util.Map;

/**
 * @title: AttendentConsoleHttpServlet
 * @Author wxj
 * @Date: 2021/6/24 10:30
 * @Version 1.0
 */
public class AttendentConsoleHttpServlet extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
        System.out.println(req.toString());
        BufferedReader streamReader = new BufferedReader( new InputStreamReader(req.getInputStream(), "UTF-8"));
        StringBuilder responseStrBuilder = new StringBuilder();
        String inputStr;
        while ((inputStr = streamReader.readLine()) != null)
            responseStrBuilder.append(inputStr);
        System.out.println(responseStrBuilder.toString());
        //允许跨域
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "*");
        res.setHeader("Access-Control-Max-Age", "3600");
        res.addHeader("Access-Control-Allow-Headers", "*");
        res.setHeader("Access-Control-Allow-Credentials", "*");
        //
        //Map map = JSON.parseObject(Base64.decode(responseStrBuilder.toString()),Map.class);
        //this.doGet(req, res);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
        response.setContentType("text/html;charset=utf-8");
        response.setStatus(HttpServletResponse.SC_OK);
        //允许跨域
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "*");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.addHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Allow-Credentials", "*");
        //
        System.out.println("get request:");
        Map maps =  request.getParameterMap();
        HashMap mapAction = new HashMap<>();

        for (Map.Entry entry : maps.entrySet()) {
            //String cs = entry.getKey() + ":"+ Arrays.toString(entry.getValue())+";";
            String cs = entry.getKey() + ":"+ entry.getValue()[0]+";";
            System.out.println(cs);
            mapAction.put(entry.getKey(),entry.getValue()[0]);
        }
        //如果包含action请求
        String strResponse="";
        if (mapAction.containsKey("action")){
            switch (mapAction.get("action")){
                case "query":
                    strResponse=this.query();
                    break;
                default:
            }
        }
        //
        try {
            response.getWriter().println(strResponse);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String query(){
        String json="Hello Word! 已收到请求";
        return  json;

    }
}

四、在App.java 中 加入

package com.SinaServer;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
/**
 * Hello world!

 *
 */
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!111222" );

        //jetty的处理集合
        ContextHandlerCollection contexts = new ContextHandlerCollection();
        //jetty http请求事件
        ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS);
        //httpapi
        AttendentConsoleHttpServlet httpServletCli= new AttendentConsoleHttpServlet();
        context1.addServlet(new ServletHolder(httpServletCli), "/httpCli");//httpapi
        contexts.addHandler(context1);

        //jetty服务器启动
        Server server = new Server(5011);//设置端口
        server.setHandler(contexts);
        try {
            server.start();//jetty服务器启动
            System.out.println("Jetty Server 启动成功。port : 5011" );
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }

    }
}

五、运行 java

Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

启动成功后 用浏览器 访问

http://192.168.1.143:5011/httpCli?action=query

Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

Original: https://www.cnblogs.com/hailexuexi/p/14930065.html
Author: 海乐学习
Title: Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537181/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java几种常见的排序

    排序,就是将一串数组(一个列表)中的元素(整数,数字,字符串等)按某种顺序(增大,减小,字典顺序等)重新排列。 下面介绍几种排序 1.冒泡排序 定义:冒泡排序就是从第一个元素开始,…

    Java 2023年6月8日
    068
  • 前端调用接口成功但后端没收到请求

    环境描述: ​ 微服务技术栈: SpringCloud Alibaba ​ 网关: Gateway 问题描述: ​ 前台发送的请求的响应码为200 ​ 具体响应内容: ​ 后台的C…

    Java 2023年6月5日
    082
  • Markdown语法

    “###”+空格+内容 “####”+空格+内容(依此类推..) 斜体( + 内容 + ) 粗体( + 内容 + ) 斜体+粗体( …

    Java 2023年6月6日
    059
  • Java虚拟机启动过程解析

    当我们在编写Java应用的时候,很少会注意Java程序是如何被运行的,如何被操作系统管理和调度的。带着好奇心,探索一下Java虚拟机启动过程。 从 Java&#x6E90;…

    Java 2023年6月6日
    0100
  • 安装jar包到本地maven仓库命令

    执行命令mvn install:install-file -DgroupId=net.neoremind -DartifactId=fountain-common -Dversio…

    Java 2023年6月13日
    092
  • 实现线程同步

    1 为何需要线程同步? 由于线程共享进程的资源,会产生 竞态条件,在某些情况下需要 协调指令执行的先后顺序,也就是实现 线程同步。 下面是一个常见的多线程累加程序,由于sum++并…

    Java 2023年5月30日
    036
  • 前端常用的方法工具

    // import {singleFileDownload} from ‘@/utils/downloads’ import cryptoJs from ‘crypto-js’ i…

    Java 2023年6月8日
    072
  • 记一次@Validated分组校验不生效问题

    原因 如果做了异常捕获,在方法入参中添加了BindingResult会导致失效,具体原因不再细查,这一块浪费了我不少时间 踩坑过程 使用@Validated直接全部校验通过,@Va…

    Java 2023年6月9日
    068
  • SSM整合SpringSecurity 时遇到的错误

    1.在pom.xml加入SpringSecurity的依赖 2.在web.xml加入springsecurity 的过滤器配置 3.编写一个配置类WebAppSecurityCon…

    Java 2023年6月9日
    077
  • spring boot启动的yml放在配置中心的流程管理

    引言 在上一节《淘东电商项目(09) -Maven私服的上传与下载详解》,主要讲解了如何上传jar包到Maven私服以及如何从Maven私服下载jar包。 代码已提交至Github…

    Java 2023年5月30日
    093
  • 【Unity Shader学习笔记】Unity光照-光照衰减

    Unity —共支持 4 种光源类型: 平行光 点光源(Point Light) 聚光灯(Spot Light) 面光源(area light) 面光源仅在烘焙时才可发挥作用, 因…

    Java 2023年6月9日
    071
  • 第三篇-用Flutter手撸一个抖音国内版,看看有多炫

    前言 前一篇已经开发了大部分框架,包含视频上下滑动播放,这次将上次未完成的数据显示友好显示,以及底部音乐走马灯特效,另外优化了加载数据的bug,在dart语言里 & 会自动…

    Java 2023年6月7日
    090
  • Mac M1 安装 Nacos 操作及问题解决

    先安装mysql ,这里使用的是8+版本,原因在于原本的 5.7 版本中并没有对 m1 的良好支持,如果启动会有报错说查询不到对应版本信息(虽然可以通过自定义 mirror 实现)…

    Java 2023年6月15日
    084
  • 斐波那契数列(Fibonacci)递归和非递归实现

    序列前9项为:0, 1, 1, 2, 3, 5, 8, 13, 21 要注意非递归的话就是那一个变量帮助存储当前下一项的值,然后依次挪动两个指针往下即可 注意如果n太大 会溢出 O…

    Java 2023年5月30日
    089
  • Sonar 扫描之SonarScanner介绍

    SonarScanner用于在构建系统没有指定scanner时使用。 项目配置 在你的项目根目录中创建一个名为 sonar-project.properties的配置文件 &amp…

    Java 2023年6月16日
    082
  • fastposter v2.9.0 程序员必备海报生成器

    fastposter v2.9.0 程序员必备海报生成器 🔥🔥🔥 fastposter海报生成器是一款快速开发海报的工具。只需上传一张背景图,在对应的位置放上组件( &#x…

    Java 2023年6月5日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球