Struts

adplus-dvertising
Application- 10 : Creating a Struts Application for insert Data into DataBase in Struts
Previous Home Next

In this chapter, you create a new Struts application for the purpose of insert data into DataBase( or My SQL server). For each piece of the application, we show you the code and then explain the code. This application design in NetBeans IDE- 6.8 with Struts 1.3.

Requirement for your struts application-

  • At least one view component is required in every Application.
  • A subclass of ActionForm is used to submit the date as application needed.
  • A subclass of Action class which provide specific processing functionality for the application.
  • A web.xml file is required for calling ActionServlet and struts-config.xml.
  • A struts-config.xml file is required for updating and mapping the update.

Let's Start the application, this application provide a good understanding how struts framework works and also understanding the development of Struts applications.

Now, Following the some steps for develop your first application name as InsertInDataBase. InsertInDataBase application contain following page-

  • Three View file name as index.jsp and Dispaly.jsp
  • One DynaActionForm class name as a InsertDataForm, used for store data as application need.
  • one Action file name as InsertDataAction.java, used for provide specific processing functionality.
  • Two XML file name as web.xml and struts-config.xml file, used for provide control, mapping and validation in application.

Step- 1 : Start your IDE ( NetBeans 6.8 with struts 1.3).

Step- 2 : Open a new project( Crtl+Shift+N), name it , add server( Apache Tomcat 6.0.20 ), then add struts framework 1.3 , and don't forget to add Struts TLDs.

Note:-When you click Finish button, your NetBeans IDE configure everything in place and project open in your IDE.

Step- 3: Open index.jsp page, from your struts application and code it as describe below.

<html:html lang="true">
<head>
<meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8">
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body style="background-color: white">
<html:form action="/InsertData">
<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>
<!-- SQL Error Dispaly Here: -->
<html:errors property="SQL" />
<html:errors property="SQLException" />
<table border="0" cellspacing="4" cellpadding="4">
<tbody>
<tr>
<td>
<html:errors property="userName" />
<bean:message key="welcome.username" /></td>
<td><html:text property="userName"
maxlength="20" size="20" /></td>
</tr>
<tr>
<td>
<html:errors property="firstName" />
<bean:message key="welcome.firstname" /></td>
<td><html:text property="firstName" 
maxlength="10" size="20" /></td>
</tr>
<tr>
<td>
<html:errors property="lastName" />
<bean:message key="welcome.lastname" /></td>
<td><html:text property="lastName"
maxlength="10" size="20" /></td>
</tr>
<tr>
<td>
<html:errors property="age" />
<bean:message key="welcome.age" /></td>
<td><html:text property="age" 
maxlength="2" size="20" /></td>
</tr>
<tr>
<td>
<html:errors property="number" />
<bean:message key="welcome.number" /></td>
<td><html:text property="number" 
maxlength="15" size="20" /></td>
</tr>
<tr>
<td align="center"><html:submit 
value=" Submit " /></td>
<td align="center"><html:reset 
value=" Reset " /></td>
</tr>
</tbody>
</table>
</html:form>
</body>
</html:html>

Step- 4: Open Display.jsp page, from your struts application and code it as describe below.

<%--Document: Display.jsp
Description : Second Page of InsertInDataBase Application--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://struts.apache.org/tags-bean" 
prefix="bean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>Dispaly Page</title>
</head>
<body>
<h1>Congratulations! You data successfully store
into DataBase</h1>
<h2> Check your detail</h2>
<ul>
<table border="1" cellspacing="4" cellpadding="4">
<tbody>
<tr>
<td> UserName :</td>
<td><b><bean:write name="InsertDataForm" 
property="userName" /></b></td>
</tr>
<tr>
<td> First Name: </td>
<td><b><bean:write name="InsertDataForm" 
property="firstName"  /></b></td>
</tr>
<tr>
<td> Last Name:</td>
<td><b><bean:write name="InsertDataForm" 
property="lastName"  /></b></td>
</tr>
<tr>
<td> Age: </td>
<td><b><bean:write name="InsertDataForm" 
property="age" /></b></td>
</tr>
<tr>
<td> Number: </td>
<td><b><bean:write name="InsertDataForm"
property="number" /></b></td>
</tr>
</tbody>
</table>
</ul>
<ul>
<p> Now, return back to <a style="cursor: auto; color: green"
href="index.jsp"> home </a>page</p>
</ul>
</body>
</html>

Step- 5: Open web.xml file place in WEB-INF folder, this file is used to map the ActionServlet( work as backbone of application, every Action, Validation and ActionForm class control by this class) , struts-config.xml file, welcome file and five different TagLibrary.

<!-- Save as a web.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<!-- ActionServlet map here, however you can't find this class 
within the project but it work as a backbone of the project -->
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet
</servlet-class>
<!-- Your struts-config.xml file map here-->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Action class map with URL -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<!-- Welcome file map here: -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<!-- All the Tag Library which used with in the project -->
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld
</taglib-location>
</taglib>
</jsp-config>
</web-app>

Step- 6: Open struts-config.xml file place in WEB-INF folder, this file is used to map Model class, Exception class, Validation class, Action class( Action class further choose View class) and ApplicationResource class.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//
DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="InsertDataForm" 
type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String" />
<form-property name="firstName" type="java.lang.String" />
<form-property name="lastName" type="java.lang.String" />
<form-property name="age" type="java.lang.Integer" />
<form-property name="number" type="java.lang.Integer" />
</form-bean>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
</global-forwards>
<action-mappings>
<action input="/index.jsp" name="InsertDataForm" 
path="/InsertData" scope="request" 
type="r4r.struts.InsertDataAction">
<forward name="success" path="/Dispaly.jsp"/>
<forward name="failure" path="/index.jsp"/>
</action>
</action-mappings>
<controller processorClass="org.apache.struts.tiles
.TilesRequestProcessor"/>
<message-resources parameter="com/myapp/struts
/ApplicationResource"/>
<!-- ============ Tiles plugin ===========-->
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" 
value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
<!-- ========== Validator plugin =========== -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>

Step- 7: Now introduce Bean class into struts-config.xml file, Since, we used DynaActionForm class that mean we don't used extra class for handle Bean property.

Step- 8: Introduce Action class in to struts-config.xml file, as we define in our first application, that Netbean IDE able to configure your action class in struts-cofig.xml file.

/* Save as a InsertDataAction */
package r4r.struts;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.DynaActionForm;
public class InsertDataAction extends 
	org.apache.struts.action.Action {
/* forward name="" path="" */
private static final String SUCCESS = "success";
private static final String FAILURE = "failure";
// Initialize SQL connection equal null
private Connection con = null;
/* This is the action called from the Struts framework.
 * Execute method of action class */
@Override
public ActionForward execute
	(ActionMapping mapping, ActionForm form,
	HttpServletRequest request, HttpServletResponse response)
throws Exception {
//Initilized Action error
ActionErrors errors = new ActionErrors();
//Call DynaActionForm Instance here
DynaActionForm actionForm = (DynaActionForm) form;
// Taking Property from DynaActionform
String userName = (String) actionForm.get("userName");
String firstName = (String) actionForm.get("firstName");
String lastName = (String) actionForm.get("lastName");
int age = (Integer) actionForm.get("age");
int number = (Integer) actionForm.get("number");
//Set up flag message
boolean flag1 = false;
boolean flag2 = false;
//Set up validation in form
if (userName == null || userName.length() < 1) {
errors.add("userName", 
	new ActionMessage("error.userName"));
}
if (firstName == null || firstName.length() < 1) {
errors.add("firstName",
	new ActionMessage("error.firstName"));
}
if (lastName == null || lastName.length() < 1) {
errors.add("lastName", 
	new ActionMessage("error.lastName"));
}
if (age == 0 || age < 1) {
errors.add("age", new ActionMessage("error.age"));
}
if (number == 0 || number < 1) {
errors.add("number",
	new ActionMessage("error.number"));
}
/*Save error messages keys into the appropriate HTTP
request attribute for use by the <html:errors> tag*/
saveErrors(request, errors);
//Check- is errors empty
if (errors.isEmpty()) {
flag1 = true;
} else {
flag1 = false;
}
// Now Start communicate with database
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection
	("jdbc:mysql:///r4r", "root", "sachin");
//Check and open connection
if (!con.isClosed()) {
//Insert value into SQL Table
PreparedStatement ps = (PreparedStatement) con.prepareStatement
("INSERT INTO dummy(`userName`,`firstName`,`lastName`,age,`number`)"
+ " VALUES (?,?,?,?,?) ");
 //Set string and position into table
ps.setString(1, userName);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setInt(4, age);
ps.setInt(5, number);

//Execute all the above statement
ps.execute();

} else {
errors.add("SQL", new ActionMessage("error.SQLConnectivity"));
}
} catch (Exception ex) {
errors.add("SQLException", new ActionMessage("error.SQLException"));
throw new SQLException(ex.fillInStackTrace());
} finally {
//Close SQL server connection
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
throw new SQLException(e.getSQLState() + e.fillInStackTrace());
}
}
/*Save error messages keys into the appropriate HTTP request
attribute for use by the <html:errors> tag
saveErrors(request, errors);*/
if (errors.isEmpty()) {
flag2 = true;
} else {
flag2 = false;
}
//Check the condition of boolean flags
if (flag1 == true && flag2 == true) {
return mapping.findForward(SUCCESS);
} else {
return mapping.findForward(FAILURE);
}
}
}

Run your application:

Now your application is complete, so now start run your application. Start your server( which you embedded when configure our struts application), then right click your application and click upon Run option or open your welcome( index.jsp) page and press shift+F6.

Check the Validation

Now see the data successfully submit into database.

Previous Home Next