Struts 2 - Accès à la base de données

Ce chapitre vous apprendra comment accéder à une base de données à l'aide de Struts 2 en quelques étapes simples. Struts est un framework MVC et non un framework de base de données, mais il fournit un excellent support pour l'intégration JPA / Hibernate. Nous examinerons l'intégration de la mise en veille prolongée dans un chapitre ultérieur, mais dans ce chapitre, nous utiliserons l'ancien JDBC pour accéder à la base de données.

La première étape de ce chapitre consiste à configurer et à amorcer notre base de données. J'utilise MySQL comme base de données pour cet exemple. J'ai MySQL installé sur ma machine et j'ai créé une nouvelle base de données appelée "struts_tutorial". J'ai créé une table appeléeloginet l'a rempli avec quelques valeurs. Vous trouverez ci-dessous le script que j'ai utilisé pour créer et remplir la table.

Ma base de données MYSQL a le nom d'utilisateur par défaut "root" et le mot de passe "root123"

CREATE TABLE `struts_tutorial`.`login` (
   `user` VARCHAR( 10 ) NOT NULL ,
   `password` VARCHAR( 10 ) NOT NULL ,
   `name` VARCHAR( 20 ) NOT NULL ,
   PRIMARY KEY ( `user` )
) ENGINE = InnoDB;

INSERT INTO `struts_tutorial`.`login` (`user`, `password`, `name`)
VALUES ('scott', 'navy', 'Scott Burgemott');

L'étape suivante consiste à télécharger le fichier jar MySQL Connector et à placer ce fichier dans le dossier WEB-INF \ lib de votre projet. Après avoir fait cela, nous sommes maintenant prêts à créer la classe d'action.

Créer une action

La classe d'action a les propriétés correspondant aux colonnes de la table de base de données. Nous avonsuser, password et namecomme attributs de chaîne. Dans la méthode d'action, nous utilisons les paramètres utilisateur et mot de passe pour vérifier si l'utilisateur existe, si c'est le cas, nous affichons le nom d'utilisateur dans l'écran suivant.

Si l'utilisateur a saisi des informations erronées, nous les renvoyons à l'écran de connexion.

Voici le contenu de LoginAction.java fichier -

package com.tutorialspoint.struts2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

   private String user;
   private String password;
   private String name;

   public String execute() {
      String ret = ERROR;
      Connection conn = null;

      try {
         String URL = "jdbc:mysql://localhost/struts_tutorial";
         Class.forName("com.mysql.jdbc.Driver");
         conn = DriverManager.getConnection(URL, "root", "root123");
         String sql = "SELECT name FROM login WHERE";
         sql+=" user = ? AND password = ?";
         PreparedStatement ps = conn.prepareStatement(sql);
         ps.setString(1, user);
         ps.setString(2, password);
         ResultSet rs = ps.executeQuery();

         while (rs.next()) {
            name = rs.getString(1);
            ret = SUCCESS;
         }
      } catch (Exception e) {
         ret = ERROR;
      } finally {
         if (conn != null) {
            try {
               conn.close();
            } catch (Exception e) {
            }
         }
      }
      return ret;
   }

   public String getUser() {
      return user;
   }

   public void setUser(String user) {
      this.user = user;
   }

   public String getPassword() {
      return password;
   }

   public void setPassword(String password) {
      this.password = password;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

Créer une page principale

Maintenant, créons un fichier JSP index.jsppour collecter le nom d'utilisateur et le mot de passe. Ce nom d'utilisateur et ce mot de passe seront vérifiés par rapport à la base de données.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Login</title>
   </head>
   
   <body>
      <form action = "loginaction" method = "post">
         User:<br/><input type = "text" name = "user"/><br/>
         Password:<br/><input type = "password" name = "password"/><br/>
         <input type = "submit" value = "Login"/>		
      </form>
   </body>
</html>

Créer des vues

Maintenant, créons success.jsp fichier qui sera appelé au cas où l'action retourne SUCCESS, mais nous aurons un autre fichier de vue au cas où une ERREUR serait renvoyée par l'action.

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

<html>
   <head>
      <title>Successful Login</title>
   </head>
   
   <body>
      Hello World, <s:property value = "name"/>
   </body>
</html>

Voici le fichier de vue error.jsp en cas d'ERREUR est renvoyé de l'action.

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

<html>
   <head>
      <title>Invalid User Name or Password</title>
   </head>
   
   <body>
      Wrong user name or password provided.
   </body>
</html>

Fichiers de configuration

Enfin, mettons tout ensemble en utilisant le fichier de configuration struts.xml comme suit -

<?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.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">
   
      <action name = "loginaction" 
         class = "com.tutorialspoint.struts2.LoginAction"
         method = "execute">
         <result name = "success">/success.jsp</result>
         <result name = "error">/error.jsp</result>
      </action>
   
   </package>
</struts>

Voici le contenu de web.xml fichier -

<?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_3_0.xsd"
   id = "WebApp_ID" version = "3.0">
   
   <display-name>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <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>
</web-app>

Maintenant, faites un clic droit sur le nom du projet et cliquez sur Export > WAR Filepour créer un fichier War. Déployez ensuite ce WAR dans le répertoire webapps de Tomcat. Enfin, démarrez le serveur Tomcat et essayez d'accéder à l'URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Cela produira l'écran suivant -

Entrez un nom d'utilisateur et un mot de passe erronés. Vous devriez voir la page suivante.

Entrez maintenant scott comme nom d'utilisateur et navycomme mot de passe. Vous devriez voir la page suivante.