Struts 2 - Akses Database
Bab ini akan mengajarkan Anda cara mengakses database menggunakan Struts 2 dalam langkah-langkah sederhana. Struts adalah kerangka kerja MVC dan bukan kerangka kerja database tetapi menyediakan dukungan yang sangat baik untuk integrasi JPA / Hibernate. Kita akan melihat integrasi hibernate di bab selanjutnya, tetapi di bab ini kita akan menggunakan JDBC lama biasa untuk mengakses database.
Langkah pertama dalam bab ini adalah mengatur dan mengatur basis data kita. Saya menggunakan MySQL sebagai database saya untuk contoh ini. Saya telah menginstal MySQL di mesin saya dan saya telah membuat database baru yang disebut "struts_tutorial". Saya telah membuat tabel bernamalogindan mengisinya dengan beberapa nilai. Di bawah ini adalah skrip yang saya gunakan untuk membuat dan mengisi tabel.
Database MYSQL saya memiliki nama pengguna default "root" dan "root123" kata sandi
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');
Langkah selanjutnya adalah mengunduh file jar Konektor MySQL dan menempatkan file ini di folder WEB-INF \ lib proyek Anda. Setelah kita melakukan ini, kita sekarang siap untuk membuat kelas aksi.
Buat Tindakan
Kelas tindakan memiliki properti yang sesuai dengan kolom dalam tabel database. Kita punyauser, password dan namesebagai atribut String. Dalam metode aksi, kami menggunakan parameter pengguna dan kata sandi untuk memeriksa apakah pengguna ada, jika demikian, kami menampilkan nama pengguna di layar berikutnya.
Jika pengguna memasukkan informasi yang salah, kami mengirim mereka ke layar login lagi.
Berikut ini adalah konten dari LoginAction.java file -
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;
}
}
Buat Halaman Utama
Sekarang, mari kita buat file JSP index.jspuntuk mengumpulkan nama pengguna dan kata sandi. Nama pengguna dan kata sandi ini akan diperiksa terhadap database.
<%@ 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>
Buat Tampilan
Sekarang mari kita buat success.jsp file yang akan dipanggil jika tindakan mengembalikan SUCCESS, tetapi kami akan memiliki file tampilan lain jika ada ERROR yang dikembalikan dari tindakan.
<%@ 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>
Berikut akan menjadi file view error.jsp dalam kasus ERROR dikembalikan dari tindakan.
<%@ 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>
File Konfigurasi
Terakhir, mari kita gabungkan semuanya menggunakan file konfigurasi struts.xml sebagai berikut -
<?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>
Berikut ini adalah konten dari web.xml file -
<?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>
Sekarang, klik kanan pada nama proyek dan klik Export > WAR Fileuntuk membuat file Perang. Kemudian terapkan WAR ini di direktori webapps Tomcat. Terakhir, jalankan server Tomcat dan coba akses URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Ini akan menghasilkan layar berikut -
Masukkan nama pengguna dan kata sandi yang salah. Anda harus melihat halaman berikutnya.
Sekarang masuk scott sebagai nama pengguna dan navysebagai kata sandi. Anda harus melihat halaman berikutnya.