A WEB programozása - Kidolgozott JSP feladatok - DirLister

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 22., 11:38-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|DirLister}} ==A DirLister feladat megoldása== Az alábbi kódot egy fejlesztőkörnyezettel generáltam (nem kicsit gyorsabb így össze…”)
(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

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.