A WEB programozása - Kidolgozott JSP feladatok - DirLister

A VIK Wikiből
A lap korábbi változatát látod, amilyen Szikszayl (vitalap | szerkesztései) 2014. augusztus 24., 19:04-kor történt szerkesztése után volt.
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez
← Vissza az előző oldalra – A WEB programozása - Kidolgozott JSP feladatok

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.