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 读取Word文档中的文本内容

    1、添加依赖关系 org.apache.poi poi-ooxml 3.8 org.apache.poi poi-scratchpad 3.8 2、读取word内容代码 Strin…

    Java 2023年5月29日
    062
  • 设计模式 19 备忘录模式

    备忘录模式(Memento Pattern)属于 行为型模式 2021 年 10 月 1 日下午,河南驻马店的一名 13 岁女中学生,因和同学发生不愉快喝下半瓶 百草枯。10 月 …

    Java 2023年6月6日
    080
  • Java Web Servlet 继承结构和生命周期

    Java Web Servlet 继承结构和生命周期 继承结构 继承关系如下图所示 抽象类Servlet有以下接口,其中init(),service(),destroy()三个主要…

    Java 2023年6月8日
    085
  • java读写锁

    工作遇到了金钱计算,需要用到读写锁保证数据安全。记录一下。 单纯读没有限制,读写、写写的时候会有安全问题。 _hashMap_存在并发线程安全问题,而 _hashtable_线程安…

    Java 2023年6月9日
    073
  • 【全网最全】springboot整合JSR303参数校验与全局异常处理

    一、前言 我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断, &#x4…

    Java 2023年6月15日
    077
  • documentationPluginsBootstrapper

    springboot集成knife4j时报异常documentationPluginsBootstrapper实际是因为使用springboot2.6.0后,配置swagger,不…

    Java 2023年6月6日
    098
  • JavaWeb 11_jsp九大内置对象

    out: 输出对象,向客户端输出内容 request: 请求对象;存储”客户端向服务端发送的请求信息” request对象的常见方法: String get…

    Java 2023年6月7日
    091
  • B+树能存多少数据?

    B+树能存多少数据? InnoDB页的大小默认是16KB: 假设一条记录大小为1KB,则一个数据页中可以存16条数据(忽略页中的其他数据结构) 假设主键为int,又指针大小为6B,…

    Java 2023年6月6日
    083
  • 【源码笔记】FutureTask

    /* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free s…

    Java 2023年6月6日
    079
  • Java项目启动时执行指定方法的几种方式

    Java项目启动时执行指定方法的几种方式 1.使用 @PostConstruct,作用于方法上面。 @Component public class PostConstruct { …

    Java 2023年5月29日
    097
  • 集合框架——LinkedList集合源码分析

    示例代码 底层代码 第1步(初始化集合) 第2步(往集合中添加一个元素) 第3步(往集合中添加第二个元素) 第4步(往集合中添加第三个元素) LinkedList添加元素流程示意图…

    Java 2023年6月15日
    065
  • spring的自动注入

    Spring自动注入 spring的ioc 在刚开始学习spring的时候肯定都知道spring的两个特点:ioc,aop,控制反转和切面编程,这篇就只说说ioc ioc是什么:在…

    Java 2023年6月6日
    072
  • 使用Redis实现分布式锁

    public class JedisLock { private Jedis jedis; private String lockKey; /**默认过期时间*/ private …

    Java 2023年6月7日
    073
  • html2canvas中toDataURL方法返回值为:data,解决方案

    | 0.35分钟 | 572字符 | 1、引言&背景 2、解决方案 3、声明与参考资料 | SCscHero | 2022/6/1 PM11:13 | 系列 | 已完成 每…

    Java 2023年6月5日
    078
  • 地址解析协议(ARP) 分析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    060
  • spring cloud(二)简单快速的实现负载均衡的功能

    上篇参考:Spring Cloud快速使用教程(一) 在快速搭建Spring Cloud我们如果要简单快速的使用负载均衡可以如下实现 以下是实现示例: 使用Spring Cloud…

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