Struts 2.x : [A Framework from ASF] :: Struts 2.x with Hibernate
Struts 2.x with Hibernate |
Struts 2.x with Hibernate Example for managing passengers.
Example for Struts 2.x with Hibernate |
Project Structure
SQL Code
mysql> CREATE TABLE Passenger
-> (
-> id int primary key auto_increment,
-> firstName varchar(20) NOT NULL,
-> lastName varchar(20) NOT NULL
-> );
Query OK, 0 rows affected (0.12 sec)
mysql> INSERT INTO Passenger(id, firstName, lastName) VALUES(1, 'james', 'Kane');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Passenger (id, firstName, lastName) VALUES(2, 'john', 'Michae');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO Passenger (id, firstName, lastName) VALUES(3, 'Jessica', 'Monal');
Query OK, 1 row affected (0.01 sec)
mysql> select * from passenger;
+----+-----------+----------+
| id | firstName | lastName |
+----+-----------+----------+
| 1 | james | Kane |
| 2 | john | Michael |
| 3 | Jessica | Monal |
+----+-----------+----------+
3 rows in set (0.00 sec)
Passenger.java
package com.javaskool;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="Passenger")
public class Passenger {
@Id
@GeneratedValue
private int id;
@Column(name="lastName")
private String lastName;
@Column(name="firstName")
private String firstName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
PassengerDAO.java
package com.javaskool;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;
import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;
public class PassengerDAO {
@SessionTarget
Session session;
@TransactionTarget
Transaction transaction;
@SuppressWarnings("unchecked")
public List<Passenger> getPassengers()
{
List<Passenger> passengers = new ArrayList<Passenger>();
try
{
passengers = session.createQuery("from Passenger").list();
}
catch(Exception e)
{
e.printStackTrace();
}
return passengers;
}
public void addPassenger(Passenger passenger) throws HibernateException
{
session.save(passenger);
}
}
PassengerAction.java
package com.javaskool;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class PassengerAction extends ActionSupport implements ModelDriven<Passenger>{
private static final long serialVersionUID = 1L;
Passenger passenger = new Passenger();
List<Passenger> passengers = new ArrayList<Passenger>();
PassengerDAO dao = new PassengerDAO();
@Override
public Passenger getModel() {
return passenger;
}
public String execute()
{
try{
dao.addPassenger(passenger);
}
catch(Exception e){}
return "success";
}
public String listPassengers()
{
passengers = dao.getPassengers();
return "success";
}
public Passenger getPassenger() {
return passenger;
}
public void setPassenger(Passenger passenger) {
this.passenger = passenger;
}
public List<Passenger> getPassengers() {
return passengers;
}
public void setPassengers(List<Passenger> passengers) {
this.passengers = passengers;
}
}
/*You will notice that we are implementing the ModelDriven interface.
* This is used when your action class is dealing with a concrete model class
* (such as Passenger) as opposed to individual properties (such as firstName, lastName).
* The ModelAware interface requires you to implement a method to return the model.
* In our case we are returning the "passenger" object.*/
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>Passenger Manager System </title>
</head>
<body>
<a href="passenger.jsp">Click here to access Passenger Form</a>
</body>
</html>
passenger.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Passenger Details</title>
<s:head />
</head>
<body>
<s:form action="addPassenger">
<s:textfield name="firstName" label="First Name"/>
<s:textfield name="lastName" label="Last Name"/>
<s:submit/>
</s:form>
<hr/>
<table>
<tr><td>First Name</td><td>Last Name</td></tr>
<s:iterator value="passengers">
<tr>
<td><s:property value="firstName"/></td><td><s:property value="lastName"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- For MySQL Database Server -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/javaskooldb</property>
<property name="connection.username">root</property>
<property name="connection.password">admin</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- For Oracle Database Server -->
<!-- <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="connection.username">SYSTEM</property>
<property name="connection.password">admin</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
-->
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping class="com.javaskool.Passenger" />
</session-factory>
</hibernate-configuration>
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.devMode" value="true" />
<package name="myhibernate" extends="hibernate-default">
<action name="addPassenger" method="execute"
class="com.javaskool.PassengerAction">
<result name="success" type="redirect">
listPassengers
</result>
</action>
<action name="listPassengers" method="listPassengers"
class="com.javaskool.PassengerAction">
<result name="success">/passenger.jsp</result>
</action>
</package>
</struts>
jar files required in lib folder
Note: List of jar files differ as per project
commons-fileupload-1.2.2
commons-io-2.0.1
commons-lang-2.4
commons-lang3-3.1
commons-logging-1.1.1
commons-logging-api-1.1
freemarker-2.3.19
javassist-3.11.0.GA
ognl-3.0.5
struts2-core-2.3.4
xwork-core-2.3.4
Click Here to download all jar files required for basic Struts 2.x Application
You can find all required jar file for this example in below link that contains complete code with jar.
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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>14_Struts2.x_WithHibernatePassenger</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>s2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>s2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Output
Click here to download complete code with jar files [12.3 MB]
Recent Comments