jetty快速构建应用内服务
来源:互联网 发布:usb接口测试软件 编辑:程序博客网 时间:2024/05/24 01:49
我们是否会有这样的烦恼,在PC应用中需要开放HTTP接口供浏览器访问,自己实现HTTP协议很麻烦,使用如Tomcat的Web容器又感觉小题大做,那么jetty就是一个不错的选择,jetty既可以独立作为Web容器运行,又可以直接嵌入我们的应用,可以快速的构建出应用内的服务。
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
使用jetty,我们需要添加相关的包,使用maven可以方便我们组织包,我们只需要在maven中添加:
<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>7.6.11.v20130520</version></dependency><dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> <version>7.6.11.v20130520</version></dependency><dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>7.6.11.v20130520</version></dependency><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope></dependency>
上面的配置我们可以按需配置,如果我们需要使用Servlet,则需要添加jetty-servlet,如果需要使用war程序,则需要添加jetty-webapp,需要注意的是,如果war中包含jsp,我们还需要jsp相关的包,详情可访问:http://www.eclipse.org/jetty/documentation/current/framework-jetty-osgi.html#_using_jsps。
添加完所需包后,直接上测试代码:
package com.jianggujin.jetty;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.eclipse.jetty.server.Handler;import org.eclipse.jetty.server.NCSARequestLog;import org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.handler.ContextHandler;import org.eclipse.jetty.server.handler.IPAccessHandler;import org.eclipse.jetty.server.handler.RequestLogHandler;import org.eclipse.jetty.server.handler.ResourceHandler;import org.eclipse.jetty.servlet.ServletContextHandler;import org.eclipse.jetty.servlet.ServletHandler;import org.eclipse.jetty.servlet.ServletHolder;import org.eclipse.jetty.webapp.WebAppContext;import org.junit.Test;public class JettyServer{ private final int SERVER_PORT = 80; public Handler initResourceHandler() { ResourceHandler handler = new ResourceHandler(); handler.setResourceBase("web"); handler.setWelcomeFiles(new String[] { "welcom.html" }); return handler; } public Handler initIPAccessHandler() { IPAccessHandler handler = new IPAccessHandler(); handler.addBlack("127.0.0.1"); handler.setHandler(initResourceHandler()); return handler; } public Handler initRequestLogHandler() { RequestLogHandler handler = new RequestLogHandler(); NCSARequestLog requestLog = new NCSARequestLog("web/log.txt"); handler.setRequestLog(requestLog); handler.setHandler(initResourceHandler()); return handler; } public Handler initContextHandler() { ContextHandler handler = new ContextHandler("/context"); handler.setHandler(initResourceHandler()); return handler; } public Handler initServletHandler() { ServletHandler handler = new ServletHandler(); handler.addServletWithMapping(new ServletHolder(new MyServlet()), "/*"); return handler; } public Handler initServletContextHandler() { ServletContextHandler handler = new ServletContextHandler(); handler.addServlet(new ServletHolder(new MyServlet()), "/*"); return handler; } public Handler initWebAppContext() { WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); webapp.setWar("web/test.war"); return webapp; } @Test public void server() { Server server = new Server(SERVER_PORT); try { server.setHandler(initWebAppContext()); server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } } public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("<h1>MyServlet</h1>"); } }}
测试的时候,我们可以更换server()测试方法中使用的handler来查看不同handler的效果。
0 0
- jetty快速构建应用内服务
- 使用jetty 嵌入式构建 https 服务
- jetty内嵌web页面服务入门
- java 通过jetty快速配置服务
- 快速构建axis应用
- 快速构建axis应用
- 快速构建axis应用
- 快速构建axis应用
- 快速构建axis应用
- 用Jetty快速开发J2EE应用
- 快速构建一个openlayers应用
- Express快速构建应用(一)
- 应用内绑定服务例子
- golang 快速构建Restful API服务
- jetty构建使用
- 使用 AppFuse 快速构建 J2EE 应用
- 使用 AppFuse 快速构建 J2EE 应用
- 使用 AppFuse 快速构建 J2EE 应用
- Android Layout
- [译]Go Slices: usage and internals
- HTTPS_SSLTT介绍及其配置
- BZOJ 3241 UOJ 125 NOI 2013 书法家
- Win10系统Edge和IE都无法上网第三方浏览器可以打开网页的解决方法
- jetty快速构建应用内服务
- Android中的自定义控件
- 1.1 安装拨号软件和驱动程序
- Android富文本编辑器总结(五)
- Android无基础----------------->Android初级之路
- 租费返回码异常问题
- 《Java小游戏实现》:坦克大战(续2)
- 日常小结-Junit、for循环、可变、枚举、eclipse快捷键
- 带有延迟的斜率优化pku3709