Let us start with
our first struts based web application.
- Implement data entry forms as JSP files.
- Implement one or more ActionForm descendents to buffer data between JSPs and Actions.
- Create an XML document that defines the validation rules for your application.
- Implement one or more Action descendents to respond form submissions.
- Create struts-config.xml to associate forms with actions.
- Create or update web.xml to reference ActionServlet.
- Parallel Tasks
- Building
- Unit Testing
- Deployment
First let us see
what are the tools required to create our hello world Struts application.
- JDK 1.5
- Tomcat 5.x above or any other container (Glassfish, JBoss, Websphere, Weblogic etc)
- Eclipse 3.2.x above
- Apache Struts JAR files: Following are the list of JAR files required for this application.
- struts.jar
- common-logging.jar
- common-beanutils.jar
- common-collections.jar
- common-digester.jar
Open Eclipse and
goto File -> New -> Project and select Dynamic Web Project in the
New Project wizard screen.
After selecting
Dynamic Web Project, press Next.
Write the name of
the project. For example StrutsHelloWorld. Once this is done, select the
target runtime environment (e.g. Apache Tomcat v6.0). This is to run the
project inside Eclipse environment. After this press Finish.
Once the project
is created, you can see its structure in Project Explorer.
Now copy all the
required JAR files in WebContent -> WEB-INF -> lib folder. Create
this folder if it does not exists.
Next step is to
create a servlet entry in web.xml which points to org.apache.struts.action.ActionServlet
class of struts framework. Open web.xml file which is there under WEB-INF folder
and copy paste following code.
<servlet>
<servlet-name>action</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>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
|
Here we have
mapped url *.do with the ActionServlet, hence all the requests from *.do url
will be routed to ActionServlet; which will handle the flow of Struts after
that.
We will create
package strutcures for your project source. Here we will create two packages,
one for Action classes (net.viralpatel.struts.helloworld.action) and other for
Form beans(net.viralpatel.struts.helloworld.action).
Also create a
class LoginForm in net.viralpatel.struts.helloworld.action with
following content.
package net.viralpatel.struts.helloworld.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class LoginForm
extends ActionForm {
private
String userName;
private
String password;
public
ActionErrors validate(ActionMapping mapping,
HttpServletRequest
request) {
ActionErrors
actionErrors = new ActionErrors();
if(userName
== null || userName.trim().equals("")) {
actionErrors.add("userName",
new ActionMessage("error.username"));
}
try
{
if(password
== null || password.trim().equals("")) {
actionErrors.add("password",
new ActionMessage("error.password"));
}
}catch(Exception
e) {
e.printStackTrace();
}
return
actionErrors ;
}
public
String getUserName() {
return
userName;
}
public
void setUserName(String userName) {
this.userName
= userName;
}
public
String getPassword() {
return
password;
}
public
void setPassword(String password) {
this.password
= password;
}
}
|
LoginForm is a
bean class which extends ActionForm class of struts framework. This class will
have the string properties like userName and password and their getter and
setter methods. This class will act as a bean and will help in carrying values
too and fro from JSP to Action class.
Let us create an Action class that will handle the request and will process the authentication. Create a class named LoginAction in net.viralpatel.struts.helloworld.action package. Copy paste following code in LoginAction class.
Let us create an Action class that will handle the request and will process the authentication. Create a class named LoginAction in net.viralpatel.struts.helloworld.action package. Copy paste following code in LoginAction class.
package net.viralpatel.struts.helloworld.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.viralpatel.struts.helloworld.form.LoginForm;
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 class LoginAction
extends Action {
public
ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest
request, HttpServletResponse response)
throws
Exception {
String
target = null;
LoginForm
loginForm = (LoginForm)form;
if(loginForm.getUserName().equals("admin")
&&
loginForm.getPassword().equals("admin123")) {
target
= "success";
request.setAttribute("message",
loginForm.getPassword());
}
else
{
target
= "failure";
}
return
mapping.findForward(target);
}
}
|
In action class,
we have a method called execute() which will be called by struts
framework when this action will gets called. The parameter passed to this
method are ActionMapping, ActionForm, HttpServletRequest and HttpServletResponse.
In execute() method we check if username equals admin and password is equal to
admin123, user will be redirected to Welcome page. If username and password are
not proper, then user will be redirected to login page again.
We will use the
internationalization (i18n) support of struts to display text on our pages.
Hence we will create a MessagesResources properties file which will contain all
our text data. Create a folder resource under src (Right click on src
and select New -> Source Folder). Now create a text file called
MessageResource.properties under resources folder.
Copy the
following content MessageResource.properties file.
label.username
= Login Detail
label.password
= Password
label.welcome =
Welcome
error.username
=Username is not entered.
|
Create two JSP
files, index.jsp and welcome.jsp with the following content in your WebContent
folder.
index.jsp
<%@taglib
uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%@taglib
uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean" %>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>Login
page | Hello World Struts application in Eclipse</title>
</head>
<body>
<h1>Login</h1>
<html:form
action="login">
<bean:message
key="label.username" />
<html:text
property="userName"></html:text>
<html:errors
property="userName" />
<br/>
<bean:message
key="label.password"/>
<html:password
property="password"></html:password>
<html:errors
property="password"/>
<html:submit/>
<html:reset/>
</html:form>
</body>
</html>
|
welcome.jsp
<%@ page
language="java" contentType="text/html;
charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<title>Welcome
page | Hello World Struts application in Eclipse</title>
</head>
<body>
<%
String
message = (String)request.getAttribute("message");
%>
<h1>Welcome
<%= message %></h1>
</body>
</html>
|
Now create a file
called struts-config.xml in WEB-INF folder. Also note that in web.xml
file we have passed an argument with name config to ActionServlet class with
value /WEB-INF/struts-config.xml.
Following will be the content of
struts-config.xml file:
<?xml version="1.0"
encoding="ISO-8859-1" ?>
<!DOCTYPE
struts-config PUBLIC
"-//Apache
Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean
name="LoginForm"
type="net.viralpatel.struts.helloworld.form.LoginForm"
/>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards></global-forwards>
<action-mappings>
<action
path="/login" name="LoginForm" validate="true" input="/index.jsp"
type="net.viralpatel.struts.helloworld.action.LoginAction">
<forward
name="success" path="/welcome.jsp" />
<forward
name="failure" path="/index.jsp" />
</action>
</action-mappings>
<message-resources
parameter="resource.MessageResource"></message-resources>
</struts-config>
|
And, that’s it .. We are done with our application and now its turn to run it. I hope you have already configured Tomcat in eclipse. If not then:
Open Server view from Windows -> Show View -> Server. Right click in this view and select New -> Server and add your server details.
To run the project, right click on Project name from Project Explorer and select Run as -> Run on Server (Shortcut: Alt+Shift+X, R)
Login Page
No comments:
Post a Comment