A WEB programozása - Kidolgozott JSP feladatok - DirLister
Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót
A DirLister feladat megoldása
Az alábbi kódot egy fejlesztőkörnyezettel generáltam (nem kicsit gyorsabb így összekattintgatni, mint vizsgán mindent begépelni...), szóval ne csodálkozz, ha esetleg lesz benne néhány "felesleges" tag vagy metódus. :) A kód egyáltalán nem tartalmaz semmiféle hibakezelést: ha nem létező utat adsz meg, annak bizony NullPointerException lesz a vége. Mindazonáltal a vizsgán nem volt követelmény a hibakezelés, szóval nemigen volt kedvem ezzel foglalkozni. ;)
A JavaBean (Dirlister.java):
package webprog; import java.io.File; import java.util.Vector; public class Dirlister { /** Creates a new instance of Dirlister */ public Dirlister() { } private String thepath; // a listázni kívánt elérési út private Vector files; // itt keletkezik majd az állományok listája private Vector dirs; // itt keletkezik majd a könyvtárak listája public String getThepath() { return thepath; } public void setThepath(String thepath) { this.thepath = thepath; } public Vector getFiles() { files = new Vector(); // a JSP oldalon faszán végig lehet iterálni egy Vector struktúrán File f = new File(thepath); File[] contents = f.listFiles(); // ez a metódus - nevével ellentétben - könyvtárakat is listáz for (int i = 0; i < contents.length; i++) { if (contents[i].isFile()) { // ha állományt találtunk, akkor annak nevét hozzáadjuk a Vectorhoz files.add(contents[i].getName()); } } return files; } public void setFiles(Vector files) { return; } public Vector getDirs() { // nagyjából minden ugyanaz, mint a getFiles()... dirs = new Vector(); File f = new File(thepath); File[] contents = f.listFiles(); for (int i = 0; i < contents.length; i++) { if (!contents[i].isFile()) { dirs.add(contents[i].getName()); } } return dirs; } public void setDirs(Vector dirs) { return; } }
Az ezt felhasználó JSP oldal (dirlister.jsp):
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Dirlister</title> </head> <body> <h1>Dirlister</h1> <form action="dirlister.jsp"> <input type="text" name="thepath" value="" /> <input type="submit" value="Mehet!" /> </form> <c:if test="${!empty param.thepath}"> <jsp:useBean id="lister" scope="page" class="webprog.Dirlister" /> <jsp:setProperty name="lister" property="thepath" value="${param.thepath}" /> <c:forEach items="${lister.dirs}" var="actelement"> <b>${actelement}</b><br/> </c:forEach> <c:forEach items="${lister.files}" var="actelement"> ${actelement}<br/> </c:forEach> </c:if> </body> </html>
-- Földe - 2007.01.23.