Java jetty servlet将uri映射到文件

Java jetty servlet将uri映射到文件,java,servlets,jetty,Java,Servlets,Jetty,通过HttpServletRequest.getRequestURI我们可以获得用户访问servlet时输入的路径 如何编写一个servlet,将这些URI映射到主目录中的文件。例如,如果用户输入servlet的URL "http://localhost:8080/webbtechnologies/html/index.html" 发送文件 C:\Users\User\My Documents\Web Technologies\html\ index.html 给用户 这是我目前的代码: pub

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

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

"http://localhost: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();
}


}

看看jetty的DefaultServlet,它正是您想要的。如果您想做其他事情,您可以使用DefaultServlet中的代码并对其进行扩展

然而,给出用例DefaultServlet的描述对您来说应该足够了

以下是javadoc:


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

看看jetty的DefaultServlet,它正是您想要的。如果您想做其他事情,您可以使用DefaultServlet中的代码并对其进行扩展

然而,给出用例DefaultServlet的描述对您来说应该足够了

以下是javadoc:


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

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();
}

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();
}