Comment servir les fichiers JSP à l'aide de la Jetée?
Je suis l'incorporation de la jetée, siégeant en une seule servlet et certains du contenu statique. J'ai téléchargé la jetée de http://download.eclipse.org/jetty/7.4.5.v20110725/dist/, et ajouté tous les pots de JETTY_HOME/lib/* et JETTY_HOME/lib/jsp/* utilisateur de la bibliothèque dans eclipe; ces de l'utilisateur de la bibliothèque ont été ajoutés à mon projet. Si je mets un fichier JSP dans mon contenu statique dossier (./webapps/static/) et l'afficher à http://localhost:8080/static/test.jsp, l'expression de java ne sont pas évalués et j'ai montré le contenu complet du fichier.
Ce qui me manque?
Principal de ma classe 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 = new ContextHandler();
staticContextHandler.setContextPath("/static");
staticContextHandler.setHandler(staticResourceHandler);
//Create servlet context handler for main servlet.
ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.addServlet(new ServletHolder(new HelloServlet()),"/");
//Create a handler list to store our static and servlet context handlers.
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { staticContextHandler, servletContextHandler });
//Add the handlers to the server and start jetty.
server.setHandler(handlers);
server.start();
server.join();
}
}
Mon fichier JSP je veux le servir:
<html>
<body>
Time: <%= new java.util.Date() %>
</body>
</html>
Liste des jarres en JETTY_HOME/lib/:
$ ls -1 ./jetty-distribution-7.4.5.v20110725/lib/*.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-ajp-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-annotations-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-client-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-continuation-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-deploy-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-http-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-io-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-jmx-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-jndi-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-overlay-deployer-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-plus-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-policy-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-rewrite-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-security-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-server-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-servlet-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-servlets-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-util-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-webapp-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-websocket-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jetty-xml-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/servlet-api-2.5.jar
Liste des jarres en JETTY_HOME/lib/jsp/:
$ ls -1 ./jetty-distribution-7.4.5.v20110725/lib/jsp/*.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/com.sun.el_1.0.0.v201004190952.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/ecj-3.6.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/javax.el_2.1.0.v201004190952.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/javax.servlet.jsp_2.1.0.v201004190952.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/javax.servlet.jsp.jstl_1.2.0.v201004190952.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/jetty-jsp-2.1-7.4.5.v20110725.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/org.apache.jasper.glassfish_2.1.0.v201007080150.jar
./jetty-distribution-7.4.5.v20110725/lib/jsp/org.apache.taglibs.standard.glassfish_1.2.0.v201004190952.jar
Mise à jour: La suggestion de @JJ a aidé à travailler sur la façon de servir correctement de fichiers JSP avec ponton. Mon seul problème maintenant est de savoir comment arrêter la jetée de la liste le contenu du répertoire ./webapps/jsp/. La plus élémentaire correction que j'ai pour le moment est de mettre index.html ou de l'index.jsp ./webapps/jsp/, mais je préfère être en mesure de configurer l'embarcadère pour retourner une erreur forbidden.
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(true);
//Create context handler for static resource handler.
ContextHandler staticContextHandler = new ContextHandler();
staticContextHandler.setContextPath("/static");
staticContextHandler.setHandler(staticResourceHandler);
//Create WebAppContext for JSP files.
WebAppContext webAppContext = new WebAppContext();
webAppContext.setContextPath("/jsp");
webAppContext.setResourceBase("./webapps/jsp/");
//??? THIS DOES NOT STOP DIR LISTING OF ./webapps/jsp/???
webAppContext.setInitParameter("dirAllowed", "false");
//Create servlet context handler for main servlet.
ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.addServlet(new ServletHolder(new HelloServlet()), "/*");
//Create a handler list to store our static, jsp and servlet context handlers.
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { staticContextHandler, webAppContext, servletContextHandler });
//Add the handlers to the server and start jetty.
server.setHandler(handlers);
server.start();
server.join();
}
}
OriginalL'auteur phatypus | 2011-08-23
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il vous manque quelques pièces clés qui raconte l'Embarcadère pour analyser les fichiers en tant que JSP contenu, au lieu de simplement un fichier statique. Je ne vois pas exactement ce qu'il vous manque sans pouvoir déboguer votre code cependant je vous recommande de vérifier cette référence sur l'incorporation de la Jetée:
http://docs.codehaus.org/display/JETTY/Embedding+Jetty
En particulier, je pense que ce morceau de code peuvent être pertinents à votre question:
OriginalL'auteur JJ.