• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
STRUTS (MVC e Java)
 

STRUTS (MVC e Java)

on

  • 10,143 views

Introdución o uso de struts nas I Xornadas de Programación Web en Software Libre de Ousli

Introdución o uso de struts nas I Xornadas de Programación Web en Software Libre de Ousli

Statistics

Views

Total Views
10,143
Views on SlideShare
10,049
Embed Views
94

Actions

Likes
4
Downloads
568
Comments
0

7 Embeds 94

http://apconcursos.blogspot.com 66
http://hpfloresj.blogspot.com 15
http://www.slideshare.net 9
http://www.ninjaproxy.com 1
http://s3.amazonaws.com 1
http://www.htmleando.com 1
http://www.slideee.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    STRUTS (MVC e Java) STRUTS (MVC e Java) Presentation Transcript

    • PROGRAMACIÓN WEB CO  FRAMEWORK STRUTS Beatriz Montero Fernández ­  http://ousli.org
    • ÍNDICE 1) INTRODUCCIÓN 2) J2EE 3) MVC 4) INSTALACIÓN DE UN ENTORNO DE DESENVOLVEMENTO  EN UBUNTU  7.04 5) STRUTS ●  MODELO ●  VISTA ●  CONTROLADOR
    • INTRODUCCIÓN ¿QUE É STRUTS?  Framework libre para o desenvolvemento de aplicacións web ➢  Baixo a plataforma J2EE ➢  Baixo o patrón MVC ➢
    • J2EE Conxunto de estándares e especificacións para o desenvolvemento de  ● aplicación empresarias baseadas en compoñentes de software modulares,  que se executan sobre un servidor de aplicacións, baixo a tecnoloxía Java Java + Compoñentes adicionais orientados a empresas Inclúe: ● Especificacións de API e define como coordinalas:JDBC,RMI,JMS,  • Servizos Web, XML,... Especificacións únicas: EJB's, servlets, JSP's,.. • Varias tecnoloxías de servizos web •
    • J2EE
    • J2EE CARACTERÍSTICAS ­ Aplicacións de empresas portables, escalables, integrables con tecnoloxías  anteriores ­ Desarrolladores no desenvolvemento, deseñadores no deseño ­ Pouco ou ningún gasto: ✔ Gratuito ✔ Moitas ferramentas de código aberto: NetBeans IDE • Eclipse IDE • Apache Ant • Apache Maven • Junit • Apache Tomcat • ... • ✔
    • MVC CONTROLADOR: Único que recibe as peticións dos usuarios ● MODELO: estado interno da aplicación (entidades e regras de negocio) ● VISTAS: presentan o estado interno do sistema ●
    • MVC MODELO I (MVC1)
    • MVC MODEL II (MVC2)
    • INSTALACIÓN DE UN ENTORNO DE DESARROLLO  EN UBUNTU 7.04 SDK Java Apache Tomcat EasyEclipse Struts MySQL
    • STRUTS TÉRMINOS ESPECÍCOS Actions ➢ Posible acción a invocar ➢ Regras de negocio ActionMapping ➢ Mapea as URL's  ActionForm ➢ Formulario ➢ Encapsulan parámetros das peticións dos clientes ActionServlet.  ➢ O controlador struts­config.xml. ➢  “A intelixencia do Controlador”
    • STRUTS FUNCIONAMENTO
    • STRUTS: MODELO JavaBeans  ●   Compoñente software que pode ser  reutilizable.  ●   Implementan la interfaz serializable ● Constructor sen argumentos ●   Propiedades accesibles mediante getXXX() y  setXXX() ●   Distínguense:  JavaBeans de estado  JavaBeans 'ActionForm'  JavaBeans de Lóxica de Negocio
    • STRUTS: MODELO Beans 'ActionForm'  Herdan da clase org.apache.struts.action.ActionForm ● ● Non lóxica de negocio ● Validación automática: validate() ● No struts­config.xml: <form­beans>            <form­bean name=quot;loginFormquot; type=quot;com.empresa.LoginFormquot;/>            <form­beans> <action path=quot;/sloginquot;  type=quot;com.empresa.LoginActionquot; name=quot;loginFormquot; scope=quot;requestquot;  validate=quot;truequot; input=quot;/jsp/login.jspquot;>                       ...                 </action>
    • STRUTS: MODELO Beans Lóxica de Negocio  Clases que implementan a lóxica ● ● Reciben os beans de estado para manipulalos ● Independentes e reutilizables. ● Segundo a complexidade da aplicación: • JavaBeans ordinarios que interaccionan con  JavaBeans de estado • JavaBeans ordinarios que acceden a BD usando  JDBC • EnterpriseJavaBeans(EJB's)
    • STRTUS: MODELO Acceso a BD Relacionales Pool de conexións ● As conexións un base de datos son caras, existe un número limitado de  conexións que se poden mater abertas nun servidor en función da súa memoria,  potencia, do sistema ao que accedemos ­> non podemos arriesgarnos a esgotar  as conexións. ● Conxunto limitado de conexión que se reutilizan continuamente para dar  servizos aos clientes para aumentar a escalabilidade e o rendemento, o que fai  posible que as conexións non se este abrindo continuamente. ● O pool de conexións inicializase con un número de conexións determinado. ● Os clientes abren a conexión, acceden ao servizo e por último pechan a  conexión.  ● É importante que o cliente abra e peche a conexión, porque si non se estaría  devolvendo o pool, e correríamos o risco de esgotar os recursos do noso  servidor.
    • STRUTS: MODELO Pool de conexións de Struts • No struts­config.xml: <data­sources>  <data­source  type=quot;org.apache.commons.dbcp.BasicDataSourcequot;>  <set­property property=quot;driverClassNamequot; value=quot;com.mysql.jdbc.Driverquot; />  <set­property property=quot;urlquot; value=quot;jdbc:mysql://localhost/carritoquot; /> <set­property property=quot;usernamequot; value=quot;rootquot; /> <set­property property=quot;passwordquot; value=quot;quot; /> <set­property property=quot;maxActivequot; value=quot;10quot; /> <set­property property=quot;maxWaitquot; value=quot;5000quot; /> <set­property property=quot;defaultAutoCommitquot; value=quot;falsequot; /> <set­property property=quot;defaultReadOnlyquot; value=quot;falsequot; /> <set­property property=quot;validationQueryquot; value=quot;SELECT COUNT(*) FROM  productoquot; />  </data­source> </data­sources>
    • STRUTS: MODELO Pool de conexións con Struts. ● Librerías que precisamos: commons­pool1.2.1.jar • mysql­connector­java­5.0.3­bin.jar • commons­dbcp1.2.1.jar • ● Accendo ao pool de conexións: A través de javax.sql.DataSource • ... javax.sql.DataSource dataSource = getDataSource(httpServletRequest); con = dataSource.getConnection(); PreparedStatement pstmt = con.prepareStatement(quot;SELECT * FROM tutoriales  WHERE id < ?quot;); ...
    • STURTS: VISTA JSP's ● ●Mensaxes internacionalizados ●Librerías de Etiquetas personalizadas de  JSP ●Maquetación Tiles
    • STRUTS: VISTA Mensaxes internacionalizados  Struts permite construír aplicacións internacionalizadas e localizadas: ● •  Locale – Elección do país, idioma e formateo •  ResourceBundle – Mensaxes en varios idiomas •  PropertyResourceBundle – Implementación do ResourceBundle.  Ficheiro de  recursos •“nome=valor” •  MessageFormat – Reemplezar porcións dun string dunha mensaxe,  orde das palabras en función do idioma •  MessageResources – Paquetes de recursos como bases e datos.  •
    • STRUTS: VISTA Mensaxes internacionalizados Paquetes de recursos: ● MyResources.property – Mensaxes do idioma por defecto do servidor • •inglés ­> prompt.hello=hello MyResources_XX.property – Mensaxes no idioma XX • •español ­> prompt.hello=Hola ●No web.xml: <servlet>     <init­param>         <param­name>application</param­name>         <param­value>com.mycompany.mypackage.MyResources</param­value>      </init­param>       <.../>    </servlet>
    • STRUTS: VISTA Librerías de Etiquetas Personalizadas de JSP <input type=”text” name=”username” value=”<%=  loginBean.getUsername() %>”/> vs <html:text property=”username”> struts­html: formularios, mesaxes de erro, visualización de mensaxes ● struts­bean: traballar e definir beans  ● struts­logic: manexar a xeración condicional de saída de texto, bucles, ... ● struts­tiles: maquetación mediante plantillas ●
    • STRUTS: VISTA Tiles Maquetación da aplicacións Web mediante plantillas ● ●Construcción de páxinas en base a plantillas con Struts: Plantilla que define elementos estáticos e áreas donde inserir outros contidos. • Definir a plantilla no arquivo: tiles­def.xml • <tiles­definitions>   <definition name=quot;plantillaAquot; path=quot;/jsp/defaultLayout.jspquot;>    <put name=quot;headerquot; value=quot;/jsp/header.jspquot; />       <put name=quot;menubarquot; value=quot;/jsp/mainMenu.jspquot; />    <put name=quot;copyleftquot; value=quot;/jsp/left.jspquot; /> </definition> <tiles­definitions> A páxina real que utiliza a plantilla insertando textos e outras porcións  • dinámicamente Porcións particulares reutilizables •
    • STRUT: CONROLADOR  Único controlador: ActionServlet que a través do  ● struts­config mapea unha URI a unha Action ● Escribir a Action ● Configurar o ActionMapping(en XML) no struts­ conf.xml ● Configurar o ficheiro descriptor de despregue:  web.xml
    • STRUTS: CONTROLADOR Action ● Obxectivo: procesar unha solicitude mediante o  método execute() 1.Validar o estado actual da sesión do usuario 2.Realiza o procesamento requerido para tratar a  solicitude 3.Actualizar o estado do sistema 4.Devolve un obxecto ActionForward que  identifica a onde se debe reenviar o control da  aplicación, mediante o método findForward()
    • STRUTS: CONTROLADOR DispatchAction 1. Definimos a clase que agrupará as diferentes accións public class XestionLibrosAction extends DispatchAction{  ....} 2. Definimos un método por cada acción: public ActionForward altaLibro(ActionMapping mapping, ActionForm form,  HttpServletRequest request, HttpServletResponse response) throws  Exception{ Implentación da lóxica para dar de alta un libro } public ActionForward modificacionLibro(ActionMapping mapping,  ActionForm form, HttpServletRequest request, HttpServletResponse  response) throws Exception{ Implentación da lóxica para modificar un libro
    • STRUTS: CONTROLADOR DispatchAction 3. Indicar o servlet que acción executar mediante un parámetro 'action': <action path=”/altaLibros” type=”com.tutorial.libros.XestionLibrosAction” name=”libro” parameter=”action” input=”/altaLibros.jsp”> </action> <action path=”/baixaLibros” type=”com.tutorial.libros.XestionLibrosAction” name=”libro” parameter=”action” input=”/baixaLibros.jsp”> </action> ...
    • STRUTS: CONTROLADOR DispatchAction 4. Darlle valor a ese parámetro 'action' Na altaLibro.jsp: <html:hidden property=”action” values=”altaLibro”/> Na baixaLibro.jsp: <html:hidden property=”action” values=”baixaLibro”/>
    • STRUTS: CONTROLADOR Implementación do ActionMapping en struts­ config.xml
    • STRUTS: CONTROLADOR Configurar o ficheiro descriptor de despregue: web.xml Obxectivo. Indicar os compoñentes Struts que vamos utilizar: ● ServletAction <servlet>   <servlet­name>action</servlet­name>   <servlet­class>     org.apache.struts.action.ActionServlet   </servlet­class>   <init­param>     <param­name>config</param­name>     <param­value>       /WEB­INF/struts­config.xml     </param­value>   </init­param>   <init­param>     <param­name>debug</param­name>     <param­value>2</param­value>   </init­param>   <init­param>     <param­name>mapping</param­name>     <param­value>       org.apache.struts.example.ApplicationMapping     </param­value>   </init­param> </servlet>
    • CONTROLADOR: STRUTS Configurar o ficheiro descriptor de despregue: web.xml Mapeo do ServletAction: Define as URL's a ser procesadas polo ActionServlet a)   <servlet­mapping>      <servlet­name>action</servlet­name>       <url­pattern>/execute/*</url­pattern>       </servlet­mapping>  URI: /logon    URL: www.mycompany.com/myApplication/execute/logon b)  <servlet­mapping>      <servlet­name>action</servlet­name>           <url­pattern>*.do</url­pattern>       </servlet­mapping> URI: /logon     URL:www.mycompany.com/myApplication/logon.do
    • CONTROLADOR: STRUTS Configurar o ficheiro descriptor de despregue: web.xml Librería e etiquetas de Struts: <taglib>       <taglib­uri>/WEB­INF/struts­bean.tld </taglib­uri>    <taglib­location>/WEB­INF/struts­bean.tld</taglib­location> </taglib> <taglib>      <taglib­uri>/WEB­INF/struts­html.tld</taglib­uri>      <taglib­location>/WEB­INF/struts­html.tld</taglib­location> </taglib> <taglib>     <taglib­uri>/WEB­INF/struts­logic.tld</taglib­uri>     <taglib­location>/WEB­INF/struts­logic.tld</taglib­location> </taglib> <taglib>      <taglib­uri>/WEB­INF/struts­template.tld</taglib­uri>      <taglib­location>WEB­INF/struts­template.tld</taglib­location> </taglib>
    • STRUTS ¿É STRUTS A MELLOR OPCIÓN PARA  TÓDOLOS PROXECTOS? DEPENDE...
    • Gracias pola atención!! PROGRAMACIÓN WEB CO  FRAMEWORK STRUTS Beatriz Montero Fernández ­  http://ousli.org