jetty servlet将uri映射到文件

时间:2012-12-05 18:19:54

标签: java servlets jetty

使用HttpServletRequest.getRequestURI,我们可以获得用户访问servlet时输入的路径。

如何编写将这些URI映射到主目录中的文件的servlet。例如,如果用户输入servlet的URL

  

“HTTP://本地主机:8080 / webbtechnologies / HTML / index.html中”

发送文件

  

C:\ Users \ User \ My Documents \ Web Technologies \ html \   的index.html

给用户。

到目前为止,这是我的代码:

public class SimpleFileManagerServlet extends HttpServlet {
private String location;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = resp.getWriter();
location = req.getRequestURI(); 
}

public static void main(String... args) throws Exception {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.addServlet(SimpleFileManagerServlet.class, "/");

Server server = new Server(8080);
server.setHandler(context);
server.start();
server.join();
}


}

2 个答案:

答案 0 :(得分:1)

看一下jetty的DefaultServlet,它正是你想要的。如果您想要执行其他操作,可以使用DefaultServlet中的代码并对其进行扩展。

但是,对您的用例DefaultServlet的描述应该足够了。

这是javadoc:http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html

查看随分发提供的测试webapp,了解如何在web.xml中配置它等。

答案 1 :(得分:0)

Jetty的DefaultServlet会为你做这件事。您真正需要做的就是告诉它在您的服务器上从哪里提供文件。

试试这个:

import org.eclipse.jetty.servlet.DefaultServlet;

public static void main(String... args) throws Exception {

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);

    context.setResourceBase("file:///C:/Users/User/My Documents/Web Technologies");
    context.setContextPath("/");
    context.addServlet(new ServletHolder("default", DefaultServlet.class), "/*");

    Server server = new Server(8080);
    server.setHandler(context);
    server.start();
    server.join();
}