我将Jetty(版本7.4.5.v20110725)嵌入到java应用程序中.我使用Jetty的WebAppContext在./webapps/jsp/中提供JSP页面,但如果我访问localhost:8080/jsp /我获取Jetty的目录列表,以获取./webapps/jsp/的全部内容.我已经尝试在WebAppContext上将dirAllowed参数设置为false,并且它不会更改目录列表行为.
在ResourceHandler上禁用目录列表就是将false传递给setDirectoriesListed,按预期工作.有人可以告诉我如何为WebAppContext执行此操作吗?
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
public class Test {
public static void main(String[] args) throws Exception {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setHost("127.0.0.1");
connector.setPort(8080);
server.addConnector(connector);
// Create a resource handler for static content.
ResourceHandler staticResourceHandler = new ResourceHandler();
staticResourceHandler.setResourceBase("./webapps/static/");
staticResourceHandler.setDirectoriesListed(false);
// Create context handler for static resource handler.
ContextHandler staticContextHandler = new ContextHandler();
staticContextHandler.setContextPath("/static");
staticContextHandler.setHandler(staticResourceHandler);
// Create WebAppContext for …Run Code Online (Sandbox Code Playgroud) 我正在嵌入jetty,提供单个servlet和一些静态内容.我从http://download.eclipse.org/jetty/7.4.5.v20110725/dist/下载了jetty ,并将所有来自JETTY_HOME/lib/*和JETTY_HOME/lib/jsp/*的jar添加到eclipe的用户库中; 这些用户库已添加到我的项目中.如果我将JSP文件放在我的静态内容文件夹(./webapps/static/)中并在http:// localhost:8080/static/test.jsp中查看,则不会评估java表达式并显示完整文件的内容.
我错过了什么?
我的主要java类:
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class Test {
public static void main(String[] args) throws Exception {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
// Create a resource handler for static content.
ResourceHandler staticResourceHandler = new ResourceHandler();
staticResourceHandler.setResourceBase("./webapps/static/");
staticResourceHandler.setDirectoriesListed(true);
//staticResourceHandler.setWelcomeFiles(new String[]{ "index.html", });
//staticResourceHandler.setCacheControl("no-store,no-cache,must-revalidate");
// Create context handler for static resource handler.
ContextHandler staticContextHandler …Run Code Online (Sandbox Code Playgroud) 如何配置jetty使用log4j?我已经在我的应用程序中使用log4j,而jetty登录到stderr ...
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class Test {
static final Logger logger = Logger.getLogger(Test.class);
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
logger.info("Started.");
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setHost("127.0.0.1");
connector.setPort(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.addServlet(new ServletHolder(new ServletHome()), "/");
// disable jettys default logger
//org.eclipse.jetty.util.log.Log.setLog(null);
server.addConnector(connector);
server.setHandler(context);
logger.debug("Starting jetty.");
try {
server.start();
server.join();
} catch (Exception e) {
logger.error("Ooops.");
}
logger.info("Finished.");
}
}
Run Code Online (Sandbox Code Playgroud)