Struts Applications
Struts Applications
Struts Applications
Login Application
1) Login.jsp
2) Success.jsp
3) LoginAction.java
4) LoginForm.java
5) Struts-config.xml (only change is required)
Login.jsp
Success.jsp
Fail.jsp
1
LoginAction.java
/*
* Created on Oct 6, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package p;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginAction extends Action
{
public ActionForward execute(ActionMapping am,ActionForm af,HttpServletRequest
req,HttpServletResponse res) throws Exception
{
LoginForm loginform = (LoginForm)af;
if(name.equals("java")&&pass.equals("java"))
{
status = "success";
}
else
{
status = "fail";
}
return am.findForward(status);
}
2
LoginForm.java
/*
* Created on Oct 6, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package p;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginForm extends ActionForm
{
private String name,pass;
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the pass.
*/
public String getPass() {
return pass;
}
/**
* @param pass The pass to set.
*/
public void setPass(String pass) {
this.pass = pass;
3
}
public void reset(ActionMapping mapp,HttpServletRequest req)
{
name = null;
pass = null;
}
}
Struts-config.xml
<struts-config>
<data-sources/>
<form-beans>
<form-bean name="java" type="p.LoginForm"/>
</form-beans>
<global-exceptions/>
<global-forwards/>
<action-mappings>
<action name="java" path="/login" scope="session" type="p.LoginAction">
<forward name="success" path="/Success.jsp"/>
<forward name="fail" path="/Fail.jsp"/>
</action>
</action-mappings>
</struts-config>
4
Application No: 2
GlobalForwardsApplication
1) Index.jsp
2) ChangePassword.jsp
3) Success.jsp
4) Fail.jsp
5) LoginAction.java
6) LoginForm.java
7) ResourceBundle.properties
8) struts-config.xml
Index.jsp
5
ChangePassword.jsp
<br><br><br><br><br>
<center>PasswordChangedSuccessFully</center>
Success.jsp
<center>LoginSuccess</center>
Fail.jsp
<center>LoginFail</center>
LoginAction.java
/*
* Created on Oct 4, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginAction extends Action
{
public ActionForward execute(ActionMapping am,ActionForm af,HttpServletRequest
req,HttpServletResponse res) throws Exception
{
LoginForm loginform = (LoginForm)af;
String name = loginform.getName();
String pass = loginform.getPass();
String status =null;
if(name.equals("active")&&pass.equals("active"))
{
6
status = "success";
}
else
{
status = "fail";
}
return am.findForward(status);
}
LoginForm.java
/*
* Created on Oct 4, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginForm extends ActionForm
{
private String name,pass;
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
7
/**
* @return Returns the pass.
*/
public String getPass() {
return pass;
}
/**
* @param pass The pass to set.
*/
public void setPass(String pass) {
this.pass = pass;
}
public void reset(ActionMapping mpp,HttpServletRequest req)
{
name = null;
pass = null;
}
}
ResourceBundle.properties
name=EnterUserName :
pass=EnterPassword :
struts-config.xml
Application No: 3
8
ErrorHandlingApplication
1) Login.jsp
2) Success.jsp
3) Fail.jsp
4) LoginAction.java
5) LoginForm.java
6) Struts-config.xml
Login.jsp
Success.jsp
<center>LoginSuccess</center>
Fail.jsp
<center>LoginFail</center LoginAction.java
LoginAction.java
/*
* Created on Sep 13, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
import java.util.Hashtable;
9
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginErrorAction extends Action
{
public LoginErrorAction()
{}
public ActionForward execute(ActionMapping am,ActionForm form,HttpServletRequest
req,HttpServletResponse res) throws Exception
{
LoginErrorBean bean=(LoginErrorBean)form;
//***************************************
//*****************************************
if((bean.getName().equals("chennai"))&&(bean.getPass().equals("java")))
{
return am.findForward("success");
}
else
{
return am.findForward("fail");
}
}
}
LoginForm.java
/*
* Created on Sep 13, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
import javax.servlet.http.HttpServletRequest;
10
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginErrorBean extends ActionForm
{
private String name,pass;
/**
* @return Returns the name.
*/
public LoginErrorBean()
{}
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the pass.
*/
public String getPass() {
return pass;
}
/**
* @param pass The pass to set.
*/
public void setPass(String pass) {
this.pass = pass;
}
public ActionErrors validate(ActionMapping am,HttpServletRequest req)
{
ActionErrors errors=new ActionErrors();
if(name==null||name.length()==0)
{
errors.add("name",new ActionError("field.null","UserName"));
}
if(pass==null||pass.length()==0)
{
11
errors.add("pass",new ActionError("field.null","PassWord"));
}
return errors;
}
}
Struts-config.xml
ResourceBundle.properties
Enter.Prompt={0}
field.null=<font color\=red>{0}Please Enter Data</font>
ApplicationNo :4
DynaActionForm Application
1) UserReg.jsp
2) Success.jsp
3) Fail.jsp
4) RegistrationAction.java
5) MessageBundle.properties
6) struts-config.xml
12
UserReg.jsp
<center>LoginSuccess</center>
Fail.jsp
<center>LoginFail</center>
RegistrationAction.java
/*
* Created on Sep 13, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
13
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class RegistrationAction.java extends Action
{
public ActionForward execute(ActionMapping am,ActionForm form,HttpServletRequest
req,HttpServletResponse res)throws Exception
{
String status=null;
DynaActionForm dform=(DynaActionForm)form;
Integer inger = (Integer)dform.get("sal");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:oracledsn","scott","tiger");
PreparedStatement pst = con.prepareStatement("insert into userreg values(?,?,?,?)");
pst.setString(1,(String)dform.get("name"));
pst.setString(2,(String)dform.get("qual"));
pst.setString(3,(String)dform.get("sex"));
pst.setInt(4,inger.intValue());
int insert_result = pst.executeUpdate();
if(insert_result == 1)
{
status = "success";
}
else
{
status = "fail";
}
return am.findForward(status);
14
MessageBundle.properties
field=Enter{0} \:
struts-config.xml
15
ApplicationNo: 5
DyanaValidatiorForm Application
1. Validation.jsp
2. Success.jsp
3. ValidationAction.jsp
4. Validation.xml
5). Struts-config.xml
6).ResourceBundle.properties
Validation.jsp
Success.jsp
<center>LoginSuccess</center>
16
ValidationAction.jsp
/*
* Created on Sep 5, 2002
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
/**
* @author yerra
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ValidationAction extends Action
{
public static final String G_F="vaildate";
public static final String F_F="fail";
private static final String For_sus="success";
public ValidationAction()
{}
public ActionForward execute(ActionMapping ac,ActionForm form,HttpServletRequest
req,HttpServletResponse res) throws Exception
{
String result=null;
if(form!=null)
{
DynaValidatorForm dvf=(DynaValidatorForm)form;
String unit=(String)dvf.get("ubyte");
result=For_sus;
}
else
{
result=F_F;
}
return ac.findForward(result);
}
17
}
Validation.xml
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<!--
This is a blank Validator form file with a commented examples.
-->
<global/>
<formset>
<form name="che">
<field property="ubyte" depends="required,byte">
<arg0 key="field.value"/>
</field>
<field property="int" depends="required,integer">
<arg0 key="field.value"></arg0>
</field>
<field property="email" depends="required,email">
<arg0 key="field.value"></arg0>
</field>
<field property="db" depends="required,double">
<arg0 key="field.value"></arg0>
</field>
<field property="length" depends="required,minlength">
<arg0 key="field.value"/>
<arg1 name="minlength" key="${var:minlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="alpha" depends="mask">
<arg0 key="prompt.mask" />
<msg name="mask" key="prompt.mask"></msg>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
Struts-config.xml
ResourceBundle.properties
errors.required={0} is required.
errors.invalid={0} is invalid.
errors.minlength={0} can not be less than {1} characters.
errors.integer={0} must be an integer.
errors.email={0} is an invalid e-mail address.
errors.byte={0} must be a byte
errors.double={0} must be a double.
field.value=Enter Value
get1=Enter DoubleValue
prompt.mask=EnterAlpahaNumericValue
ApplicationNo: 6
19
DataSourceApplication
1. Registration.jsp
2. Success.jsp
3. Fail.jsp
4. Exception.jsp
5. RegistrationAction.java
6. UserRegistrationForm
7. ResourceBundle.properties
8. struts-config.xml
Registration.jsp
Success.jsp
20
Fail.jsp
Exception.jsp
RegistrationAction.java
/*
* Created on Oct 6, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package reg;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class RegistrationAction extends Action
{
21
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest
request,HttpServletResponse response)throws Exception
{
String status = null;
UserRegistrationForm userForm = (UserRegistrationForm) form;
DataSource dataSource = getDataSource(request, "userDB");
Connection conn = dataSource.getConnection();
PreparedStatement statement = conn.prepareStatement("insert into USER1
values(?,?)");
statement.setString(1,userForm.getName());
statement.setInt(2,userForm.getNo());
int i = statement.executeUpdate();
status = i>0?"success":"failure";
return mapping.findForward(status);
}
}
UserRegistrationForm
/*
* Created on Oct 6, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package reg;
import org.apache.struts.action.ActionForm;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class UserRegistrationForm extends ActionForm
{
private int no;
private String name;
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
22
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the no.
*/
public int getNo() {
return no;
}
/**
* @param no The no to set.
*/
public void setNo(int no) {
this.no = no;
}
}
ResourceBundle.properties
userRegistration.firstName=FirstName
userRegistration.lastName=LastName
userRegistration.userName=UserName
userRegistration.password=Password
userRegistration.email=Email
userRegistration.phone=Phone
userRegistration.fax=Fax
userRegistration.sql.exception=There was a problem adding the User. \\n The
struts-config.xml
23
path="/userRegistrationException.jsp" type="java.sql.SQLException"/>
<forward name="success" path="/Success.jsp"/>
<forward name="failure" path="/Fail.jsp"/>
</action>
</action-mappings>
<controller/>
<message-resources null="false" parameter=" ResourceBundle"/>
</struts-config>
ApplicationNo: 7
MultipleButtonHandling Application
1 MultipleButtons.jsp
2 Show.jsp
3 Validate.jsp
4 Fail.jsp
5 MultipleButtonAction.java
6 MultipleButtonForm.java
7.struts-config.xml
MultipleButtons.jsp
Show.jsp
<center>
<h1>SHOW BUTTON OUT PUT</h1>
24
The User name is <%=session.getAttribute("Name")%><br>
The Password is<%=session.getAttribute("Pass")%>
</center>
Validate.jsp
Fail.jsp
<center>LoginFail</center>
MultipleButtonAction.java
/*
* Created on Oct 2, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package p;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MultipleButtonAction extends Action
{
public String status=null;
public ActionForward execute(ActionMapping am,ActionForm af,HttpServletRequest
req,HttpServletResponse res)
{
MultipleButtonForm form=(MultipleButtonForm)af;
HttpSession ses=req.getSession();
String name=form.getName();
String pass=form.getPass();
ses.setAttribute("Name",name);
25
ses.setAttribute("Pass",pass);
if("Show".equals(form.getShow()))
{
status="key1";
}
if("Validate".equals(form.getValidate()))
{
if((form.getName().equals("java"))&&(form.getPass().equals("java")))
{
status="key2";
}
else
{
status="key3";
}
}
return am.findForward(status);
}
MultipleButtonForm.java
/*
* Created on Oct 2, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package p;
import org.apache.struts.action.ActionForm;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MultipleButtonForm extends ActionForm
{
public String name,pass,show,validate;
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
26
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the pass.
*/
public String getPass() {
return pass;
}
/**
* @param pass The pass to set.
*/
public void setPass(String pass) {
this.pass = pass;
}
/**
* @return Returns the show.
*/
public String getShow() {
return show;
}
/**
* @param show The show to set.
*/
public void setShow(String show) {
this.show = show;
}
/**
* @return Returns the validate.
*/
public String getValidate() {
return validate;
}
/**
* @param validate The validate to set.
*/
public void setValidate(String validate) {
this.validate = validate;
}
}
struts-config.xml
27
<!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>
<data-sources/>
<form-beans>
<form-bean name="multiple" type="p.MultipleButtonForm"/>
</form-beans>
<global-exceptions/>
<global-forwards/>
<action-mappings>
<action name="multiple" path="/login" scope="request"
type="p.MultipleButtonAction">
<forward name="key1" path="/Show.jsp"/>
<forward name="key2" path="/Validate.jsp"/>
<forward name="key3" path="/Fail.jsp"/>
</action>
</action-mappings>
<controller/>
</struts-config>
ApplicationNo: 8
I18N Application
1 Localization.jsp
2 ProcessLocalizationAction.java
3 ApplicationResources.properties
4 ApplicationResources_de.properties
5 ApplicationResources_en_CA.properties
6. struts-config.xml
Localization.jsp
<h1>Localization Example</h1>
<hr noshade="noshade"/>
<h2><bean:message key="message.welcome"/></h2>
28
<h4>Change Language</h4>
<ul>
<li><html:link page="/processLocalization.do">Default</html:link></li>
<li><html:link page="/processLocalization.do?language=en">English</html:link></li>
<li><html:link page="/processLocalization.do?language=en&country=CA">English
(Canadian)</html:link></li>
<li><html:link page="/processLocalization.do?language=en&country=US">English
(US)</html:link></li>
<li><html:link page="/processLocalization.do?language=en&country=GB">English
(British)</html:link></li>
<li><html:link page="/processLocalization.do?language=fr">French</html:link></li>
<li><html:link page="/processLocalization.do?language=de">German</html:link></li>
<li><html:link page="/processLocalization.do?language=es">Spanish</html:link></li>
<li><html:link page="/processLocalization.do?language=it">Italian</html:link></li>
<li><html:link page="/processLocalization.do?language=pt">Portuguese</html:link></li>
</ul>
<hr />
</body>
</html:html>
ProcessLocalizationAction.java
package p;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public ProcessLocalizationAction() {
super();
}
29
HttpSession session = request.getSession();
//Save locale
session.setAttribute(Globals.LOCALE_KEY, locale);
ApplicationResources.properties
message.detail={0}
message.example.simple=This is a simple message.
message.example.replaceable=This is <strong>{0}</strong> message with
<strong>{1}</strong> parameters.
message.welcome=Welcome to the examples page.
message.test.
ApplicationResources_de.properties
# -- formatting --
30
format.currency=$\#.\#\#0,00;$(\#.\#\#0,00)
ApplicationResources_en_CA.properties
struts-config.xml
<struts-config>
<data-sources>
</data-sources>
<form-beans>
</form-beans>
<global-forwards>
</global-forwards>
<action-mappings>
<action path="/processLocalization"
type="p.ProcessLocalizationAction"
scope="request"
input="/Localization.jsp"
validate="false">
<forward name="success" path="/Localization.jsp"/>
</action>
</action-mappings>
<controller>
</controller>
</struts-config>
ApplicationNo: 9
TilesFrameWork
31
1. Header.jsp
2. Menu.jsp
3. Body.jsp
4. Footer.jsp
5. ClassicLayout.jsp
6. Main.jsp
7. Data.jsp
8. tiles-example.jsp
Header.jsp
<html>
<body>
<center>ActiveNET Informatics</center>
</body>
</html>
Menu.jsp
<html>
<body bgcolor="green">
<table width="21%" height="97" border="1" align="center">
<tr>
<td><div align="center"><a href="./Data.jsp">ClientRegistration</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="#">ProjectRegistration</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="#">ModuleRegistration</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="#">TeamRegistration</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="#">Reports</a></div></td>
</tr>
</table>
</body>
</html>
Body.jsp
<html>
<body bgcolor="blue">
<center> Q) How JDBC API is common to all the Databases and to all the drivers? <br>
A) Fine! The answer is JDBC API uses Factory Method and Abstract Factory Design pattern<br>
implementations to make API common to all the Databases and Drivers. In fact most of the<br>
classes available in JDBC API are interfaces, where Driver vendors must<br>
<br>
asdf;alksdf;askdfa;skfjasd;fas</center>
32
</body>
</html>
Footer.jsp
<html>
<body bgcolor="red">
<center>ActiveNET Informatics </center>
</body>
</html>
ClassicLayout.jsp
Main.jsp
Data.jsp
<hrml>
<body><center>
This is Data
</center>
</body>
</hrml>
33
tiles-example.jsp
</definition></tiles-definitions>
34