使用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();
}
}
答案 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();
}