Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-07-2011, 22:16   #1
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
[JAVA EE] Funzionamento Spring MVC

Ragazzi non riesco a capire il funzionamento dell'implementazione del pattern MVC utilizzando il framework Spring.
Quello che vorrei realizzare ora è molto semplice, creare una pagina web con un link, dove cliccando si passa ad un'altra pagina.
Io ho creato un Web Project con Netbeans specificando l'utilizzo del framework MVC Spring, di conseguenza lui mi ha generato automaticamente i seguenti file:
dispatcher-servlet.xml
Codice:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
    
    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
            </props>
        </property>
    </bean>
    
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />
    
    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
    
</beans>
applicationContext.xml
Codice:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
    <!--bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties" />
    
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}" /-->
    
    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
    
</beans>
Io invece ho modificato il file index.html in questo modo:
index.html
Codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>Welcome to Spring Web MVC project</title>
    </head>

    <body>
        
        <a href="http://localhost:8080/TestPresentation/showApartmentsList.jsp?action=showApartmentsList">
            Visualizza Appartamenti
        </a>  
    </body>
</html>
e creato anche la view e il controller:
ApartmentController.java
Codice:
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ApartmentController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return new ModelAndView("showApartmentsList.jsp");
    }
    
}
showApartmentsList.jsp
Codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Lista Appartamenti</h1>
    </body>
</html>
Ora credo che sia necessario modificare opportunamente il file dispatcher-servlet.xml, ma non so come, perchè non riesco ad interpretare correttamente il suo significato. Qualcuno potrebbe consigliarmi su come proseguire l'implementazione?
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2011, 22:49   #2
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
A occhio e croce, l'errore è qui:

Codice:
        <a href="http://localhost:8080/TestPresentation/showApartmentsList.jsp?action=showApartmentsList">
            Visualizza Appartamenti
        </a>
Non dovresti puntare il file jsp direttamente nel link, ma puntare all'URL "mappata" da Spring sul controller. Siccome hai configurato il ControllerClassNameHandlerMapping , e il controller si chiama ApartmentController, l'URL dovrebbe essere qualcosa come "apartmentController": questo dovrebbe "attivare" l'esecuzione del metodo doGet che ritorna la vista, cioè il file jsp.

Se posso permettermi un consiglio, non riferirti all'URL del controller in termini assoluti, ma in modo relativo, così:

Codice:
        <a href="showApartments">
            Visualizza Appartamenti
        </a>
Infatti, il riferimento al protocollo, all'host, alla porta e al contesto (TestPresentation) sono automatici: così avrai meno problemi quando farai il deployment in un'altra configurazione.

Btw, non devi indicare l'estenzione jsp della vista, è già specificato nell'dispatcher-servlet.xml; il codice diventerebbe così.

Codice:
return new ModelAndView("showApartmentsList");
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2011, 08:10   #3
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Allora, io ho corretto i file index.jsp e ApartmentController.java come da te suggerito. I codici risultanti sono i seguenti:
index.html
Codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>Welcome to Spring Web MVC project</title>
    </head>

    <body>
        
        <a href="showApartmentsList">
            Visualizza Appartamenti
        </a>
   
    </body>
</html>
ApartmentController.java
Codice:
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ApartmentController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return new ModelAndView("showApartmentsList");
    }
    
}
Il problema però persiste, perchè io ho come l'impressione che il controller non sia ancora registrato nel file di configurazione di Spring e quindi le richieste che arrivano non vengono gestite. Mi sbaglio?
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2011, 09:58   #4
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Sono riuscito a risolvere il problema finalmente mappando le pagine nel dispatcher-servlet.xml e modificando la pagina index.jsp. Quello che segue è il codice funzionante, volevo chiedervi se è formalmente corretto:

dispatcher-servlet.xml
Codice:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
    
    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
                <prop key="showApartmentsList.htm">apartmentController</prop>
                <prop key="insertApartment.htm">apartmentController</prop>
                <prop key="deleteApartment.htm">apartmentController</prop>
            </props>
        </property>
    </bean>
    
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />
    
    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
    
    <bean name="apartmentController" class="controller.ApartmentController"/>
     
</beans>
index.jsp
Codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>Homepage Amministratore</title>
    </head>

    <body>
        <h1>Homepage Amministratore</h1>
        <a href="showApartmentsList.htm?action=showApartmentsList">
            Visualizza Appartamenti
        </a>
        <br>
        <a href="insertApartment.htm?action=insertApartment">
            Inserisci Appartamento
        </a>
        <br>
        <a href="deleteApartment.htm?action=deleteApartment">
            Cancella Appartamento
        </a>
      
    </body>
</html>
ApartmentController.java
Codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

/**
 *
 * @author luca
 */
public class ApartmentController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String actionName;
        
        actionName = (String) request.getAttribute("action");
        return new ModelAndView(actionName);
    }
    
}
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2011, 11:03   #5
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Ora che sono riuscito a procedere con lo sviluppo dell'applicazione ho un altro dubbio.
Il mio controller invoca un servizio che gli restituisce una lista di oggetti da me creati, e che il controller aggiunge al Model. Ma se io li aggiungo direttamente sono costretto ad aggiungere del codice Java all'interno della pagina JSP cosa che io vorrei evitare. Come potrei fare?
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Caos nei cieli europei: attacco informat...
Volkswagen ferma la produzione di ID.Buz...
Super sconti del weekend Amazon: 5 novit...
Dreame non si ferma più: tra le n...
Samsung Galaxy Buds3 FE a meno di 95€ su...
Praticamente regalate: 135€ per le Squie...
Si rinnovano i coupon nascosti di settem...
Amazon sconta i componenti: occasioni d'...
Vibe coding: esplode la domanda di esper...
Ring Intercom su Amazon: citofono smart ...
Addio regie complicate: un'AI gestir&agr...
Xbox, nuovo aumento dei prezzi negli Sta...
Adesso ci si può laureare in stor...
Impact.com ridefinisce il performance ma...
Nintendo non considera le mod dannose pe...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:38.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v