jetty6 嵌入到 javaproject中

原创 2013年12月04日 10:23:28

Jetty 是一个开源的servlet容器, 它为基于Java的web内容,例如JSP和servlet提供运行环境。

 

Jetty以其高效、小巧、可嵌入式等优点深得人心,尤其是启动速度Tomcat 6简直望尘莫及。

 

Jetty作为可选的servlet容器只是一个额外的功能,而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。

 

可以提供给客户一个自己具有启动,停止以及管理功能的应用程序:Jetty对于普通的HTTP服务(没有servlet)只需要350k的内 存,这使得可以将其用在智能设备中。你可以提供基于web的控制面板并且具有Java web应用的所有功能而不用担心那些独立的容器所带来的压力。 

 

 在java project中添加jetty

 

1、下载 http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip 

 

2、新建一个java project (jettytest)

 

3、在工程目录下建jetty目录,然后再在jetty目录下新建etc,lib,logs,webapps四个目录

 

4、在lib目录下添加

core-3.1.1.jar

ant-1.6.5.jar

jetty-6.1.14.jar

jetty-util-6.1.14.jar

jsp-2.1.jar

jsp-api-2.1.jar

servlet-api-2.5-6.1.14.jar

 

5、在etc目录下添加如下配置文件

jetty.xml

webdefault.xml

login.properties

realm.properties

 

6、修改jetty.xml的内容,让其指定到webdefault.xml、webapps目录、realm.properties、logs目录的具体位置,默认是在工程的最外层目录,由于这两是放到jetty目录下面了,所以需要修改对应的目录位置。

 

<Set name="config"><SystemProperty name="jetty.home" default="."/>/jetty/etc/realm.properties</Set>

<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/jetty/etc/webdefault.xml</Set>

<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/jetty/webapps</Set>

<Set name="filename"><SystemProperty name="jetty.logs" default="./jetty/logs"/>/yyyy_mm_dd.request.log</Set>

 

 

7、在webapps目录下,新建一个目录manager(相当于是一个web工程的名称),然后再在这个目录下添加一个a.jsp文件

 

8、添加一个启动jetty的java文件

 

package hb.jetty;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.xml.XmlConfiguration;
import org.xml.sax.SAXException;

public class JettyServer {

	public static void main(String[] args) {
		Server server = new Server(8080);
		server.setHandler(new DefaultHandler());
		XmlConfiguration configuration = null;
		try {
			configuration = new XmlConfiguration(new FileInputStream("D:\\JavaProject\\jettytest\\jetty\\etc\\jetty.xml"));
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (SAXException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		try {
			configuration.configure(server);
			server.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

 

9、在地址栏中输入http://localhost:8080/manager/,就能够显示出添加的jsp文件

 

如何在jetty中添加servlet

 

跟着上面的步骤来

1、在manger目录中添加WEB-INF目录,然后再在里面添加一个web.xml文件,里面的内容可以根据webdefault.xml文件中的内容拷贝过来,然后做相关的修改

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>myweb</display-name>
	
	
	<filter>
		<filter-name>filter2</filter-name>
		<filter-class>hb.jetty.Filter2</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>filter2</filter-name>
		<url-pattern>/filter/*</url-pattern>
	</filter-mapping>
</web-app>

 

 

2、在地址栏总输入如下内容 http://localhost:8080/manager/filter/

 

目录解构图

 

二、不使用配置文件设置jetyy的工程目录

 

import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;

public class JettyServer2 {

	public static void main(String[] args) throws Exception {
		//获取工程的根目录
		String relativelyPath=System.getProperty("user.dir");
		System.out.println(relativelyPath);
		
		Server server = new Server(8080);  
		  
        WebAppContext context = new WebAppContext();  
        context.setContextPath("/manager");  
//        context.setDescriptor("D:/JavaProject/jettytest/jetty/webapps/manager/WEB-INF/web.xml");  
//        context.setResourceBase("D:/JavaProject/jettytest/jetty/webapps/manager");  
        context.setDescriptor(relativelyPath + "/jetty/webapps/manager/WEB-INF/web.xml");  
        context.setResourceBase(relativelyPath + "/jetty/webapps/manager");  
        context.setParentLoaderPriority(true);  
        server.setHandler(context);  
  
        server.start();  
        server.join(); 
	}

}

 

  • 3593cece-b6b3-3c03-b020-76542952d4ec-thumb.bmp
  • 大小: 17.6 KB

QWidget嵌入QML窗口中

由于QWidget和QML窗口的渲染方式不一样,所以他们不能互相嵌入。 但有时候就是有这种需求:QML窗口需要嵌入到QWiget窗口中,或则是QWiget窗口需要嵌入到QML窗口中。 这个时候该怎么办...
  • r5014
  • r5014
  • 2017年05月19日 13:52
  • 1253

SWT中嵌入awt或者swing(主要是一些二维图形或者图的绘制swt不行)

可以的,   SWT中可以嵌入Swing组件. view plaincopy to clipboardprint?Composite   comp   =   new   (parent,   SWT...
  • Skai_CSDN
  • Skai_CSDN
  • 2011年02月27日 21:00
  • 2707

unity视图如何嵌入到Android中

1 首先建一个unity工程,里面创建一个小球,然后写一个脚本test.cs,并将其挂到主摄像机上2 将unity项目导出成Android工程3 将上一步导出的eclipse工程导入到Eclips...
  • qq_15267341
  • qq_15267341
  • 2016年07月30日 16:38
  • 2031

将.net winform 通过wpf嵌入到浏览器中

这篇文章将描述如何嵌入一个.net应用程序窗口在网络浏览器中使用。基本上,这篇文章将会告诉你如何网络中所有的窗口形式.net应用程序用很少的修改你的项目和你的WinForms没有代码修改应用程序。 ...
  • ryb666666
  • ryb666666
  • 2012年06月15日 16:46
  • 2397

C编程语言嵌入Lua的用法

C编程语言嵌入Lua的用法 当你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要...
  • u010507799
  • u010507799
  • 2016年08月23日 14:21
  • 1459

Qt中嵌入OSG

最近因项目需要在Qt中嵌入OSG界面,遂尝试了一番: 实验环境:vs2010+Qt4.8.3+OSG3.0.1 osg能够和很多的GUI界面进行融合,其源码包中含的工程代码为我们展示了使用的示例: ...
  • zhaohsww
  • zhaohsww
  • 2014年02月11日 19:54
  • 6443

将Word嵌入到自己的程序中

    最近在写一个程序,根据用户的要求,需要将在程序中打开Word——就是将Word嵌入到程序当中。.NET本身没有提供这方面的容器控件,需要用第三方的。    在网上搜了一下,还真不少,但多数是要...
  • yistudio
  • yistudio
  • 2008年12月13日 10:51
  • 3708

MFC在应用程序中嵌入MS Word

一、引言Microsoft Office办公套件以其功能强大、方便实用而被广泛使用。我们可以使用自动化作为Word用以把其功能显露给其他应用的方式,采用这种方式可以尽可能少的占用自动化客户的资源,并且...
  • BestBear
  • BestBear
  • 2004年08月13日 11:11
  • 1560

使用单文档视图结构把Word嵌入到VC程序中(转)

环境;win7 64,vs2008 sp1 一.新建一单文档,复合文档选择容器,同时选中活动文档容器和支持复合文件 未完,待续...
  • dragoo1
  • dragoo1
  • 2014年12月03日 21:52
  • 1914

在office中嵌入mathtype

安装条件: 电脑64位win7,office2010,mathtype2015(具体是那个版本可以自己查下) 关闭所有的跟office有关的程序。 word中嵌入mathtype(网上的方法可以...
  • yuhushangwei
  • yuhushangwei
  • 2016年07月15日 09:32
  • 1287
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jetty6 嵌入到 javaproject中
举报原因:
原因补充:

(最多只允许输入30个字)