Ciao a tutti,
sto sviluppando la mia prima applicazione web object oriented con java server page.
Ho molta difficoltà ad entrare nella logica oop ma faccio del mio meglio per sfruttare tutte le sue potenzialità.
Per questo ho creato una classe che mi permettesse di gestire i contenuti semistatici come header e footer da altri file jsp mentre quelli dinamici da altri file jsp però segnalati da una variabile passata via get dall'utente.
Il problema è che vengono catturate sempre delle eccezioni durante la ricerca del file come se non lo trovasse, io credo dipenda dalla posizione della classe rispetto alla index visto che si trovano in cartelle diverse, ecco i vari codici:
codice:package utils; import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; /** * * @author lomiz */ public class GestioneContenuto { private String Header; //la testa della pagina private String Content; //i contenuti della pagina private String Footer; //il fondopagina /** * Forzo l'utilizzo dell'altro costruttore */ public GestioneContenuto() { //assegno la pagina di default tranne per il contenuto che viene tenuto vuoto this(fileToString("pages/header.jsp"), "", fileToString("pages/footer.jsp")); } /** * Costruttore principale * @param header * @param content * @param footer */ public GestioneContenuto(String header, String content, String footer) { this.Header = header; this.Content = content; this.Footer = footer; } public String getContent() { return Content; //ottengo i contenuti } public void setContent(String categoria) { //categoria=valore che viene passato via get String page; //uri reale della pagina da includere if (categoria == null || categoria.equals("main")) {//se non viene passato alcun valore uso la pag di default page = "pages/main.jsp"; } else if (categoria.equals("news")) { page = "pages/news.jsp"; } else if (categoria.equals("thanks")) { page = "pages/thanks.jsp"; } else { page = "pages/errore.html"; } this.Content = fileToString(page); //trasformo il file in stringa e l'assegno al contenuto } public String getFooter() { return Footer; //ottengo il footer } public void setFooter(String uriFooter) { //uriFooter= indirizzo del footer this.Footer = fileToString(uriFooter); //trasformo il file in stringa e l'assegno al footer } public String getHeader() { return Header; //ottengo l'header } public void setHeader(String uriHeader) { this.Header = fileToString(uriHeader); //trasformo il file in stringa e l'assegno all'header } private static String fileToString(String fileUri) {//trasforma un file in stringa String st = ""; try { File file = new File(fileUri); Scanner s = new Scanner(file); while (s.hasNextLine()) {//scorri linea per linea fino a quando il file ha atre linee st += s.nextLine() + "\n"; } } catch (FileNotFoundException e) { //catturo eccezione nel caso il file non si trovi st = "Il file non è stato trovato. Contattare l'amministratore"; } return st; } }Ecco invece la struttura ad albero dei file interessati:codice:<%@page contentType="text/html" pageEncoding="UTF-8" import="java.sql.*,java.util.*"%> <jsp:useBean id="contenuti" scope="session" class="utils.GestioneContenuto" /> <% String header=contenuti.getHeader(); contenuti.setContent(request.getParameter("categoria")); String content=contenuti.getContent(); String footer=contenuti.getFooter(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Sony e Canti</title> <meta content="lol" /> <link rel="stylesheet" type="text/css" media="handheld" href="handheld.css"/> <link rel="stylesheet" type="text/css" media="print" href="print.css"/> <style type="text/css"> @import url(styles/style.css); </style> </head> <body> <div id="container"> <div id="header"> <%= header %> </div> <div id="content"> <%= content %> </div> <div id="navigation"> <div id="navcontainer"> <ul id="navlist"> <li id="active">Index[*]News[*]Ringraziamenti[/list] </div> </div> <div id="footer"> <%= footer %> </div> </div> </body> </html>
Vi sarei molto grato se foste in grado di darmi consigli!
Grazie!


Rispondi quotando