Struts
¿ Qué es Struts ?
n
n
Framework OpenSource para implementar aplicaciones web con servlets y JSP según el patrón arquitectónico Model-View-Controller Subproyecto de Jakarta
n
Autor principal: Craig R. McClanahan
n
n n
n
Funciona sobre cualquier servidor de aplicaciones web que implemente las APIs de servlets y JSP Julio 2001: versión 1.0 Haganado gran relevancia en el mundo de las aplicaciones web Java Paquetizado en un fichero .jar
¿ Qué proporciona Struts ?
n n
Un servlet Front Controller y clases relacionadas Un gran número de acciones JSP
n n
View Helpers La mayor parte de las que se necesitan en una situación real Implementa javax.sql.DataSource
n
Un pool genérico de conexiones a una BD relacional
n
Elpatrón Front Controller en Struts (1)
javax.servlet.http.HttpServlet
org.apache.struts.action.ActionServlet
0..n
org.apache.struts.action.Action + perform
# doGet # doPost
org.apache.struts.action.ActionForm + reset + validate Action1 ActionN
...
ActionFormN
ActionForm1
...
El patrón Front Controller en Struts (2)
n
ActionServlet
n n
Servlet Front Controller Enweb.xml se especifica que todas las URLs que impliquen procesamiento (por GET o POST) vayan a este servlet
n
Ej.: las URLs que termine en .do
n
Clases ActionForm
n
Si el programador lo desea, puede acceder a los parámetros de la request a través de un JavaBean que extiende ActionForm
n
Especialmente útil en formularios
n
Clase Action => método perform
n
n
n
nAccede a los parámetros de la request, directamente o vía el ActionForm correspondiente Realiza la operación invocando un método de un Session Facade del modelo o una fachada del controlador Deja el resultado devuelto por el método en la request o en la sesión Devuelve un objeto ActionForward, que representa la URL que hay que visualizar a continuación (sendRedirect o forward)
El patrón FrontController en Struts (3)
n
Fichero de configuración
n
Clases ActionForm que usa nuestra aplicación
n n
Nombre lógico (ej.: loginForm) Nombre completo de la clase (ej.: es.udc.fbellas.j2ee.strutstutorial.portal3.http .view.actionforms.LoginForm) URL de tipo path relativo a contexto (ej.: /Login)
n
n
URLs que implican procesamiento
n
No llevan el .do final
n
n
Nombrecompleto de la clase Action (ej.: es.udc.fbellas.j2ee.strutstutorial.portal3.http .controller.actions.LoginAction) Nombre lógico de la clase ActionForm asociada
El patrón Front Controller en Struts (y 4)
n
Fichero de configuración (cont)
n
Definiciones de nombres lógicos de URLs
n
n n
Nombre que usan las acciones cuando devuelven un ActionForward (ej.: ShowMainPage) sendRedirecto forward URL a invocar (ej.: /MainPage.jsp)
n
n
Cuando el servlet ActionServlet arranca (init), lee el fichero de configuración Crea una única instancia de cada clase Action
n
n n
No se crea una instancia de una clase Action por cada petición que se recibe Tienen que ser thread-safe Misma situación que cuando se trabaja con servlets
Acciones JSP
n
Bean
n
n
Imprimirel valor de las propiedades de JavaBeans de manera segura Soporte para internacionalización de mensajes Generación de HTML básico
n n
n
HTML
n
Campos de entrada en formularios Enlaces (con URL rewriting)
n
Logic
n n
Si mayor que, si menor que, etc. Iteración sobre colecciones de objetos Caso particular del patrón Composite View Lo veremos con MiniBank y MiniPortal
nTemplate
n n
Arquitectura MVC con Struts
n
Modelo
n
Clases independientes de la vista y el controlador Quizás se necesite extender el servlet ActionServlet Conjunto de clases Action Interactúan con el modelo y seleccionan la siguiente vista (dejándole los datos en uno de los cuatro posibles ámbitos, normalmente request o session) Conjunto de clases ActionForm Conjunto de páginas JSP
n...
Regístrate para leer el documento completo.