Categorías
Struts 2

Serie de tutoriales de Struts 2: Aplicación de muestra – Módulo de inicio de sesión

Bienvenido a la serie de tutoriales de Struts 2, donde exploraremos cómo crear una aplicación web utilizando Struts 2.

En este tutorial, primero crearemos un módulo de inicio de sesión muy simple, luego agregaremos características de Hibernate y Tiles, Ajax, Interceptor, Validator, etc. Finalmente, será una aplicación web Struts 2 completamente funcional – «Quick Memo».

Antes de comenzar, es posible que desee ver un video de 10 minutos para tener una idea básica de cómo usar Struts 2.

1. Objetivo de esta aplicación de muestra

Objetivo: módulo de inicio de sesión.

Finalmente, se ve así.

Cuando inicie sesión correctamente, muestra:

Cuando el inicio de sesión falla, muestra:

2. Herramientas y bibliotecas necesarias

Antes de comenzar con nuestro ejemplo, necesitamos varias herramientas y bibliotecas. Lo siguiente es lo que estoy usando. Por supuesto, puede utilizar una versión superior. 1) JDK 1.5 o superior. 2) Tomcat 6.0 3) Eclipse IDE para desarrolladores de Java EE. 4) Puntales 2.0.14. Archivos JAR necesarios para esta aplicación.

  • commons-logging-1.0.4.jar
  • freemarker-2.3.8.jar
  • ognl-2.6.11.jar
  • struts2-core-2.0.12.jar
  • xwork-2.0.6.jar

3. Primeros pasos

Cree un proyecto web dinámico.

# note que el directorio de mi proyecto es: C: eclipseworkspace Struts2Login
Copie los archivos JAR necesarios en WebContent-> WEB-INF-> carpeta lib en el directorio del proyecto. Ahora, su proyecto debería gustarle esto.

4. Configurar archivo web.xml

Establezca Struts2 como filtro en el archivo web.xml. Si no entiende por qué configurarlo como filtro, consulte aquí.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>Struts2 Login</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
 
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>Login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

5. Crear clase de acción de inicio de sesión

Tenga en cuenta que la clase de acción anterior contiene dos campos, nombre de usuario y contraseña. Mantendrán los valores pasados ​​desde el formulario y también contienen un método authenticate () que autenticará a los usuarios. Normalmente, esto se puede configurar con LDAP o Base de datos. Pero aquí para una demostración simple, simplemente verificamos si el nombre de usuario es «admin» y la contraseña es «admin». El método authenticate () devuelve una cadena que determina la página de resultados.

LoginAction.java

package com.programcreek.struts2;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class LoginAction extends ActionSupport{
	private String username;
	private String password;
 
	public String authenticate() {
 
		if (this.username.equals("admin")
				&& this.password.equals("admin")) {
			return "success";
		} else {
			addActionError(getText("error.login"));
                        //a function from ActionSupport, to get properties values from properties file
                        //we will explore this below.
			return "error";
		}
	}
 
	public String getUsername() {
		return username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}
 
	public String getPassword() {
		return password;
	}
 
	public void setPassword(String password) {
		this.password = password;
	}
}

6. Crear paquete de recursos

ResourceBundle es una entidad Java muy útil que ayuda a separar los contenidos estáticos del código fuente. Puede contener algunos mensajes estáticos, como nombres de elementos de formulario. Definimos un archivo ApplicationResources.properties para nuestra aplicación. Este archivo debe estar presente en la carpeta WEB-INF / classes.

Ahora creamos una carpeta de origen llamada recursos como este.

ApplicationResources.properties

label.username= Username
label.password= Password
label.login= Login
error.login= Invalid Username/Password. Please try again.

7. Páginas JSP

Los archivos JSP deben colocarse bajo el Contenido web directorio.

Login.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Login Application</title>
</head>
<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:form action="login.action" method="post">
	<s:textfield name="username" key="label.username" size="20" />
	<s:password name="password" key="label.password" size="20" />
	<s:submit method="execute" key="label.login" align="center" />
</s:form>
</body>
</html>

Struts 2 – Aplicación de inicio de sesión

Welcome.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
 
<head>
<title>Welcome Page - Struts 2 - Login Application</title>
</head>
 
<body>
	<h2>Congratulations, <s:property value="username" />!</h2>
	Welcome to Struts 2 world.
</body>
</html>

¡Felicitaciones, !

Bienvenido al mundo de Struts 2.

8. archivo struts.xml

Cree el archivo struts.xml en el directorio de recursos como el archivo ApplicationResources.properties.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
	<constant name="struts.enable.DynamicMethodInvocation"
		value="false" />
	<constant name="struts.devMode" value="false" />
 
	<constant name="struts.custom.i18n.resources"
		value="ApplicationResources" />
 
	<package name="default" extends="struts-default" namespace="/">
 
		<action name="login" method="authenticate"
			class="com.programcreek.struts2.LoginAction">
			<result name="success">Welcome.jsp</result>
			<result name="error">Login.jsp</result>
 
		</action>
	</package>
</struts>

9. Hecho

Ejecute el proyecto ahora.

Próximo paso
Una vez que un usuario está autenticado, se mostrará el contenido del sitio web. Normalmente, el contenido proviene de la base de datos, por lo que el siguiente paso es crear una aplicación de base de datos simple con Hibernate.

-> Volver al índice.

Referencias:
Freemarker

Categorías
Struts 2

Serie de tutoriales de Struts 2: una sencilla aplicación de Hibernación

Hibernate es un servicio de consulta y persistencia relacional / de objetos potente y de alto rendimiento. Hibernate le permite desarrollar clases persistentes siguiendo el lenguaje orientado a objetos, incluyendo asociación, herencia, polimorfismo, composición y colecciones. Hibernate le permite expresar consultas en su propia extensión SQL portátil (HQL), así como en SQL nativo, o con Criterios orientados a objetos y API de ejemplo.

La función principal de esta aplicación es agregar un registro a la base de datos.

Herramientas y bibliotecas que necesitamos

1. JDK 1.5 o superior
2. Eclipse IDE
3. Hibernate Core 3.3.2.GA. Descargar Enlace.
Archivos JAR necesarios para esta aplicación:

4. Descarga de mysql-connector-java-5.0.8-bin.jar Enlace.

Paso 1: configuración de la base de datos.

Cree una base de datos «hibernar» en la base de datos MySQL. Cree una tabla «estudiante» utilizando el siguiente SQL.

CREATE TABLE /*!32312 IF NOT EXISTS*/ "student" (
  "student_id" BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  "first_name" VARCHAR(50) DEFAULT NULL,
  "last_name" VARCHAR(50) DEFAULT NULL,
  "address" VARCHAR(50) DEFAULT NULL,
  PRIMARY KEY ("student_id")
) AUTO_INCREMENT=4 /*!40100 DEFAULT CHARSET=utf8*/;

Paso 2: crear un objeto Java

Student.java

package com.programcreek.hibernate;
 
public class Student {
    private int studentId;
    private String firstName;
    private String lastName;
    private String address;
 
    public Student() {
    }
 
    public Student(String firstName, String lastName, String address){
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
    }
 
    public int getStudentId(){
        return studentId;
    }
 
    public void setStudentId(int studentId){
        this.studentId = studentId;
    }
 
    public String getFirstName(){
        return firstName;
    }
 
    public void setFirstName(String firstName){
        this.firstName = firstName;
    }
 
    public String getLastName(){
        return lastName;
    }
 
    public void setLastName(String lastName){
        this.lastName = lastName;
    }
 
    public String getAddress(){
        return address;
    }
 
    public void setAddress(String address){
        this.address = address;
    }
}

Paso 3: crear archivos de mapeo para objetos Java

Student.hbm.xml

<?xml version="1.0"?>
            <!DOCTYPE hibernate-mapping PUBLIC
                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
	<class name="com.programcreek.hibernate.Student" table="student">
		<id name="studentId" column="student_id">
			<generator class="increment" />
		</id>
		<property name="firstName" type="string" column="first_name" />
		<property name="lastName" type="string" column="last_name" />
		<property name="address" type="string" column="address" />
	</class>
 
</hibernate-mapping>

Paso 4: Cree el archivo de configuración de Hibernate

hibernate.cfg.xml

 <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 
<hibernate-configuration>
 
	<session-factory>
 
		<!-- Database connection settings -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
		<property name="connection.username">root</property>
		<property name="connection.password">admin</property>
 
		<!-- SQL dialect -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
 
		<!-- Echo all executed SQL to stdout -->
		<property name="show_sql">true</property>
 
		<property name="current_session_context_class">thread</property>
 
 
		<mapping resource="com/programcreek/hibernate/Student.hbm.xml" />
 
	</session-factory>
 
</hibernate-configuration>

Paso 5: Crear clase auxiliar de HibernateUtil

HibernateUtil.java

package com.programcreek.hibernate.util;
 
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
public class HibernateUtil {
 
      private static final SessionFactory sessionFactory;
 
      static {
          try {
              // Create the SessionFactory from hibernate.cfg.xml
              sessionFactory = new Configuration().configure().buildSessionFactory();
          } catch (Throwable ex) {
              // Make sure you log the exception, as it might be swallowed
              System.err.println("Initial SessionFactory creation failed." + ex);
              throw new ExceptionInInitializerError(ex);
          }
      }
 
      public static SessionFactory getSessionFactory() {
          return sessionFactory;
      }
}

Paso 6: cree una clase de prueba para insertar un registro

Test.java

import org.hibernate.Session;
import com.programcreek.hibernate.Student;
import com.programcreek.hibernate.util.HibernateUtil;
 
public class Test {
	public static void main(String[] args) {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();     
        Student s = new Student("firstname", "lastname", "address");
        session.save(s);
        session.getTransaction().commit();
	}
}

Finalmente, la estructura del archivo debería tener este aspecto.

Después de ejecutar la clase de prueba, el nuevo registro se agregará a su base de datos. Ahora hemos terminado con un caso más simple.

Categorías
Struts 2

Serie de tutoriales de Struts 2: cómo insertar mosaicos en su proyecto

Este tutorial se basa en Struts 2 Tutorial Series – Aplicación de inicio de sesión.

1. ¿Qué es Tiles?

Apache Tiles es un marco de creación de plantillas creado para simplificar el desarrollo de interfaces de usuario de aplicaciones web. Tiles le permite definir fragmentos de página que se pueden ensamblar en una página completa en tiempo de ejecución. Vea la instantánea a continuación.

2. Objetivo de esta aplicación

Agregaremos Tiles a nuestra aplicación de inicio de sesión. Después de un inicio de sesión de usuario,

una página bien formateada se mostrará así. Puedes descargar el código
aquí.

3. Herramientas y bibliotecas necesarias

Esta aplicación se basa en la aplicación de inicio de sesión, utiliza el mismo entorno.

1. JDK 1.5 o superior
2. Tomcat 6.0
3. Eclipse IDE para desarrolladores de Java EE
4. Struts 2.0.14 (enlace). Archivos JAR necesarios para esta aplicación. Enlace de descarga 1.
Enlace de descarga 2(permanente en hotfile.com)
5. Bibliotecas utilizadas.

4. Primeros pasos

Esto se basa en nuestra aplicación de inicio de sesión. Si no lo ha recorrido, puede hacerlo ahora. O también puede obtener el archivo requerido volviendo al tutorial o descargando este paquete.

5. Configuración de mosaicos en web.xml

Para configurar Tiles, se debe realizar una entrada para el oyente en web.xml. Abra web.xml de la carpeta WEB-INF y agregue el siguiente código en él.

web.xml

<listener>
		<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
	</listener>
	<context-param>
		<param-name>tilesDefinitions</param-name>
		<param-value>/WEB-INF/tiles.xml</param-value>
	</context-param>

Aquí está el último código.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>Struts2 Login</display-name>
 
	<listener>
		<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
	</listener>
	<context-param>
		<param-name>tilesDefinitions</param-name>
		<param-value>/WEB-INF/tiles.xml</param-value>
	</context-param>
		<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>Login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

6. Configuración del archivo tiles.xml

Cree un archivo tiles.xml en la carpeta WEB-INF y copie el siguiente código en él.

tiles.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
	<definition name="baseLayout" template="/BaseLayout.jsp">
		<put-attribute name="title" value="" />
		<put-attribute name="header" value="/Header.jsp" />
		<put-attribute name="menu" value="/Menu.jsp" />
		<put-attribute name="body" value="" />
		<put-attribute name="footer" value="/Footer.jsp" />
 
	</definition>
	<definition name="/welcome.tiles" extends="baseLayout">
		<put-attribute name="title" value="Welcome page" />
		<put-attribute name="body" value="/Welcome.jsp" />
	</definition>
	<definition name="/error.tiles" extends="baseLayout">
		<put-attribute name="title" value="Error page" />
		<put-attribute name="body" value="/Error.jsp" />
	</definition>
</tiles-definitions>

En el archivo tiles.xml, hemos definido un baseLayout usando la plantilla BaseLayout.jsp. Este diseño contiene atributos como encabezado, título, cuerpo, menú y pie de página. A continuación, se amplía el diseño y se definen nuevas definiciones para la página de bienvenida y la página de error. Cuando anulamos el diseño base, solo los atributos cambiados cambiarán para ser diferentes con el diseño base. Todos los demás atributos siguen siendo los mismos con el diseño base.

7. Archivo Struts.xml y clase LoginAction

Para demostrar los mosaicos, agregamos una función de cierre de sesión a la clase LoginAction.

LoginAction.java

package com.programcreek.struts2;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class LoginAction extends ActionSupport{
	private String username;
	private String password;
 
	public String authenticate() {
 
		if (this.username.equals("admin")
				&& this.password.equals("admin")) {
			return "success";
		} else {
			addActionError(getText("error.login"));
			return "error";
		}
	}
 
	public String logout() {
			return "logout";
	}
 
	public String getUsername() {
		return username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}
 
	public String getPassword() {
		return password;
	}
 
	public void setPassword(String password) {
		this.password = password;
	}
}

En el archivo struts.xml, agregamos etiquetas al paquete para invocar mosaicos para manejar solicitudes.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
	<constant name="struts.enable.DynamicMethodInvocation"
		value="false" />
	<constant name="struts.devMode" value="false" />
	<constant name="struts.custom.i18n.resources"
		value="ApplicationResources" />
 
	<package name="default" extends="struts-default" namespace="/">
		<result-types>
			<result-type name="tiles"
				class="org.apache.struts2.views.tiles.TilesResult" />
		</result-types>
 
		<action name="login" method="authenticate"
			class="com.programcreek.struts2.LoginAction">
			<result name="success" type="tiles">/welcome.tiles</result>
			<result name="error" type="tiles">/error.tiles</result>
		</action>
 
		<action name="logout" method="logout" 
			class="com.programcreek.struts2.LoginAction">
			<result name="logout">/Login.jsp</result>
		</action>
	</package>
</struts>

8. Creación de archivos JSP

Aquí están todos los archivos JSP.

BaseLayout.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!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><tiles:insertAttribute name="title" ignore="true" /></title>
	<link rel="stylesheet" type="text/css" media="all" href="style.css" />
</head>
<body id="home">
<div id="header">
	<tiles:insertAttribute name="header" />
</div>
<div id="wrap">
	<div id="content">
		<tiles:insertAttribute name="body" />
	</div>
	<div id="sidebar">
		<tiles:insertAttribute name="menu" />
	</div>
	<div id="footer">
		<tiles:insertAttribute name="footer" />
	</div>
</div>
</body>
</html>

Error.jsp

error page.

Footer.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
 
<%@ taglib prefix="s" uri="/struts-tags"%>
 
http://www.programcreek.com

Header.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<h1>Struts 2 Example</h1>

Ejemplo de Struts 2

Login.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Login Application</title>
</head>
<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:form action="login.action" method="post">
	<s:textfield name="username" key="label.username" size="20" />
	<s:password name="password" key="label.password" size="20" />
	<s:submit method="execute" key="label.login" align="center" />
</s:form>
</body>
</html>

Struts 2 – Aplicación de inicio de sesión

Menu.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:url id="testUrlId" namespace="/" action="logout">
</s:url>
<s:a errorText="Sorry your request had an error."
	href="%{testUrlId}">
	Logout
</s:a>

Aquí, tenga cuidado con cómo definir un enlace para desencadenar una acción.

Welcome.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
 
<head>
<title>Welcome Page - Struts 2 - Login Application</title>
</head>
<body>
	<h2>Congratulations, <s:property value="username" />!</h2>
	Welcome to Struts 2 world.
	<h3>What is Apache Tiles</h3>
	Apache Tiles is a templating framework built to simplify the 
	development of web application user interfaces. Tiles allows 
	authors to define page fragments which can be assembled into 
	a complete page at runtime. These fragments, or tiles, can be 
	used as simple includes in order to reduce the duplication of 
	common page elements or embedded within other tiles to develop
	 a series of reusable templates. These templates streamline the
	  development of a consistent look and feel across an entire 
	  application. Tiles grew in popularity as a component of the
	   popular Struts framework. It has since been extracted from 
	   Struts and is now integrated with various frameworks, such 
	   as Struts 2 and Shale.
</body>
</html>

¡Felicitaciones, !

Bienvenido al mundo de Struts 2.

¿Qué es Apache Tiles?

Apache Tiles es un marco de creación de plantillas creado para simplificar el desarrollo de interfaces de usuario de aplicaciones web. Tiles permite a los autores definir fragmentos de página que se pueden ensamblar en una página completa en tiempo de ejecución. Estos fragmentos, o mosaicos, se pueden usar como inclusiones simples para reducir la duplicación de elementos de página comunes o incrustados dentro de otros mosaicos para desarrollar una serie de plantillas reutilizables. Estas plantillas agilizan el desarrollo de una apariencia uniforme en toda la aplicación. Los mosaicos crecieron en popularidad como un componente del popular framework Struts. Desde entonces, se ha extraído de Struts y ahora está integrado con varios marcos, como Struts 2 y Shale.

style.css

@CHARSET "ISO-8859-1";
 
#header {
  border:1px solid blue;
  background-position:50% 0;
  background-repeat:repeat no-repeat;
  height:130px;
  padding: 10px;
}
 
#wrap {
  background-color:white;
  margin-bottom:0;
  margin-left:auto;
  margin-right:auto;
  margin-top:0;
  overflow-x:hidden;
  overflow-y:hidden;
  padding-left:10px;
  padding-right:10px;
  position:relative;
  width:980px;
}
 
#content {
  display:inline;
  float:left;
  font-size:100%;
  line-height:1.6em;
  margin:15px;
  padding:5px;
  text-align:left;
  width:580px;
  border:1px solid blue;
  min-height: 500px;
}
#sidebar {
  display:inline;
  float:right;
  line-height:1.5em;
  margin:15px;
  padding:5px;
  width:300px;
  border:1px solid blue;
  min-height: 500px;
}
 
#footer {
  border:1px solid blue;
  background-position:50% 100%;
  background-repeat:repeat no-repeat;
  clear:both;
  height:60px;
  margin-bottom:0;
  margin-left:auto;
  margin-right:auto;
  margin-top:0;
  padding-bottom:10px;
  padding-top:25px;
  text-align:center;
  width:980px;
}

style.css se utiliza para diseñar el diseño.

9. Hemos terminado ahora

La estructura del archivo debería verse así.

10. Ejecutar la aplicación

Página de inicio de sesión

Pagina de bienvenida

Referencias: Filtros de servlets y oyentes de eventos

Categorías
Struts 2

El índice de tutoriales de Best Struts 2

Apache Struts 2 es un marco flexible para crear aplicaciones web Java. Esta es la mejor serie de tutoriales de Struts 2 para desarrolladores principiantes de Struts 2. A diferencia de otros tutoriales en línea, esta serie de tutoriales comienza con un video tutorial que muestra cómo hacer una aplicación web struts 2 bajo eclipse paso a paso.

Después de eso, se ilustra cómo funciona Struts 2 mediante el uso de ejemplos de código y diagramas. A continuación, se proporcionan algunos ejemplos de aplicaciones de trabajo reales conónicos con el código fuente. Y finalmente comparamos Struts 2 con otros frameworks web usando una presentación en línea.

Por favor, busque en Google plus si le gusta el tutorial.

    • ¿Por qué necesitamos marcos web Java como Struts 2?
    • Introducción al diseño MVC de Struts 2 Framework
    • Struts 2 acciones
    • Interceptor Struts 2
    • Aplicación de muestra: módulo de inicio de sesión
    • Aplicación de muestra – Azulejos
    • Aplicación de muestra: usar Hibernate

Categorías
Struts 2

¿Por qué necesitamos marcos web Java como Struts 2?

Hay varios tipos de marcos web Java, como Spring MVC, JavaServer Faces, Struts 2, etc. Para un programador novato, existe una curva de aprendizaje exponencial.

¿Por qué necesito marcos web Java como Struts 2? Esta pregunta se puede responder comenzando por responder cómo funciona la API de Servlet.

Aquí es una publicación que contiene código sobre cómo programar simplemente con la API de Servlet. Nunca usaría esto para programar realmente un proyecto grande, pero es bueno ver cómo se ve originalmente.

Aquí hay un servlet simple que procesa la solicitud del cliente y genera una respuesta html.

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class WelcomeServlet extends HttpServlet {
 
	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
	}
 
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//Get the value of form parameter
		String name = request.getParameter("name");
		String welcomeMessage = "Welcome "+name;
 
		// Set the content type(MIME Type) of the response.
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
 
		// Write the HTML to the response
		out.println("<html>");
		out.println("<head>");
		out.println("<title> A very simple servlet example</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>"+welcomeMessage+"</h1>");
		out.println("<a href="/servletexample/pages/form.html">"+"Click here to go back to input page "+"</a>");
		out.println("</body>");
		out.println("</html>");
		out.close();
 
	}
 
 
	public void destroy() {
 
	}
}

» + mensaje de bienvenida + «

«); out.println («» + «Haga clic aquí para volver a la página de entrada» + ««); out.println (««); out.println (««); out.close (); } public void destroy () {}}

Esto es muy simple, el uso real no será tan fácil como este. Un servlet real tiene más trabajo que hacer, como se resume a continuación:

  1. Vinculación de parámetros de solicitud a tipos de Java.
    String name = request.getParameter("name");
  2. Validando datos.
    Por ejemplo, no debe haber números en el nombre de las personas.
  3. Realización de llamadas a lógica empresarial.
    Por ejemplo, procesar el nombre para algunos fines.
  4. Comunicarse con la capa de datos.
    Por ejemplo, almacenar datos de usuario.
  5. Representación de la capa de presentación (HTML, etc.).
    Por ejemplo, devolver resultados para el navegador del cliente.

Por supuesto, podemos hacer todo eso por nosotros mismos, lo cual es totalmente posible. Sin embargo, eso llevaría mucho tiempo. Y muy a menudo, esas funciones son características comunes que se pueden implementar en algún enfoque determinado. Struts 2 es un enfoque de este tipo. Proporciona una forma estándar de implementar esas funciones comunes siguiendo los patrones de diseño de MVC.

Aquí está mi publicación anterior sobre una aplicación simple de Struts2.

Referencia:
[1] Brown, Donald, Chad Michael Davis y Scott Stanlick. Struts 2 en acción. Dreamtech Press, 2008.

Categorías
Design Patterns Stories Struts 2

Serie de tutoriales de Struts 2: Patrón de diseño MVC (diagrama)

Puntales 2 sigue el Modelo-Vista-Controlador (MVC) patrones de diseño. El siguiente diagrama demuestra cómo Puntales 2 framework implementa componentes MVC.

  • Acción – modelo
  • Resultado – ver
  • FilterDispatcher – controlador

El papel que juega cada módulo

ControladorEl trabajo consiste en asignar las solicitudes HTTP entrantes a las acciones. Estos mapeos se definen mediante una configuración basada en XML (struts.xml) o anotaciones Java.

Modelo en Struts 2 son acciones. Cada acción se define e implementa siguiendo el contrato marco definido (por ejemplo, consiste en un método execute ()). El componente del modelo consiste en el almacenamiento de datos y la lógica empresarial. Cada acción es una encapsulación de solicitudes y se coloca ValueStack.

Vista es el componente de presentación del patrón MVC. En la espiral de archivos JSP comunes, se pueden combinar otras técnicas como inclinaciones, velocidad, freemaker, etc. para proporcionar una capa de presentación flexible.

Interacciones entre cada módulo MVC

El patrón MVC es el patrón más obvio en Struts 2. Puede leer la página de historias de patrones de diseño y conocer otros patrones.

Categorías
Struts 2

Serie de tutoriales de Struts 2: Algunas notas sobre las acciones de Struts 2

Descubrí que es muy fácil olvidar algunos detalles sobre cómo funciona Struts 2, si no hago desarrollo web todos los días o lo uso a diario.

Aquí hay algunas notas sobre Puntales 2 Acción que vale la pena recordar.

  • Agrupar acciones en paquetes.

    Se trata de configuraciones en el archivo struts.xml, incluido el nombre del paquete (un nombre lógico mediante el cual puede hacer referencia al paquete), el espacio de nombres (utilizado para generar el espacio de nombres URL al que se asignan las acciones de estos paquetes) y las extensiones (la mayoría de los interceptores útiles se pueden encontrar en el paquete struts-default, por ejemplo, carga de archivos, parámetros, flujo de trabajo, etc.).

  • En lugar de implementar la interfaz de acción, extender la clase ActionSupport es lo que se necesita hacer para obtener una acción. Implementa otras interfaces que proporcionan funciones básicas. (por ejemplo, validar los datos de la solicitud, usar paquetes de recursos para leer el archivo de propiedades, etc.)
  • Dos enfoques para transferir datos a objetos: 1. Propiedades de JavaBeans respaldadas por objetos. 2. Acciones impulsadas por modelos

Aquí hay un buen diagrama de VaanNila. Tutorial de Struts 2.

Categorías
Struts 2

Serie de tutoriales Struts 2: Ilustración para interceptores Struts 2

Después de comprender cómo funciona la acción en el marco Struts 2, es hora de comprender otro concepto importante del marco: Interceptador. El interceptor se utiliza para separar diferentes preocupaciones (por ejemplo, registro) y mejorar los diseños de MVC (por ejemplo, permitir que la acción solo se ocupe de las funciones de nivel de modelo).

En primer lugar, aquí hay un diagrama del libro de Manning. Principalmente muestra que Acción Invocación clase encapsula la ejecución de un acción con su asociado interceptores y resultados.

Acción Invocación La clase juega un papel fundamental para los interceptores. El siguiente diagrama demuestra cómo ActionInvocation controla la ejecución de los interceptores.

Del diagrama podemos observar:

  1. Llamadas de marco invocar() método en Acción Invocación clase.
  2. invocar() El método comienza desde el primer interceptor en pila.
  3. interceptar() método de AuthenticationInterceptor se invoca

interceptar() El método determina si se invoca la invocación para el siguiente interceptor.

Hay una variable de estado que registra qué interceptor debe ejecutar a continuación. Entonces Acción Invocación es responsable de recordar el estado actual.

Struts2 Acción Invocación

Pregunta: ¿por qué es este un proceso recursivo? La respuesta está en el diagrama de arriba.