codice:
package controllers;
import models.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class servletControllore extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String azione = request.getParameter("Azione");
String pagina = request.getParameter("Pagina");
BeanOperation bo = new BeanOperation();
riconosciAzione(azione, pagina, bo, request, response);
paginaDaCaricare(pagina, request, response);
}
// Funzione per il riconoscimento ed esecuzione, dell'azione scelta dall'utente
// pagina: serve per riconoscere la pagina da cui proviene l'azione
// bean: JavaBean che esegue effettivamente le operazioni richieste
public void riconosciAzione(String azione, String pagina, BeanOperation bean, HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (azione.equals("Inserimento")) {
if (pagina.equals("Modifica")) {
if (bean.modificaContatto(request, response)) {
String message = "MODIFICA AVVENUTA CON SUCCESSO!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Information", JOptionPane.INFORMATION_MESSAGE);
}
else {
String message = "NOMINATIVO DEL CONTATTO GIA' PRESENTE NELLA RUBRICA TELEFONICA!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Error", JOptionPane.ERROR_MESSAGE);
}
}
else { // Pagina = Inserimento
if ( bean.inserisciContatto(request, response)) {
String message = "INSERIMENTO AVVENUTO CON SUCCESSO!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Information", JOptionPane.INFORMATION_MESSAGE);
}
else {
String message = "INSERIMENTO NON AVVENUTO CON SUCCESSO!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
else if (azione.equals("Modifica")) {
// Memorizzo nella sessione, il nome del contatto da modificare
request.getSession().setAttribute("nomeOriginale", request.getParameter("Nome").toUpperCase());
if (bean.cercaContatto(request, response)) {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Modifica.jsp?nome=" + bean.getUsr().getNome() + "&indirizzo1=" + bean.getUsr().getIndirizzo1() + "&indirizzo2=" + bean.getUsr().getIndirizzo2() +
"&telefono1=" + bean.getUsr().getTelefono1() + "&telefono2=" + bean.getUsr().getTelefono2() + "&cellulare1=" + bean.getUsr().getCellulare1() + "&cellulare2=" + bean.getUsr().getCellulare2()
+ "&email1=" + bean.getUsr().getEmail1() + "&email2=" + bean.getUsr().getEmail2() + "¬e=" + bean.getUsr().getNote());
dispatcher.forward(request, response);
//String message = "MODIFICA EFFETTUATA CON SUCCESSO!!!";
//JOptionPane.showMessageDialog(new JFrame(), message, "Information", JOptionPane.INFORMATION_MESSAGE);
}
else {
String message = "CONTATTO DA MODIFICARE NON PRESENTE NELLA RUBRICA TELEFONICA!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Error", JOptionPane.ERROR_MESSAGE);
}
}
else if (azione.equals("Visualizza")) {
LinkedList listaContatti = bean.visualizzaContatti(request, response);
if (listaContatti.isEmpty() || listaContatti == null) {
String message = "MODIFICA EFFETTUATA CON SUCCESSO!!!";
JOptionPane.showMessageDialog(new JFrame(), message, "Information", JOptionPane.INFORMATION_MESSAGE);
}
else { // listaContatti contiene i nominativi della rubrica
Iterator iteratore = listaContatti.iterator();
String [] tupla = null;
while (iteratore.hasNext()) {
tupla = (String []) iteratore.next();
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Visualizza.jsp?Nome=" + tupla[0] + "&Indirizzo1=" + tupla[1] + "&Indirizzo2=" + tupla[2] +
"&Telefono1=" + tupla[3] + "&Telefono2=" + tupla[4] + "&Cellulare1=" + tupla[5] + "&Cellulare2=" + tupla[6]
+ "&Email1=" + tupla[7] + "&Email2=" + tupla[8] + "&Note=" + tupla[9]);
dispatcher.forward(request, response);
}
/*RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/PageVis.jsp?nome=MIONOME" + "&indirizzo1=" + bean.getIndirizzo1() + "&indirizzo2=" + bean.getIndirizzo2() +
"&telefono1=" + bean.getTelefono1() + "&telefono2=" + bean.getTelefono2() + "&cellulare1=" + bean.getCellulare1() + "&cellulare2=" + bean.getCellulare2()
+ "&email1=" + bean.getEmail1() + "&email2=" + bean.getEmail2() + "¬e=" + bean.getNote());
dispatcher.forward(request, response);*/
//String message = "MODIFICA EFFETTUATA CON SUCCESSO!!!";
//JOptionPane.showMessageDialog(new JFrame(), message, "Information", JOptionPane.INFORMATION_MESSAGE);
}
}
}
// Funzione per sapere la successiva pagina da lanciare
// pagina: nome a cui è associata la pagina da lanciare
public void paginaDaCaricare(String pagina, HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (pagina.equals("Inserimento")) {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/PageIns.jsp");
dispatcher.forward(request, response);
}
else if (pagina.equals("Modifica")) {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/PageMod.jsp");
dispatcher.forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Gestisce tutta la logica di controllo della Rubrica Telefonica";
}
}
Quindi nella servlet viene riconosciuto il tipo di pagina e della corrispondente azione, viene creato un Bean (mantenuto dal rif. bo), poi si passa al riconoscimento dell'azione, che in questo caso è Visualizza; di conseguenza si entra nel caso in cui azione è "Visualizza", ed in listaContatti (che è una LinkedList di array di stringhe) mi faccio ritornare dal metodo "visualizzaContatti" del Bean bo, la lista dei contatti presenti in rubrica: