NetBeans用maven构建HTTP服务器 1
来源:互联网 发布:辅导软件 编辑:程序博客网 时间:2024/06/01 09:27
使用 Maven 的简单 Java SE 应用程序,从一个现有项目学习尝试搭建一个新的项目。
首先完成最基础的GET POST请求的功能。
1.新建项目 Maven-Java应用程序
2.打开POM,编辑POM.XML,添加jetty库
<project> <dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey</groupId> <artifactId>jersey-bom</artifactId> <version>2.23.2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-jetty-servlet</artifactId> </dependency> <!-- json support --> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> </dependency> <!-- jetty is our HTTP server --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>8.1.19.v20160209</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-rewrite</artifactId> <version>8.1.16.v20140903</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>8.1.16.v20140903</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> <version>8.1.19.v20160209</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlets</artifactId> <version>8.1.19.v20160209</version> </dependency> <!-- logger --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.13</version> </dependency> </dependencies></project>
3.编辑Main.java
import org.eclipse.jetty.server.Connector;import org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.handler.HandlerList;import org.eclipse.jetty.server.nio.SelectChannelConnector;import org.eclipse.jetty.servlet.ServletContextHandler;import org.eclipse.jetty.servlet.ServletHolder;import org.eclipse.jetty.util.thread.QueuedThreadPool;import org.glassfish.jersey.servlet.ServletContainer;import org.eclipse.jetty.servlets.UserAgentFilter;public class Main { public static void main(String[] args) throws Exception { startServer(); } public static Server startServer() throws Exception { int port = 8080; String path = "test"; //Set the maximum number of threads. QueuedThreadPool threadPool = new QueuedThreadPool(); threadPool.setMaxThreads(500); //入口 ServletHolder jerseyServlet = new ServletHolder(ServletContainer.class); jerseyServlet.setInitParameter("javax.ws.rs.Application", "com.test.mavenproject.inject.TestJerseyConfig"); jerseyServlet.setInitOrder(1); //基础路径 ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); contextHandler.setContextPath("/"); contextHandler.addServlet(jerseyServlet, "/" + path + "/*"); contextHandler.addFilter(UserAgentFilter.class, "/" + path + "/*", null); HandlerList handlerList = new HandlerList(); handlerList.addHandler(contextHandler); //端口设置 SelectChannelConnector selectChannelConnector = new SelectChannelConnector(); selectChannelConnector.setPort(port); selectChannelConnector.setAcceptors(Math.max(1, Runtime.getRuntime().availableProcessors() - 1)); //开启server Server server = new Server(); server.setThreadPool(threadPool); server.setHandler(handlerList); server.setConnectors(new Connector[]{selectChannelConnector}); server.start(); server.join(); return server; }}
4.修改com.test.mavenproject.inject.TestJerseyConfig
import javax.inject.Inject;import org.glassfish.hk2.api.ServiceLocator;import org.glassfish.jersey.jackson.JacksonFeature;import org.glassfish.jersey.server.ResourceConfig;public class TestJerseyConfig extends ResourceConfig { @Inject public TestJerseyConfig( ServiceLocator serviceLocator ){ //json转换器 super(JacksonFeature.class); register(new TestBinder()); //扫描服务类所在的包 packages("com.test.mavenproject.rest"); //可以注册各种工具类 //register(***Filter.class); }}
import org.glassfish.hk2.utilities.binding.AbstractBinder;public class TestBinder extends AbstractBinder { @Override protected void configure() { //TODO. 配置@Inject需要的注入 } }
5.rest包添加服务类
import javax.inject.Inject;import javax.ws.rs.Consumes;import javax.ws.rs.DefaultValue;import javax.ws.rs.FormParam;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.QueryParam;import javax.ws.rs.core.MediaType;@Path("test1")public class TestResource { @Inject public TestResource( ) { } @GET @Path("get") @Produces(MediaType.TEXT_PLAIN) public String getTest(){ return "called Get"; } //http://192.168.0.164:8080/test/test1/get //called Get @GET @Path("get1") @Produces(MediaType.APPLICATION_JSON) public TestResponse getTest1(){ TestResponse response = new TestResponse(); response.setRes("asd"); return response; } //http://192.168.0.164:8080/test/test1/get1 //{"res":"asd"} @GET @Path("get2/{text}") @Produces(MediaType.TEXT_PLAIN) public String getTest2(@PathParam("text")String text, @DefaultValue("2") @QueryParam("id") int uid){ StringBuilder sb = new StringBuilder(); sb.append("called Get,text ="); sb.append(text); sb.append(",id ="); sb.append(uid); return sb.toString(); } //http://192.168.0.164:8080/test/test1/get2/asd?id=5 //called Get,text =asd,id =5 @POST @Path("post") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public TestResponse postTest(TestRequest request){ TestResponse response = new TestResponse(); response.setRes(request.getInfo()); return response; }}
import com.fasterxml.jackson.annotation.JsonProperty;public class TestRequest { @JsonProperty("otherNodeName") private String info; public String getInfo(){ return info; } public void setInfo(String info){ this.info = info; }}public class TestResponse { private String res; public String getRes(){ return res; } public void setRes(String res){ this.res = res; }}
阅读全文
0 0
- NetBeans用maven构建HTTP服务器 1
- 构建简单http服务器
- nodejs-构建http服务器
- C# HTTP服务器构建
- 用NetBeans构建 SDI 应用程序
- 用NetBeans构建 SDI 应用程序
- 用NetBeans构建 SDI 应用程序
- 用NetBeans构建 SDI 应用程序
- 用NetBeans构建 SDI 应用程序
- 用NetBeans构建 SDI 应用程序
- java HttpServer构建http服务器
- java HttpServer构建http服务器
- linux下构建http服务器
- java HttpServer构建http服务器
- 使用netty构建http服务器
- java HttpServer构建http服务器
- 用maven构建项目
- 用Maven构建Spark
- Andrew Ng's deeplearning Course1Week1 Nerual Networks and Deep Learning(神经网络和深度学习)
- AuthenticationException异常详解
- 辨析C与C++中的&符号的区别
- SpringMVC Model、ModelMap和ModelAndView的区别和用法
- 【面向JS--函数】
- NetBeans用maven构建HTTP服务器 1
- aspectj实现aop的两种操作
- python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
- 「原创」马云又嗨啦,云栖音乐节与李健同台飙歌,把健哥都带跑调了
- AES加密解密
- 14章图像处理
- TCP三次握手和四次挥手过程
- Struts2 ognl判断集合对象是否为空的方法
- 微信“15。。。。。”背后的故事