- Start with the struts-blank application
- Create the search.jsp file
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@ page import="beans.Employee,business.Sorter,java.util.List,org.displaytag.tags.TableTagParameters,org.displaytag.util.ParamEncoder"%>
<html:html>
<head>
<title>Search page</title>
<link rel="stylesheet" type="text/css"
href="/StrutsPaging/css/screen.css" />
</head>
<body bgcolor="white">
<html:form action="/search.do">
<table>
<tr>
<td>Minimum Salary:</td>
<td><html:text property="minSalary"></html:text></td>
</tr>
<tr>
<td colspan="2"><html:submit property="submit" /></td>
</tr>
</table>
</html:form>
<logic:notEqual name="empList" value="null">
<jsp:scriptlet>
if (session.getAttribute("empList") != null) {
String sortBy = request.getParameter((new ParamEncoder("empTable")).encodeParameterName(TableTagParameters.PARAMETER_SORT));
Sorter.sort((List) session.getAttribute("empList"), sortBy);
}
</jsp:scriptlet>
<display:table name="sessionScope.empList" pagesize="4" id="empTable" sort="external" defaultsort="1" defaultorder="ascending" requestURI="">
<display:column property="empId" title="ID" sortable="true" sortName="empId" headerClass="sortable" />
<display:column property="empName" title="Name" sortName="empName" sortable="true" headerClass="sortable" />
<display:column property="empJob" title="Job" sortable="true" sortName="empJob" headerClass="sortable" />
<display:column property="empSal" title="Salary" sortable="true" headerClass="sortable" sortName="empSal" />
</display:table>
</logic:notEqual>
</body>
</html:html>pages/search.jsp - Create the Action class:
public class SearchAction extends Action {
private BusinessInterface businessInterface;
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse httpservletresponse) throws Exception {
if (form == null) {
return mapping.findForward("success");
}
try {
SearchForm searchForm = (SearchForm) form;
if (searchForm.getMinSalary() == null || searchForm.getMinSalary().equals("")) {
return mapping.findForward("success");
}
long minSal = Long.parseLong(searchForm.getMinSalary());
System.out.println("Business Interface: " + businessInterface);
List data = businessInterface.getData(minSal);
System.out.println("Data : " + data);
request.getSession().setAttribute("empList", data);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("success");
}
public void setBusinessInterface(BusinessInterface bi) {
businessInterface = bi;
}
}SearchAction.java
Note that the action class has a property businessInterface. This property will be set by spring when loading the action class. - Define the form and action beans in struts-config.xml
<form-beans>
Note that, in the action-mapping, the action type is defined as "org.springframework.web.struts.DelegatingActionProxy". This will ensure that Spring will take care of handling struts actions.
<form-bean name="searchForm" type="forms.SearchForm" />
</form-beans>
<action-mappings>
<action path="/Welcome" forward="/pages/Welcome.jsp" />
<action name="searchForm" path="/search" scope="session" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/pages/search.jsp"></forward>
</action>
</action-mappings> - Integrate Struts And Spring: The final step of integration is to add a spring plugin to struts-config.xml. The plugin defines the location of the spring bean-factory definitions.
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
This is one way of integrating struts and spring, for other ways of integration, refer to : Get a better handle on Struts actions, with Spring
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml"/>
</plug-in>
Tuesday, December 05, 2006
Data Access with Spring and Struts: Part 1
The struts pagination post contained an example of using Hibernate for data access too. In this post, I use the same example to implement the same pagination example using Spring. In this part we will see how to get a struts application ready for spring, the next part describes how to implement data access in spring. Follow these steps to run the example.
Labels:
example/sample code,
persistence,
spring,
struts
Subscribe to:
Post Comments (Atom)
Popular Posts
-
In a previous post, I described how to use Quartz scheduler for scheduling . In this post, I describe the configuration changes required for...
-
The previous post described how to implement a JMS messaging client using Spring JMS . This post will describe how to implement the Message ...
-
This post will describe how to create and deploy a Java Web Application war to Heroku using Heroku CLI. You will need a basic understanding ...
-
JUnit 4 introduces a completely different API to the older versions. JUnit 4 uses Java 5 annotations to describe tests instead of using in...
-
New posts with iText 5.5.12 Following are two new posts for PDF Merge with iText 5.5.12 Merge PDF files using iText 5 Merge and Paginate PDF...
-
Roller is a Java based blog server. It is in Apache incubator as of now. Roller drives Sun Microsystem's blogs.sun.com employee bloggi...
-
In the previous post, I described the use of Displaytag to implement paging in a simple JSP. In this example, I describe the use of Displayt...
-
In the past, I wrote a post on how to implement Web Services using JAX-WS on Glassfish, and Apache Axis. In this post I will describe how to...
-
Redhat Enterprise Linux provides Redhat Developer Toolset , which allows you to install Git. However, it is usually an older version. If you...
-
Last week, I described how to implement JMS, using a stand-alone client and a Message Driven Bean . In this post and the next, I will descr...
do you have any idea of integrating struts with spring 2... i mean is theare any proxy class for Spring2. The example you have given is for Spring 1.x
ReplyDeleteThis example was implemented on Spring 2.0.1.
ReplyDeleteHi, Im having some problems while trying to use Spring AOP with Struts Actions, and I wonder if you could help me?
ReplyDeleteIm using spring 2.0.4, and struts 1.3, I dont know if that makes any difference?
So my struts-config is something like this:
....
< action-mappings>
< action path="/prueba"
type="org.springframework.web.struts.DelegatingAct ionProxy"
scope="request" validate="false" parameter="cmd">
< /action>
< /action-mappings>
< plug-in className="org.springframework.web.struts.ContextL oaderPlugIn">
< set-property property="contextConfigLocation"
value="WEB-INF/classes/applicationContext.xml"/>
< /plug-in>
..
And my bean definition is:
....
< bean name="/prueba" scope="prototype" autowire="byName"
class="prueba.integracion.PruebaAction" />
< aop:aspectj-autoproxy proxy-target-class="true" />
...
The error Im getting is org.springframework.beans.factory.BeanNotOfRequire dTypeException, Bean named '/prueba' must be of type [org.apache.struts.action.Action], but was actually of type [$Proxy6]
Im a bit stuck with this, so Id appreciatte any help.
Thanks
Try in struts instead this:
ReplyDelete> action path="/prueba"
type="org.springframework.web.struts.DelegatingAct ionProxy"
scope="request" validate="false" parameter="cmd"<
something like this(without DelegatingAct ionProxy):
>action path="/edit" name="inputForm"
type="example.action.ViewAction" validate="false" scope="request"
parameter="op"<
>forward name="list" path="/jsp/index.jsp" /<
<forward name="add" path="/jsp/input.jsp" />
</action>
and add:
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
From the tons of comments on your articles, Thank you.
ReplyDeleteSo wonderful to discover somebody with some original thoughts on this topic.
ReplyDeleteWe actually installed a roof on one of their homes in Texas! Great guys.
ReplyDeleteAppreciating the time and effort you put into your site and detailed information you offer.
ReplyDeleteAs a marketing communications student, thank you!!
ReplyDeleteYour post is very interesting to me. Reading was so much fun.
ReplyDelete