Когда вы создаете динамический проект веб-приложения в Eclipse, содержимое, которое попадает в корень файла war, упаковывается из папки WebContent.
Похоже, вы хотите получить доступ к файлу из каталога WEB-INF / templates во время выполнения для вашего веб-приложения.
Я предполагаю, что вы используете абсолютный путь для доступа к файлу оттуда в настоящее время. Вы уже поняли, что это, вероятно, не будет работать для вашего приложения после его развертывания.
Вам потребуется получить доступ к содержимому файла, используя ServletContext.getResourceAsStream (String) .
Следующий фрагмент находит файл с именем WEB-INF / templatez / myfile.txt из сервлета, который является частью веб-приложения, содержащего файл myfile.txt. Другие веб-приложения и пользователи не смогут получить доступ к файлу через запросы HTTP GET.
package a;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name="FileFinder", urlPatterns={"/FileFinder"})
public class FileFinder extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
//* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet FileFinder</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet FileFinder at " + request.getContextPath () + "</h1>");
InputStream is = null;
try {
is = request.getServletContext().getResourceAsStream("/WEB-INF/templatez/myfile.txt");
out.println((null == is ? "did not " : "did ") + "find the file myfile.txt");
} finally {
if (null != is) is.close();
}
out.println("</body>");
out.println("</html>");
//*/
} finally {
out.close();
}
}
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}
}