Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    spring: post su un controller da jsp

    Salve a tutti ho un progetto server basato su spring.
    Nella cartella webapps ho il file index.jsp e la cartella WEB-INF.
    Sempre sotto webapps ho messo le cartelle css, js e img mentre sotto WEB-INF ho la cartella pages con le jsp

    Il file web.xml è così definito:

    codice:
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	version="2.5">
    	
      <display-name>FICEP IDPProxy</display-name>
      
        <servlet>
    		<servlet-name>mvc-dispatcher</servlet-name>
    		<servlet-class>
                            org.springframework.web.servlet.DispatcherServlet
                    </servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    
    	<servlet-mapping>
    		<servlet-name>mvc-dispatcher</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    	
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    	</context-param>
    	
    	<servlet-mapping>
        	<servlet-name>default</servlet-name>
       		<url-pattern>/css/*</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
        	<servlet-name>default</servlet-name>
       		<url-pattern>/img/*</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
        	<servlet-name>default</servlet-name>
       		<url-pattern>/js/*</url-pattern>
    	</servlet-mapping>
    	
    	<listener>
    		<listener-class>
                       org.springframework.web.context.ContextLoaderListener
            </listener-class>
    	</listener>
    	
    </web-app>
    e il file mvc-dispatcher-servlet.xml è così definito:

    codice:
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans     
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd">
    
    
    	<context:component-scan base-package="it.telecomitalia.ficep.idpproxy" /> 
    	
        <bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix">
    			<value>/WEB-INF/pages/</value>
    		</property>
    		<property name="suffix">
    			<value>.jsp</value>
    		</property>
    	</bean>
    	
    </beans>
    In una delle pagine jsp in una form richiamo un controller definito nel codice java nel progetto nel seguente modo:

    codice HTML:
    <form:form name="myform" method="post" action="/mycontroller"> 
    e provando il giro funziona correttamente.
    Mi hanno però fatto notare che questa soluzione non rispetterebbe le best-practices di spring e vorrei capire dove sto sbagliando (al di la del corretto funzionamento).
    Grazie a chi risponderà.

    Ciao
    Sandro

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Sposto nel forum Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da DarthSandr Visualizza il messaggio
    questa soluzione non rispetterebbe le best-practices di spring
    Riferito esattamente a cosa? Solo al <form:form> o anche al resto?

    Perché almeno per quanto si vede ci sono comunque delle cose che in Spring si fanno (e andrebbero fatte) diversamente.

    Innanzitutto se hai un form avrai sicuramente dei campi. Con cosa li visualizzi nel html? Dovresti aver usato i vari <form:input>, <form:textarea> ecc... E lato Java avere una classe che modella il form con il metodo del controller che riceve questo oggetto.

    Poi se ci sono risorse "statiche" (es. css, js e altro) di norma non si mappa direttamente un url-pattern al "default" servlet. Con Spring basta usare il <mvc:resources> nella configurazione web. Es.

    <mvc:resources mapping="/css/**" location="/css/" />

    Poi ancora, nelle web application è tipico avere 2 application context, uno è il "root" application context e contiene tipicamente tutti i bean, service, dao ecc... della applicazione e l'altro è il application context del DispatcherServlet che contiene bean, controller e altro legato solo alla parte web/mvc e che ha come "parente" il root application context.
    Nel tuo caso invece tutto quanto (mvc compreso) l'hai definito nel root application context. Non è di per sé sbagliato, cioè funziona.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.