Struts 2 - Datenbankzugriff

In diesem Kapitel erfahren Sie, wie Sie mit Struts 2 in einfachen Schritten auf eine Datenbank zugreifen. Struts ist ein MVC-Framework und kein Datenbank-Framework, bietet jedoch eine hervorragende Unterstützung für die JPA / Hibernate-Integration. Wir werden uns die Integration im Ruhezustand in einem späteren Kapitel ansehen, aber in diesem Kapitel werden wir einfaches altes JDBC verwenden, um auf die Datenbank zuzugreifen.

Der erste Schritt in diesem Kapitel besteht darin, unsere Datenbank einzurichten und vorzubereiten. Ich verwende MySQL als Datenbank für dieses Beispiel. Ich habe MySQL auf meinem Computer installiert und eine neue Datenbank mit dem Namen "struts_tutorial" erstellt. Ich habe eine Tabelle namens erstelltloginund füllte es mit einigen Werten. Unten finden Sie das Skript, mit dem ich die Tabelle erstellt und gefüllt habe.

Meine MYSQL-Datenbank hat den Standardbenutzernamen "root" und das Passwort "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');

Der nächste Schritt besteht darin, die MySQL Connector- JAR-Datei herunterzuladen und diese Datei im Ordner WEB-INF \ lib Ihres Projekts abzulegen. Nachdem wir dies getan haben, können wir jetzt die Aktionsklasse erstellen.

Aktion erstellen

Die Aktionsklasse verfügt über die Eigenschaften, die den Spalten in der Datenbanktabelle entsprechen. Wir habenuser, password und nameals String-Attribute. Bei der Aktionsmethode verwenden wir die Benutzer- und Kennwortparameter, um zu überprüfen, ob der Benutzer vorhanden ist. In diesem Fall wird der Benutzername im nächsten Bildschirm angezeigt.

Wenn der Benutzer falsche Informationen eingegeben hat, senden wir diese erneut an den Anmeldebildschirm.

Es folgt der Inhalt von LoginAction.java Datei -

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;
   }
}

Hauptseite erstellen

Lassen Sie uns nun eine JSP-Datei erstellen index.jspum den Benutzernamen und das Passwort zu sammeln. Dieser Benutzername und dieses Passwort werden mit der Datenbank verglichen.

<%@ 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>

Ansichten erstellen

Lassen Sie uns jetzt erstellen success.jsp Datei, die aufgerufen wird, wenn die Aktion ERFOLGREICH zurückgibt, aber wir haben eine andere Ansichtsdatei, falls ein FEHLER von der Aktion zurückgegeben wird.

<%@ 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>

Es folgt die Ansichtsdatei error.jsp im Falle eines Fehlers wird von der Aktion zurückgegeben.

<%@ 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>

Konfigurationsdateien

Lassen Sie uns abschließend alles mithilfe der Konfigurationsdatei struts.xml wie folgt zusammenstellen:

<?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>

Es folgt der Inhalt von web.xml Datei -

<?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>

Klicken Sie nun mit der rechten Maustaste auf den Projektnamen und klicken Sie auf Export > WAR Fileum eine War-Datei zu erstellen. Stellen Sie diese WAR dann im Webanwendungsverzeichnis von Tomcat bereit. Starten Sie abschließend den Tomcat-Server und versuchen Sie, auf die URL zuzugreifenhttp://localhost:8080/HelloWorldStruts2/index.jsp. Daraufhin wird der folgende Bildschirm angezeigt:

Geben Sie einen falschen Benutzernamen und ein falsches Passwort ein. Sie sollten die nächste Seite sehen.

Nun eintreten scott als Benutzername und navyals Passwort. Sie sollten die nächste Seite sehen.