lunedì 24 giugno 2013

Integrazione JSTL e sviluppo Modello-Vista integrato

Creiamo una cartella jsp dentro WEB-INF e una pagina include.jsp dentro jsp. Spostiamo dentro jsp la pagina hello.jsp :






Hello.jsp :



<%@ include file="/WEB-INF/jsp/include.jsp"%><html>
<head>
<title>Hello :: Spring Application</title>
</head>
<body>
        <h1>Hello - Spring Application</h1>
        <p>
                 Greetings, it is now
                 <c:out value="${now}" />
        </p>
</body>
</html>

Include.jsp:



<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


Aggiorniamo index.jsp :



<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%-- Redirected because we can't set the welcome page to a virtual URL. --%>
<c:redirect url="/hello.htm"/>


Infine scarichiamo da qualche parte la libreria jstl.jar , ad esempio da qui, e copiamola nelle nostre librerie.

Editiamo il controller HelloController.java:



package springapp2.web;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.Date;

public class HelloController implements Controller {

    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String now = (new Date()).toString();
        logger.info("Returning hello view with " + now);

        return new ModelAndView("WEB-INF/jsp/hello.jsp", "now", now);
    }

}

Possiamo testare le modifiche, dopo aver fatto il build:



<project name="Ant_Project" basedir="." default="creazionestruttura">
        <property file='build.properties'/>
        <target name="info">
                 <echo message="Inizio deploy di ${applicazione}" />
                 <echo message="${tomcat.home}" />
        </target>

        <target name="pulizia" depends="info">
                 <echo message="Pulizia della struttura" />
                 <delete dir="${tomcat.home}/webapps/${applicazione}" />
        </target>

        <target name="creazionestruttura" depends="pulizia">
                 <echo message="Creazione delle directory" />
                 <mkdir dir="${tomcat.home}/webapps/${applicazione}" />
                 <mkdir dir="${tomcat.home}/webapps/${applicazione}/WEB-INF" />
                 <mkdir dir="${tomcat.home}/webapps/${applicazione}/WEB-INF/classes" />
                 <mkdir dir="${tomcat.home}/webapps/${applicazione}/WEB-INF/lib" />
                 <mkdir dir="${tomcat.home}/webapps/${applicazione}/WEB-INF/jsp" />
                 <echo message="copio i file" />
                 <copy todir="${tomcat.home}/webapps/${applicazione}/WEB-INF/classes">
                         <fileset dir="${EElavoro}/${applicazione}/bin">
                                  <include name="**/*.class"/>
                         </fileset>
                 </copy>
                 <copy todir="${tomcat.home}/webapps/${applicazione}/WEB-INF">
                         <fileset dir="${EElavoro}/${applicazione}/war/WEB-INF">
                                  <include name="**/*.xml"/>
                         </fileset>
                 </copy>
                 <copy todir="${tomcat.home}/webapps/${applicazione}">                      
                         <fileset dir="${EElavoro}/${applicazione}/war">
                                  <include name="**/*.html"/>      
                                  <include name="**/*.jsp"/>               
                         </fileset>
                 </copy>
                 <copy todir="${tomcat.home}/webapps/${applicazione}/WEB-INF/lib">
                         <fileset dir="${EElavoro}/${applicazione}/war/WEB-INF/lib">
                                  <include name="**/*.jar"/>
                         </fileset>
                 </copy>
                 <copy todir="${tomcat.home}/webapps/${applicazione}/WEB-INF/jsp">
                         <fileset dir="${EElavoro}/${applicazione}/war/WEB-INF/jsp">
                                  <include name="**/*.jsp"/>
                         </fileset>
                 </copy>
        </target>
 
</project>


all'indirizzo http://localhost:8090/springapp2

Quando si fa la richiesta all'indirizzo sopra si arriva alla pagina di benvenuto, index.jsp. Questa al suo interno contiene un redirect che ci spedisce verso hello.htm. La gestione del redirect è effettuata dalla DispatcherServlet che a sua volta delega la nostra richiesta al controller, HelloController . Il controller mette qualcosa dentro il modello, in questo caso mette l'ora (now) , e alla fine rende disponibile il modello alla vista, cioè hello.jsp
 

Nessun commento:

Posta un commento