Requirements
- Create the JSP to contain the form.
- Create a form-bean to contain values of
form fields.
- Create a form-action to validate input of
user and to provide appropriate forwards names to controlling servlets.
- Provide information in Struts-config.xml.
- Create a page for each forward.
Creation of form bean
- Create a class in a package by inheriting
org.apache.Struts.action.ActionForm.
- Provide variables in the form-bean class
as the properties.Name of these variables must match with the value of
property attributes present in form field tags.
- Provide setter and getter methods for each
of the property.
- Optionally override the reset() method to
provide default values to the properties.
Creation of form action
- Create a class in the same package where
form-bean exists and this class must inherit org.apache.Struts.action.Action
class.
- Override the execute() method to implement
validation logic and to return a forward.Return type of this method must be
org.apache.Struts.ActionForward.This method accept four parameters as
follows below.
a.org.apache.Struts.action.Actionmappings:- This represents all forward name
and present in Struts-config.xml and helps to create object of actionforward.
b.org.apache.Struts.action.Actionform:- This represent form bean.
c.javax.servlet.http.HttpServletRequest:- This represent user request.
d.javax.servlet.http.HttpServletResponse:- This represent service response.
Compilation of bean and action: -
Compile formbean and action file simultaneously by using servlet-api.jar and
Struts-core-1.3.8.jar in classpath.The jar file of Struts(Struts-core-1.3.8.jar)
can be found in lib folder of the context,after installation of Structs.
--- \classes\logs\javac – classpath servlet-api.jar ;Struts-core-1.3.8.jar
*.java
Here "logs" is the package folder where we stored both the form bean and fom
action files.
Providing information in Struts-config.xml file
- Provide information about formbean by
using the following tags in Struts-config.xml as
<form-beans>
<form-bean name="name to map formbean with form action" type="class name
with package name of the form bean" />
</form-beans>
- Supply information about form-action and
forwards by using the following tags in Struts-config.xml file
<action-mappings>
<action name="mapping name specified in formbean" path="value of action
attribute present in from" type="class name of form action" >
<forward name="name of forward used by form action" path="name of the page
to be visible" />
<forward name=" name of forward used by form action " path=" name of the
page to be visible " />
</action>
</action-mappings>
Using form tag of Struts
Attribute
This contains a name to refer the form-action in the configuration fle. This is a mandatory attribute. Whenever the form gets submitted then the extension
specified in the url-pattern of the controlling servlet gets added with the
attribute value.
Methods
This contains a value as get or post to specify the process of data submission.
Creating a login form using Struts
Here we use Type-1 driver (JDBC-ODBC bridge)
Creation of dsn(database source name) for Oracle
Start-Control panel- Administrative Tools- Data Sources (ODBC)-go to system dsn
tab-click add button-select a driver for which you want to set up data source
(for Oracle- Oracle in XE)-select it and click finish-give any name in data
source name textbox-then click ok button.
Note: - Here Username=system, Password=pintu and Dsn name=dsn1
Table Creation with data
create table userinfo(userid varchar(50),pass varchar(50))
insert into userinfo values('Raj','raj123')
insert into userinfo values('Ravi','ravi123')
insert into userinfo values('Rahul','rahul123')
Creation of a context file
Create any folder in any drive as (E:\Strutsproject). Inside that folder store
your .JSP files. Give the Context path name as javaStruts and docBase as E:\Strutsproject,
here docBase means the total path where we are storing our .JSP files. Store the
java bean file inside 'classes' folder of the context for predefined context
(root) the classes folder required to be created inside the WEB-INF folder.
These changes are done in the server.xml file, which is present in (E:\Program
Files\Apache Software Foundation\Tomcat 6.0\conf) directory.
Creation of form bean
Create a package folder (pack1) inside the classes folder of the context (E:\Strutsproject\WEB-INF\classes).
Store all the managed bean files inside the package folder (logs).
Logbean.java
//form bean
package logs;
import javax.servlet.http.*;
import org.apache.Struts.action.*;
public class logbean extends ActionForm
{
String uid,pass;
public void setUid(String u)
{
uid=u;
}
public void setPass(String p)
{
pass=p;
}
public String getUid()
{
return uid;
}
public String getPass()
{
return pass;
}
public void reset(ActionMapping map,HttpServletRequest res)
{
uid=null;
pass=null;
} }
logaction.java
//form action
package logs;
import javax.servlet.http.*;
import org.apache.Struts.action.*;
import java.sql.*;
public class logaction extends Action
{
public ActionForward execute(ActionMapping map,ActionForm frm,HttpServletRequest
req,HttpServletResponse res) throws Exception
{
logbean b=(logbean)frm;
String u=b.getUid();
String p=b.getPass();
boolean isexist=false;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:dsn1","system","pintu");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from userinfo where userid='"+u+"' and
pass='"+p+"'");
//Fetching data from ResultSet and display
if(rs.next())
isexist=true;
}
catch(Exception e)
{
System.out.println(e);
}
if(isexist){
ActionForward af=map.findForward("valid");
return af;
}
else
{
ActionForward af=map.findForward("invalid");
return af;
}
} }
Compile both the files simultaneously
Javac –cp Struts-core-1.3.8.jar; servlet-api.jar*.java
Creating the JSP form field tags and respective forward JSP pages
Store all the JSP pages inside the context folder (E:\Strutsproject)
Here there are three JSP pages they are login1.JSP, welcome.JSP and error.JSP.
Login1.JSP
<%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="ht" %>
<html>
<body>
<h1 align="center">
</h1>
<ht:form action="/logact" >
<h2>User Id<ht:text property="uid" value="" /></h2>
<h2>Password<ht:password property="pass" value="" /></h2>
<ht:submit />
</ht:form>
</body>
</html>
welcome.JSP
<html>
<body>
<h1>WELCOME</h1>
</body>
</html>
error.JSP
<html>
<body>
<h1>Invalid data</h1>
<JSP:include page="/login1.JSP" />
</body>
</html>
web.xml setting
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>x</servlet-name>
<servlet-class>org.apache.Struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/Struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>x</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
Struts-config settings
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE Struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/Struts/dtds/Struts-config_1_1.dtd">
<Struts-config>
<form-beans>
<form-bean name="form1" type="logs.logbean" />
</form-beans>
<global-forwards>
<forward name="form1" path="/welcome.JSP" />
</global-forwards>
<action-mappings>
<action name="form1" path="/logact" type="logs.logaction" >
<forward name="valid" path="/welcome.JSP" />
<forward name="invalid" path="/error.JSP" />
</action>
</action-mappings>
</Struts-config>
Running the application
Run the tomcat then write the below line in the URL
http://localhost:8081/javaStruts/login1.JSP
Here javaStruts is the Context path, which we mentioned in the server.xml file,
which is present in (E:\Program Files\Apache Software Foundation\Tomcat
6.0\conf) directory.
Output