Note: The code is based on Java EE 6.
PathServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | package com.bluelotussoftware.example.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author John Yeary <jyeary@bluelotussoftware.com> * @version 1.0 */ @WebServlet (name = "PathServlet" , urlPatterns = { "/PathServlet" }) public class PathServlet extends HttpServlet { private static final long serialVersionUID = 7665375042294258750L; /** * 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 { ServletContext servletContext = getServletContext(); String realPath = servletContext.getRealPath( "/" ); out.println( "<html>" ); out.println( "<head>" ); out.println( "<title>Servlet PathServlet</title>" ); out.println( "</head>" ); out.println( "<body>" ); out.println( "<h1>Servlet PathServlet at " + request.getContextPath() + "</h1>" ); out.println( "<h1>Servlet Absolute Path at: " + realPath + "</h1>" ); out.println( "</body>" ); out.println( "</html>" ); } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * 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" ; } // </editor-fold> } |
DirectoryLister.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package com.bluelotussoftware.example.beans; import java.io.File; import java.util.Arrays; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.context.FacesContext; /** * * @author John Yeary <jyeary@bluelotussoftware.com> * @version 1.0 */ @ManagedBean @RequestScoped public class DirectoryLister { /** * Default no-argument constructor. */ public DirectoryLister() { } /** * Determines the real path (absolute) for the web application root. * @return absolute path to web application root. */ public String getRealPath() { return FacesContext.getCurrentInstance().getExternalContext().getRealPath( "/" ); } /** * Lists all files in the web application root. * @return files in web application root. */ public List<File> getFiles() { File f = new File(getRealPath()); return Arrays.asList(f.listFiles()); } } |
index.xhtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? xml version = '1.0' encoding = 'UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < h:head > < title >Absolute Path</ title > </ h:head > < h:body > < h1 > < h:outputText value = "Real Path: #{directoryLister.realPath}" /> </ h1 > < ul > < ui:repeat value = "#{directoryLister.files}" var = "file" > < li >#{file.name} : #{file.absolutePath}</ li > </ ui:repeat > </ ul > </ h:body > </ html > |