更新:对于Jetty 9.2.2版本:
Server server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setHost("0.0.0.0");
connector.setPort(8085);
connector.setName("main");
server.addConnector(connector);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setWar("src/main/webapp");
context.addFilter(MyFilter.class, "/", 1);
HandlerCollection collection = new HandlerCollection();
RequestLogHandler rlh = new RequestLogHandler();
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) {
throw Throwables.propagate(e);
}
如果您不想使用web.xml,则可以使用以下方法:
SocketConnector socketConnector = new SocketConnector();
socketConnector.setPort(7000);
Server server.setConnectors(new Connector[] { socketConnector });
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar("/");
webapp.addFilter(MyFilter.class, "/test", 1);
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()方法,请确保在Web应用程序的根路径下有一个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>