| Login
Application Using Action Form
In this example
we will see how to create a login application using ActionForm.
The following files are required for the login application..
• index.jsp
• success.jsp
• failure.jsp
• web.xml
• struts-config.xml
•
LoginAction.java
•
LoginForm.java
•
ApplicationResource.properties l
web.xml:
The first page that will be called in the login application is
the login.jsp page. This configuration should be done in web.xml
as shown below.
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
login.jsp:
We use Struts HTML Tags to create login page. The form has one
text field to get the user name and one password field to get
the password. The form also has one submit button, which when
clicked calls the login action. <html:errors /> tag is used
to display the error messages to the user.
<%@taglib
uri="/WEB-INF/struts-html.tld" prefix="html"
%>
<html>
<head>
<title>Login
Page</title>
</head>
<body>
<div
style="color:red">
<html:errors
/>
</div>
<html:form
action="/Login" >
User
Name :<html:text name="LoginForm" property="userName"
/>
Password
:<html:password name="LoginForm" property="password"
/>
<html:submit
value="Login" />
</html:form>
</body>
</html>
The user enters the user name and password and clicks the login
button. The login action is invoked.
struts-config.xml:
The validate method in the LoginForm class is called when the
Form is submitted. If any errors are found then the control is
returned back to the input page where the errors are displayed
to the user. The input page is configured in the action tag of
strut-config file. <html:errors /> tag is used to display
the errors in the jsp page.
<struts-config>
<form-beans>
<form-bean
name="LoginForm" type="com.chennaisunday.LoginForm"/>
</form-beans>
<action-mappings>
<action
input="/login.jsp" name="LoginForm" path="/Login"
scope="session" type="com.chennaisunday.LoginAction">
<forward
name="success" path="/success.jsp" />
<forward
name="failure" path="/failure.jsp" />
</action>
</action-mappings>
</struts-config>
LoginForm.java:
Inside the validate method, we check whether the user name and
password is entered. If not the corresponding error message is
displayed to the user. The error messages are configured in the
ApplicationResource.properties file.
public
ActionErrors validate(ActionMapping mapping,
HttpServletRequest
request) {
ActionErrors
errors = new ActionErrors();
if
(userName == null || userName.length() < 1) {
errors.add("userName",
new ActionMessage("error.userName.required"));
}
if
(password == null || password.length() < 1) {
errors.add("password",
new ActionMessage("error.password.required"));
}
return
errors;
}
ApplicationResource.properties:
The ApplicationResource.properties file contains the error messages.
The key "error.userName.required" is used in the validate
function to add a new error.
Since the error messages are configured in a seperate properties
file they can be changed anytime without making any changes to
the java files or the jsp pages.
1.error.userName.required
= User Name is required.
2.error.password.required
= Password is required.
If either user name or password is not entered then the corresponding
error message will be added to the ActionErrors. If any errors
are found then the control is returned back to the input jsp page,
where the error messages are displayed using the <html:errors
/> tag. The validate method is used to perform the client-side
validations. Once when the input data is valid the execute method
in the LoginAction class is called.
LoginAction.java
The execute method contains the business logic of the application.
Here first we typecast the ActionForm object to LoginForm, so
that we can access the form variables using the getter and setter
methods. If the user name and password is same then we forward
the user to the success page else we forward to the failure page.
public
class LoginAction extends org.apache.struts.action.Action {
private
final static String SUCCESS = "success";
private
final static String FAILURE = "failure";
public
ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest
request, HttpServletResponse response) throws Exception {
LoginForm
loginForm = (LoginForm) form;
if
(loginForm.getUserName().equals(loginForm.getPassword())) {
return
mapping.findForward(SUCCESS);
}
else {
return
mapping.findForward(FAILURE);
}
}
}
Lets enter the user names and password as "Eswar". Since
the user name and password is same the execute method will return
an ActionForward "success". The corresponding result
associated with the name "success" will be shown to
the user. This configuration is done in struts-config.xml file.
<action-mappings>
<action
input="/login.jsp" name="LoginForm" path="/Login"
scope="session" type="com.chennaisunday.LoginAction">
<forward
name="success" path="/success.jsp" />
<forward
name="failure" path="/failure.jsp" />
</action>
</action-mappings>
So according to the configuration in struts-config.xml the user
will be forwarded to success.jsp page.

If
the user name and password did not match the user will be forwarded
to the failure page. Lets try entering "Joe" as the user name
and "Eswar" as the password, the following page will be displayed
to the user.

|