(转)Jetty入门
来源:互联网 发布:krenz网络班 编辑:程序博客网 时间:2024/06/03 04:13
这是一个JavaProject
首先是待纳入Jetty管理的LoginServlet.java
01
package com.jadyer.servlet;
02
03
import java.io.IOException;
04
import java.io.PrintWriter;
05
06
import javax.servlet.ServletException;
07
import javax.servlet.http.HttpServlet;
08
import javax.servlet.http.HttpServletRequest;
09
import javax.servlet.http.HttpServletResponse;
10
11
public class LoginServlet extends HttpServlet {
12
private static final long serialVersionUID = 2827360195836107171L;
13
14
@Override
15
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16
System.out.println("收到请求参数[" + request.getParameter("username") + "]");
17
response.setContentType("text/html; charset=UTF-8");
18
PrintWriter out = response.getWriter();
19
out.print("<h2>这是我的嵌入式Jetty测试结果</h2>");
20
out.flush();
21
out.close();
22
}
23
}
下面这个也是待纳入Jetty管理的UserServlet.java
01
package com.jadyer.servlet;
02
03
import java.io.IOException;
04
import java.io.PrintWriter;
05
06
import javax.servlet.ServletException;
07
import javax.servlet.http.HttpServlet;
08
import javax.servlet.http.HttpServletRequest;
09
import javax.servlet.http.HttpServletResponse;
10
11
public class UserServlet extends HttpServlet {
12
private static final long serialVersionUID = 2827360195836107171L;
13
14
@Override
15
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16
System.out.println("收到请求参数[" + request.getParameter("username") + "]");
17
response.setContentType("text/html; charset=UTF-8");
18
PrintWriter out = response.getWriter();
19
out.print("<h2>这是我的嵌入式Jetty测试结果-->用户访问Servlet成功</h2>");
20
out.flush();
21
out.close();
22
}
23
}
最后是自己编写的Jetty启动类MyServer.java(内含Jetty嵌入式的简单用法)
查看源码
打印?
001
package com.jadyer.jetty;
002
003
import java.util.HashMap;
004
import java.util.Map;
005
006
import javax.servlet.Servlet;
007
008
import org.eclipse.jetty.server.Server;
009
import org.eclipse.jetty.servlet.ServletContextHandler;
010
import org.eclipse.jetty.webapp.WebAppContext;
011
012
import com.jadyer.servlet.LoginServlet;
013
import com.jadyer.servlet.UserServlet;
014
015
/**
016
* @see --------------------------------------------------------------------------------------------------------------
017
* @see Jetty简介
018
* @see Jetty是一个嵌入式的Web服务器
019
* @see Jetty官网:http://www.eclipse.org/jetty/
020
* @see Jetty下载:http://download.eclipse.org/jetty/
021
* @see --------------------------------------------------------------------------------------------------------------
022
* @see Jetty与Tomcat比较(取自网络)
023
* @see Jetty的架构要比Tomcat简单一些,它是基于Handler来实现的,它可以通过Handler来进行扩展
024
* @see Tomcat的架构是基于容器设计的,扩展Tomcat时需要了解Tomcat的整体设计结果,故不易扩展
025
* @see --------------------------------------------------------------------------------------------------------------
026
* @see Jetty使用
027
* @see 0)版本选择:由于Jetty9需要JDK7的支持,所以我们这里使用jetty-distribution-8.1.10.v20130312.zip
028
* @see 1)修改端口:修改\\JETTY_HOME\\etc\\jetty.xml第40行default="8080"即可
029
* @see 2)非嵌入式的项目发布(有两种方式)
030
* @see 非嵌入式的启动方式为命令行下执行该命令-->D:\Develop\jetty-distribution-8.1.10.v20130312>java -jar start.jar
031
* @see 第一种:项目打成war包放到\\JETTY_HOME\\webapps\\下即可,访问地址为http://127.0.0.1:8080/warName(war名字大小写严格相同)
032
* @see 第二种:类似于Tomcat的<Context path="" docBase="">的方式,即在\\JETTY_HOME\\contexts\\目录下新增一个名字随意的xml文件
033
* @see 文件格式与该目录下的javadoc.xml相同,其中主要修改以下两处
034
* @see <Set name="contextPath">/testBbb</Set>
035
* @see <Set name="resourceBase">F:/Tool/Code/JavaSE/loginManager/WebRoot</Set>
036
* @see 3)嵌入式的项目发布
037
* @see 也就是把Jetty提供的jar加入到项目中(可以是Java项目或Web项目),然后编写通过一个main()启动Jetty,所用到的jar如下
038
* @see JETTY_HOME中的lib目录,和lib下的jsp目录,这俩目录中的jar加入到项目中即可(若不涉及jsp页面,就不需要jsp目录下的jar了)
039
* @see 具体写法详见这里的startForServlet()和startForWebApp()方法
040
* @see --------------------------------------------------------------------------------------------------------------
041
* @create Jul 5, 2013 12:54:24 PM
042
* @author 玄玉<http://blog.csdn.net/jadyer>
043
*/
044
public class MyServer {
045
public static void main(String[] args) {
046
Map<Class<? extends Servlet>, String> servletMap = new HashMap<Class<? extends Servlet>, String>();
047
servletMap.put(UserServlet.class, "/user");
048
servletMap.put(LoginServlet.class, "/login");
049
startForServlet(8089, "/testJettyDemo", servletMap);
050
startForWebApp(8089, "/gbook", "F:/Tool/Code/JavaSE/guestbook/WebRoot");
051
}
052
053
054
/**
055
* 针对Servlet
056
* @see 通过servletMap参数可以使得该方法直接同时发布多个Servlet
057
* @param port 访问服务器的端口
058
* @param contextPath 访问服务器的地址
059
* @param servletMap 发布的Servlet(这是一个Map,键为Servlet的class对象,值为映射url-pattern)
060
*/
061
private static void startForServlet(int port, String contextPath, Map<Class<? extends Servlet>, String> servletMap){
062
//绑定端口
063
Server server = new Server(port);
064
//可以使用ServletContextHandler处理Servlet
065
ServletContextHandler context = new ServletContextHandler();
066
//添加Servlet并指定映射url-pattern
067
for(Map.Entry<Class<? extends Servlet>, String> servletEntry : servletMap.entrySet()){
068
context.addServlet(servletEntry.getKey(), servletEntry.getValue());
069
}
070
//此时访问路径就是http://127.0.0.1:port/contextPath/urlPattern
071
context.setContextPath(contextPath);
072
//绑定Handler
073
server.setHandler(context);
074
//启动服务
075
try {
076
server.start();
077
} catch (Exception e) {
078
System.out.println("启动Jetty时发生异常,堆栈轨迹如下");
079
e.printStackTrace();
080
}
081
if(server.isStarted()){
082
System.out.println("Servlet服务启动成功");
083
}
084
}
085
086
087
/**
088
* 针对一个Web应用
089
* @see 注意resourceBase参数指向的应用所依赖的jar必须全部存放在其WebRoot\WEB-INF\lib目录中
090
* @see 否则应用启动后,访问时会由于在lib中找不到jar而报告java.lang.ClassNotFoundException
091
* @param port 访问服务器的端口
092
* @param contextPath 访问服务器的地址
093
* @param resourceBase Web应用的目录(需指向到WebRoot目录下)
094
*/
095
private static void startForWebApp(int port, String contextPath, String resourceBase){
096
Server server = new Server(port);
097
//使用WebAppContext时就必须设置resourceBase
098
WebAppContext context = new WebAppContext();
099
//此时访问路径就是http://127.0.0.1:port/contextPath
100
context.setContextPath(contextPath);
101
context.setResourceBase(resourceBase);
102
server.setHandler(context);
103
try {
104
server.start();
105
} catch (Exception e) {
106
System.out.println("启动Jetty时发生异常,堆栈轨迹如下");
107
e.printStackTrace();
108
}
109
if(server.isStarted()){
110
System.out.println("Web服务启动成功");
111
}
112
}
113
}
- (转)Jetty入门
- jetty入门
- Jetty入门
- Jetty入门
- Jetty入门
- Jetty入门
- jetty快速入门
- jetty快速入门
- jetty快速入门
- Jetty使用入门
- Jetty入门之 HelloWorld
- jetty学习入门一
- Jetty 入门部署
- Jetty入门之 HelloWorld
- jetty快速入门与嵌入使用 jetty
- jetty快速入门与嵌入使用 jetty
- jetty快速入门与嵌入使用 jetty
- jetty快速入门与嵌入使用 jetty
- (转)Web端服务器推送技术原理分析及dwr框架简单的使用
- (转)dwr.xml是DWR的配置详细
- (转)DWR util.js工具包的使用
- (转)DWR3.0框架入门(2) —— DWR的服务器推送
- (转)DWR3.0框架入门(3) —— ScriptSession的维护及优化
- (转)Jetty入门
- (原)控制反转
- 优化Android App性能?十大技巧
- (原)框架本质及structs2核心功能(1)
- (原)面向对象编程浅谈(1)
- (原)装饰模式
- 使用VS2010开发ActiveX(MFC)控件(2)——界面显示
- (转) java 字节流与字符流的区别
- (转)正则表达式30分钟入门教程