更新:对于Jetty版本9.2.2:
Server server = new Server(); // Note: if you don't want control over type of connector, etc. you can simply // call new Server(<port>); ServerConnector connector = new ServerConnector(server); connector.setHost("0.0.0.0"); connector.setPort(8085); // Setting the name allows you to serve different app contexts from different connectors. connector.setName("main"); server.addConnector(connector); WebAppContext context = new WebAppContext(); context.setContextPath("/"); // For development within an IDE like Eclipse, you can directly point to the web.xml context.setWar("src/main/webapp"); context.addFilter(MyFilter.class, "/", 1); HandlerCollection collection = new HandlerCollection(); RequestLogHandler rlh = new RequestLogHandler(); // Slf4j - who uses anything else? Slf4jRequestLog requestLog = new Slf4jRequestLog(); requestLog.setExtended(false); rlh.setRequestLog(requestLog); collection.setHandlers(new Handler[] { context, rlh }); server.setHandler(collection); try { server.start(); server.join(); } catch (Exception e) { // Google guava way throw Throwables.propagate(e); }原始答案===
如果您不想使用web.xml,请使用以下命令:
SocketConnector socketConnector = new SocketConnector();socketConnector.setPort(7000); // Change to port you wantServer server.setConnectors(new Connector[] { socketConnector });WebAppContext webapp = new WebAppContext();webapp.setContextPath("/"); // For rootwebapp.setWar("/"); // Appropriate file system path.// Now you can use the various webapp.addFilter() methodswebapp.addFilter(MyFilter.class, "/test", 1); // Will serve request to /test.// There are 3 different addFilter() variants.// Bonus ... request logs.RequestLogHandler logHandler = new RequestLogHandler();NCSARequestLog requestLog = new NCSARequestLog("/tmp/jetty-yyyy_mm_dd.request.log");requestLog.setRetainDays(90);requestLog.setAppend(true);requestLog.setExtended(false);requestLog.setLogTimeZone("GMT");logHandler.setRequestLog(requestLog);logHandler.setHandler(webapp);HandlerList handlerList = new HandlerList();handlerList.addHandler(logHandler);server.setHandler(handlerList);server.start();如果确实要使用web.xml而不是addFilter()方法,只需确保您的webapp根路径中具有WEB-INF / web.xml并使用以下xml:
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <filter> <filter-name>filterName</filter-name> <filter-class>com.x.y.z.FilterClass</filter-class> </filter> <filter-mapping> <url-pattern>/test</url-pattern> <filter-name>filterName</filter-name> </filter-mapping></web-app>



