package com.bierbobo;
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.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.HttpConnection;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.AbstractHandler;
import org.mortbay.jetty.handler.ContextHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.DefaultServlet;
import org.mortbay.jetty.servlet.ServletHolder;
import org.mortbay.jetty.webapp.WebAppContext;
public class JettyTest {
/*
* 1、jar配置 lib : jetty jetty-util servlet-api
* jsp-2.1: ant core jsp jsp-api
*
* 2、 Server(服务器) Connector(连接器) Handler(处理器)
*
* 3、 web配置文件发布正常的servlet addServlet可以发布内部servlet类
*/
public static void main(String[] args) throws Exception {
// 1:定义server
Server server = new Server(8020);
// 2:把连接器集合放到server里,可以在Server定义端口来代替
// addConnect(server);
// 3:并把处理器集合放到server里
// handlerCollection(server);
//
// contextHandler(server);
//
// context(server);
webAppContext(server);
// 4:启动server
server.start();
server.join();
}
/**
* 为Server设置连接器,可以通过new Server(8020)简单的设置连接器为SocketConnector连接器
* @param server
*/
private static void addConnect(Server server) {
Connector connector = new SelectChannelConnector();
connector.setPort(8020);
server.setConnectors(new Connector[] { connector });
}
/**
* 多个处理器即处理器集合:连接器的请求都会在每个处理器中处理
* @param server
*/
private static void handlerCollection(Server server) {
HandlerCollection handlers = new HandlerCollection();
Handler hello = new HelloHandler();
handlers.setHandlers(new Handler[] { hello });
server.setHandler(handlers);
}
/**
* 上下文处理器:一般处理来自web的请求。
* 如果要想处理servlet请求的话,首先要添加defaultservlet(拦截路径为全部),其次在增加自己的servlet,如下。
*
* @param server
*/
private static void contextHandler(Server server) {
ContextHandler context = new ContextHandler();
context.setContextPath("/");
Handler handler = new HelloHandler();
context.setHandler(handler);
server.setHandler(context);
}
private static void context(Server server) {
Context context = new Context(server, "/", Context.SESSIONS);
ServletHolder holder = new ServletHolder(DefaultServlet.class);
holder.setInitParameter("dirAllowed", "true");
holder.setInitParameter("welcomeServlets", "index.html");
holder.setInitParameter("resourceBase", "jetty/web");
context.addServlet(holder, "/*");
context.addServlet(new ServletHolder(new HelloServlet("li")),"/hello");
}
/**
* web请求处理器:上下文处理器的升级,专门处理web请求,不在需要增加defaultservlet。
* @param server
*/
private static void webAppContext(Server server) {
WebAppContext webapp = new WebAppContext(server, "web", "/");
webapp.addServlet(new ServletHolder(new HelloServlet("A")), "/A");
webapp.addServlet(new ServletHolder(new HelloServlet("B")), "/B");
// webapp.setContextPath("/");
// webapp.setResourceBase("jetty/web");
// server.setHandler(webapp);
}
static class HelloHandler extends AbstractHandler {
public void handle(String target, HttpServletRequest request,
HttpServletResponse response, int dispatch) throws IOException,
ServletException {
Request base_request = (request instanceof Request) ? (Request) request
: HttpConnection.getCurrentConnection().getRequest();
base_request.setHandled(true);
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello OneHandler</h1>");
}
}
static class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String greeting = "Hello World";
public HelloServlet() {
}
public HelloServlet(String greeting) {
this.greeting = greeting;
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
System.out.println("收到请求");
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>" + greeting + "</h1>");
response.getWriter().println(
"session=" + request.getSession(true).getId());
response.getWriter().flush();
System.out.println("请求处理完成");
}
}
}
分享到:
相关推荐
【Jetty彗星技术(Cometd)及Continuation机制详解】 Jetty是一个高效、轻量级的Java Servlet容器,不仅可作为HTTP服务器,还能作为HTTP客户端。它以其小巧、稳定和高性能的特点受到广泛赞誉,适合企业级应用的需求。...
此文档是我在学习Jetty过程中总结的Jetty学习笔记
在本文中,我们将深入探讨如何使用Maven和Jetty创建一个Web项目,特别是在Eclipse Juno环境下。Maven是一个强大的项目管理和依赖管理工具,而Jetty则是一个轻量级的Web服务器和Servlet容器,常用于开发和测试环境。 ...
11. **部署与容器**:完成开发后,项目通常会被打包成WAR或JAR文件,部署到Tomcat、Jetty等Web服务器容器中。容器负责管理应用的生命周期,提供服务发布、监控和管理功能。 以上就是"云笔记项目"所涵盖的主要技术栈...
嵌入式Web服务器如Tomcat、Jetty,让Spring Boot应用可以直接运行而无需额外的服务器环境。 接下来,笔记详细讲解了Spring Boot的主配置文件——application.properties或application.yml。这些配置文件用于定制...
3. **Web服务器**:可能是使用Tomcat或Jetty等Servlet容器运行Java Web应用,或者采用更现代的Spring Boot框架,内置了Web服务器功能。 4. **RESTful API设计**:为了实现多设备同步,项目可能采用了RESTful架构,...
8. **Web容器**: 会讲解什么是Web容器,如Tomcat、Jetty等,以及它们如何管理和运行Servlet和JSP。 9. **JSTL(JavaServer Pages Standard Tag Library)**: 一种标准标签库,能简化JSP页面的编写,提高可读性和可...
此外,可能还会讲解Tomcat、Jetty等应用服务器的配置和部署。 总的来说,这份“传智播客崔希凡javaweb笔记完整版”是一个全面的学习资源,覆盖了JavaWeb开发的各个方面,对于想要深入理解和实践JavaWeb开发的初学者...
10. **部署与运行**:项目最终会被打包成WAR文件,部署到Tomcat、Jetty等Web服务器上,供用户访问和使用。 总之,“javaweb 云笔记项目源代码(SSM)”是一个涵盖了SSM框架、Maven管理和云笔记功能实现的典型Java ...
9. **部署与服务器**:笔记可能包括Tomcat、Jetty等Web服务器的安装与配置,以及如何部署和运行Java Web应用。 10. **实战项目**:通过实际项目案例,读者可以将理论知识应用于实践,理解整个开发流程。 总的来说...
3. **嵌入式服务器**:SpringBoot可以内嵌Tomcat或Jetty等Servlet容器,这样就不需要额外安装和配置服务器,极大地提高了开发效率。 4. **Actuator**:SpringBoot Actuator提供了健康检查、监控、指标收集等功能,...
SpringBoot支持Tomcat、Jetty等内嵌式Servlet容器,无需单独部署到服务器,大大简化了开发和测试流程。只需运行主类,应用即可在本地启动。 5. **自动配置** 自动配置是SpringBoot的一个重要特性,它根据类路径中...
最后,笔记可能还涵盖了部署和运行javaweb应用的知识,如使用Tomcat、Jetty等Web服务器,以及应用的打包、发布和调试技巧。 总的来说,崔希凡老师的javaweb笔记是一份全面的学习资源,覆盖了从基础到高级的javaweb...
Servlet运行在Web容器(如Tomcat、Jetty)中,接收并响应来自客户端(通常是浏览器)的请求。 2. **生命周期**:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。当Web容器启动时,根据配置文件(web.xml...
其次,SpringBoot对嵌入式Web服务器的支持也是其亮点,如Tomcat和Jetty,这些服务器可以直接嵌入到应用中,无需额外部署。这大大简化了开发和测试流程。学习笔记会详细解释如何配置和使用嵌入式服务器。 在...
最后,可能还会涉及到Tomcat、Jetty等Web服务器的配置和部署,以及Maven或Gradle等构建工具的使用,这些对于实际项目的构建和发布至关重要。 总而言之,这份JavaWeb核心笔记是一个全面的学习资源,不仅覆盖了Java ...
3. **内嵌式Servlet容器**:SpringBoot支持Tomcat、Jetty等内嵌式Servlet容器,无需额外配置,可以直接打包成jar或war文件运行。 4. **自动配置(Auto Configuration)**:SpringBoot根据类路径中的jar包和配置文件...
Servlet是在Servlet容器(如Tomcat、Jetty等)中运行的。容器负责管理Servlet的生命周期,包括加载、初始化、服务、销毁等过程。 3. **Servlet生命周期** - **加载与实例化**:当服务器启动或第一次收到对Servlet...
笔记 您必须将Jetty-nosql-memcached与所有相关的jar一起安装到Jetty中,例如jetty-nosql和SpyMemcached。 如果您不确定,最好使用一体式jar,例如jetty-nosql-memcached-${version}-jar-with-dependencies.jar 。 ...