Jetty 是一個(gè) 開源的servlet容器 , 它為基于Java的web內(nèi)容,例如JSP和servlet提供運(yùn)行環(huán)境。
?
Jetty以其 高效、小巧、 可嵌入式 等優(yōu)點(diǎn)深得人心,尤其是啟動(dòng)速度Tomcat 6簡(jiǎn)直望塵莫及。
?
Jetty作為可選的servlet容器只是一個(gè)額外的功能,而它真正出名是因?yàn)樗亲鳛橐粋€(gè) 可以嵌入到其他的Java代碼中的servlet容器而設(shè)計(jì)的 。這就是說,開發(fā)小組將Jetty作為一組Jar文件提供出來,因此你可以在你自己的代碼中將servlet容器實(shí)例化成一個(gè)對(duì)象并且可以操縱這個(gè)容器對(duì)象。
?
可以提供給客戶一個(gè)自己具有啟動(dòng),停止以及管理功能的應(yīng)用程序:Jetty對(duì)于普通的HTTP服務(wù)(沒有servlet)只需要350k的內(nèi) 存,這使得可以將其用在智能設(shè)備中。你可以提供基于web的控制面板并且具有Java web應(yīng)用的所有功能而不用擔(dān)心那些獨(dú)立的容器所帶來的壓力。?
?
?一、在java project中添加jetty(直接copy官網(wǎng)中下載的文件)
?
1、下載 http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip?
?
2、新建一個(gè)java project (jettytest)
?
3、在工程目錄下建jetty目錄,然后再在jetty目錄下新建etc(存放配置文件),lib(存放jetty的jar包),logs(存放web日志),webapps(存放多個(gè)或者一個(gè)web工程)四個(gè)目錄
?
4、在 JETTY_HOME/lib 和 JETTY_HOME/lib/jsp-2.1 目錄(如果沒有JSP頁(yè)面則可以不需要)下的所有jar包
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、從JETTY_HOME/ect中拷貝如下文件 jetty.xml,webdefault.xml,realm.properties 到新建工程的etc目錄下
?
6、 修改jetty.xml的內(nèi)容 ,讓其指定到webdefault.xml、webapps目錄、realm.properties、logs目錄的具體位置, 默認(rèn)是在工程的最外層目錄,由于這兩是放到j(luò)etty目錄下面了,所以需要修改對(duì)應(yīng)的目錄位置 。
??
<Call name="addLifeCycle"> <Arg> <New class="org.mortbay.jetty.deployer.WebAppDeployer"> <Set name="contexts"><Ref id="Contexts"/></Set> <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set> <Set name="parentLoaderPriority">false</Set> <Set name="extract">true</Set> <Set name="allowDuplicates">false</Set> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set> </New> </Arg> </Call> <Set name="UserRealms"> <Array type="org.mortbay.jetty.security.UserRealm"> <Item> <New class="org.mortbay.jetty.security.HashUserRealm"> <Set name="name">Test Realm</Set> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set> <Set name="refreshInterval">0</Set> </New> </Item> </Array> </Set> <Ref id="RequestLog"> <Set name="requestLog"> <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog"> <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set> <Set name="filenameDateFormat">yyyy_MM_dd</Set> <Set name="retainDays">90</Set> <Set name="append">true</Set> <Set name="extended">false</Set> <Set name="logCookies">false</Set> <Set name="LogTimeZone">GMT</Set> </New> </Set> </Ref>?
?
? 7、在webapps目錄下,新建一個(gè)目錄manager(相當(dāng)于是一個(gè)web工程的名稱),然后再在這個(gè)目錄下添加一個(gè)a.jsp文件( jetty會(huì)預(yù)編譯jsp為java文件,最終會(huì)編譯為class文件,需要導(dǎo)入JETTY_HOME/lib/jsp目錄下的jar包 )
?
8、添加一個(gè)啟動(dòng)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目錄,然后再在里面添加一個(gè)web.xml文件,里面的內(nèi)容可以根據(jù)webdefault.xml文件中的內(nèi)容拷貝過來,然后做相關(guān)的修改
?
<?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、在地址欄總輸入如下內(nèi)容 http://localhost: 8080 /manager/filter/
?
目錄解構(gòu)圖
?
二、不使用配置文件設(shè)置jetyy的工程目錄(配置文件用java代碼說明)
?
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(); } }
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
