Showing posts with label Struts. Show all posts
Showing posts with label Struts. Show all posts

Wednesday 16 November 2011

Struts FAQS


Struts Advanced Actions - Where to use them
Advanced Actions in Struts -
1. Dispatch Action
2. Lookup Dispatch Action
3. Mapping Dispatch Action
4. Switch Action
5. Forward Action
6. Include Action
1. Dispatch Action -
1 . When you want to write more than 1 action in same action then you can use dispatch action.
2 . Action will extends DisptchAction
public class DispatchAction1 extends DispatchAction
{
public ActionForward add(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)
{
}
public ActionForward delete(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)
{
}
}
3 . In struts-config.xml you have to specify a parameter
<action path="/dispatchtest"
type="com.DispatchAction.DispatchAction1"
name="dispatchform"
input="/pages/DispatchTest.jsp"
parameter="method">
<forward name="add" path="/pages/add.jsp"/>
<forward name="delete" path="/pages/delete.jsp"/>
</action>
4 . In jsp you can call action like this /dispatchtest.do?method='add' or /dispatchtest.do?method='delete'
2. Lookup Dispatch Action -
1 . When you want to have more than one submit button in same form in jsp then you can use dispatch action.
2 . Action will extends LookupDispatchAction and you have to override getKeyMethodMap method like this below.
public class LookupAction extends LookupDispatchAction
{
protected Map getKeyMethodMap() {
Map map=new HashMap();
map.put("submit.add","add");
map.put("submit.delete","delete");
return map;
}
public ActionForward add(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)
{ }
}
3 . In struts-config.xml you have to specify a parameter
<action path="/lookup"
type="com.lookupdispatch.LookupAction"
name="lookupform"
input="/pages/LookupTest.jsp"
parameter="method">
<forward name="add" path="/pages/add.jsp"/>
<forward name="delete" path="/pages/delete.jsp"/>
</action>
4. In jsp
<html:html>
<body>
<html:form action="/lookup">
<h2><u>LookUpForm</u></h2>
Number1:<html:text property="n1" value=""/><br><br>
Number2:<html:text property="n2" value=""/><br><br>
<html:submit property="method" value="add"></html:submit>
<html:submit property="method">delete</html:submit>
</html:form>
</body>
</html:html>

5.In properties file you have to specify these properties which are in getKeyMethodMap method.
submit.add=add
submit.delete=delete

3. Mapping Dispatch Action -
1.When you want to write more than 1 action in same action but you want to call that actions by different url's then you can use Mapping dispatch action.
2. Action will extends MappingDispatchAction
public class MappingAction extends MappingDispatchAction
{
public ActionForward add(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)
{
}
public ActionForward delete(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)
{
}
}
3. In struts-config.xml you can give one url for each action in mapping dispatch action and also you have to specify action name as parameter.
<action path="/mappingtest1"
type="com.mapping.MappingAction"
name="mapform"
input="/pages/MappingTest.jsp"
parameter="add">
<forward name="add" path="/pages/add.jsp"/>
</action>
<action path="/mappingtest2"
type="com.mapping.MappingAction"
name="mapform"
input="/pages/MappingTest.jsp"
parameter="delete">
<forward name="delete" path="/pages/delete.jsp"/>
</action>
4. In jsp
<html:html>
<head>
<script type="text/javascript">
function Addtest()
{
document.testform.action="../mappingtest1.do";
document.testform.submit();
}
function Deletetest()
{
document.testform.action="../mappingtest2.do";
document.testform.submit();
}
</script>
</head>
<body>
<form name="testform">
<h2><u>Mapping Dispatch Form</u></h2>
Number1:<html:text property="n1" value=""/><br><br>
Number2:<html:text property="n2" value=""/><br><br>
<input type="button" value="Add" onclick="Addtest()"/>
<input type="button" value="Delete" onclick="Deletetest()"/>
</form>
</body>
</html:html>
4. Include Action -
Include action works like <jsp:include> main difference between them include action works through controller.
1. In struts-config.xml -
<action path="/includetest"
type="org.apache.struts.actions.IncludeAction"
parameter="/pages/Includehello.jsp"
input="/pages/IncludeTest.jsp">
</action>
Here type is org.apache.struts.actions.IncludeAction and parameter which file you have to include that name and input is from where
you are inlcuding that file.
2.In Jsp -
<html:html>
<BODY>
<H2><u>Include Action</H2></u>
<html:link page="/includetest.do">Go to Include Page</html:link>
</html:html>
5. Forward Action -
Forward action is similar to <jsp:forward> main difference between them forward action works through controller.
1. In struts-config.xml -
<action path="/forwardtest"
type="org.apache.struts.actions.ForwardAction"
parameter="/pages/ForwardSuccess.jsp"
input="/pages/ForwardTest.jsp">
</action>
Here type is org.apache.struts.actions.ForwardAction and parameter which file you have to forward that name and input is from where
you are forwarding that file.
2.In Jsp -
<html:html>
<H2><u>Forward Action</H2></u>
<html:link page="/forwardtest.do">Click to Forward Success Page</html:link>
</html:html>
5.Switch Action -
Switch Action mainly used for switching from one config file to another config file.When you want to call action from one config file which is in other config file then you can use this action.
1. web.xml - How to put 2 config files in struts
<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>
<init-param>
<param-name>config/test</param-name>
<param-value>/WEB-INF/test-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2. In struts-config.xml -
<action path="/switch"
type="org.apache.struts.actions.SwitchAction"/>
<action path="/switchtest"
type="com.switchdispatch.Switchaction"
name="switchform"
input="/pages/SwitchTest.jsp">
<forward name="add" path="/switch.do?page=/test1.do&prefix=/test"
contextRelative="true" redirect="true"/>
</action>
Here we have to define a path for switch action like '/switch' type is "org.apache.struts.actions.SwitchAction" .
When you want to forward success page to another action which is not in struts-config.xml then path is "/switch.do?page=/test1.do&prefix=/test"
Here "/switch" is switch action path and page is where you want to forward which is in other xml and prefix is path of other xml (check in web.xml).
3.In test-config.xml
<struts-config>
<form-beans>
<form-bean name="testform1" type="com.switchdispatch.TestForm"/>
</form-beans>
<action-mappings>
<action path="/test1" name="testform1" input="/pages/test1.jsp" type="com.switchdispatch.TestAction" scope="request">
<forward name="success" path="/pages/hello.jsp" contextRelative="true" redirect="true" />
</action>
</action-mappings>
</struts-config>
4.We can call action like this "/switchtest.do" .
0 comments 
Tiles Example in Struts
Here I am explaining how to use Tiles in Struts .
tiles-defs.xml
<?xml version="1.0"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<!-- Main Layout -->
<definition name=".mainLayout" path="/WEB-INF/layout/layout.jsp">
<put name="header" value="/WEB-INF/layout/header.jsp"/>
<put name="content" value="/WEB-INF/layout/center.jsp"/>
<put name="navigation" value="/WEB-INF/layout/navigation.jsp"/>
</definition>
<definition name=".success" extends=".mainLayout">
<put name="navigation" value="/WEB-INF/layout/tab1.jsp"/>
<put name="content" type="page" value="/WEB-INF/layout/tab1display.jsp"/>
</definition>
<definition name=".tab1" extends=".mainLayout">
<put name="navigation" value="/WEB-INF/layout/tab1.jsp"/>
<put name="content" type="page" value="/WEB-INF/layout/tab1display.jsp"/>
</definition>
<definition name=".tab2" extends=".mainLayout">
<put name="navigation" value="/WEB-INF/layout/tab2.jsp"/>
<put name="content" type="page" value="/WEB-INF/layout/tab2display.jsp"/>
</definition>
</tiles-definitions>
struts-config.xml
<struts-config>
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config"
value="/WEB-INF/tiles-defs.xml"/>
</plug-in>
</struts-config>
tilessuccess.jsp
<%@ taglib prefix="t" uri="/WEB-INF/struts-tiles.tld" %>
<t:insert definition=".success" />
/WEB-INF/layout/layout.jsp
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib prefix="t" uri="/WEB-INF/struts-tiles.tld" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="./css/main.css">
</head>
<body>
<div id="header">
<t:insert attribute="header" flush="false" ignore="false" />
</div>
<div id="left">
<t:insert attribute="navigation" flush="false" ignore="false" />
</div>
<div id="center">
<t:insert attribute="content" flush="false" ignore="false" />
</div>
</body>
</html>
/WEB-INF/layout/header.jsp
<html>
<body> <br>
<a href="tab1.jsp" ><img src="./images/Tab1.GIF"/></a>
<a href="tab2.jsp"><img src="./images/Tab2.GIF"/></a>
</body>
</html>
/WEB-INF/layout/center.jsp
This is Center
/WEB-INF/layout/navigation.jsp
<div class="jive-sidebar">
</div>
<div class="jive-sidebar">
This is Left Tile
</div>
(outside)
tab1.jsp
<%@ taglib prefix="t" uri="/WEB-INF/struts-tiles.tld" %>
<t:insert definition=".tab1" />
tab2.jsp
<%@ taglib prefix="t" uri="/WEB-INF/struts-tiles.tld" %>
<t:insert definition=".tab2" />
/WEB-INF/layout/tab1.jsp
<h2>Tab1</h2>
/WEB-INF/layout/tab2.jsp
<h2>Tab2</h2>
/WEB-INF/layout/tab1display.jsp
<h2>This is Tab1 Content
/WEB-INF/layout/tab2display.jsp
<h2>This is Tab2 Content
web.xml
<web-app>
<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>
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>tilessuccess.jsp</welcome-file>
</welcome-file-list>
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
</web-app>
main.css
body
{ margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-left: 0;
padding-right: 0;
background-color: #fff;
font-family: Verdana, Arial, Helvetica, sans-serif;
background-image : url("../images/page-background.gif");
background-repeat : repeat-y;
}
/* header */
#header {
width : 100%;
height : 62px;
border : 0px;
background-image : url("../images/header-background.gif");
background-repeat : repeat-x;
background-color : #369;
font-size : 12pt;
color : white;
padding-left : 2em;
text-align : left;
}
#header LI {
display : inline;
padding : 3px;
margin : 0px;
}
#header LI {
font-family : verdana;
font-size : 8pt;
font-weight : bold;
}
#header A {
color : white;
text-decoration : none;
padding : 3px 5px 3px 5px;
}
#header A:hover {
color : #fff;
text-decoration : underline;
}
#header a.active {
color : #fff;
text-decoration : underline;
}
/* left */
#left {
padding : 0px 5px 5px 5px;
}
#left ul {
margin: 0; /*removes indent IE and Opera*/
padding: 0 0 0 0; /*removes indent Mozilla and NN7*/
list-style-type: none; /*turns off display of bullet*/
font-family: verdana, Arial, Helvetica, sans-serif;
font-size: 8pt;
}
#left li {
margin: 0 15px 2px 0px;
width : 140px;
}
#left a {
display: block;
padding: 2px 2px 2px 10px;
border: 1px solid #fff;
width: 140px;
-moz-border-radius : 3px;
background-color: #fff;
}
#left a.active {
border: 1px solid #369;
background-color: #CBDDEE;
color: #333;
}
#left a:hover {
/*
border: 1px solid #369;
background-color : #CBDDEE;
color: #333;
*/
border : 1px solid #963;
background-color : #ffc;
}
#left .currentlink a,
#left .currentlink a:link,
#left .currentlink a:visited,
#left .currentlink a:hover
{
border: 1px solid #369;
background-color: #CBDDEE;
color: #333;
}
#left .category {
padding-top : 1.5em;
padding-bottom : 0.5em;
font-weight : bold;
}
#left .subitems LI {
margin-left : 10px;
width : 130px;
}
#left .subitems LI A {
margin-left : 10px;
padding : 2px 2px 2px 5px;
width : 120px;
}
/* general anchor colors */
a:link, a:visited { color:#333333; text-decoration:underline; }
a:hover { color:#6C99FF; text-decoration:underline; }
/* center */
#center {
top: 0;
margin-left: 200px;
margin-right: 230px;
height: 400px;
min-height: 400px;
}
*>#center {
height: auto;
}
#center_more {
top: 0;
margin-left: 200px;
margin-right: 10px;
height: 400px;
min-height: 400px;
text-align: left;
}
*>#center_more {
height: auto;
}
#center ul li {
margin-left: 0;
margin-bottom: 5px;
padding-left: 0;
font-size: .75em;
}
#center h1 {
font-size:0.95em;
font-weight:bold;
}
#center h2 {
font-size:0.85em;
font-weight: bold;
}
#center h3 {
font-size: 0.8em;
}
#center p {
font-size:0.75em;
}
#center table {
font-size: 0.75em;
}
#center table td.course {
background-color: #FFFFCC;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 2px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-top-color: #999999;
border-right-color: #999999;
border-bottom-color: #999999;
border-left-color: #999999;
}
#center_more h1 {
font-size:0.95em;
font-weight:bold;
}
#center_more h2 {
font-size:0.85em;
font-weight:bold;
}
#center_more h3 {
font-size: 0.8em;
}
#center_more p {
font-size:0.75em;
}
#center_more table {
font-size: 0.75em;
}
#center_more table td.course {
background-color: #FFFFCC;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 2px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-top-color: #999999;
border-right-color: #999999;
border-bottom-color: #999999;
border-left-color: #999999;
}
#center_more table {
font-size: 0.75em;
}
#navTop li:hover ul {
left: 0;
top: 100%;
}
#navTop li:hover ul, #navTop li.over ul {
left: 0;
top: 100%;
}
0 comments 
How to use Nested Tags in Struts
Here I am explaining how to use Nested Tags in Struts .
College.java
package com.Nested;
import java.util.*;
public class College {
private int id;
private String name;
private Collection Students;
public College() {}
public College(int id, String name, Collection students){
this.id = id;
this.name = name;
this.Students = students;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Collection getStudents() {
return Students;
}
public void setStudents(Collection students) {
Students = students;
}
}
NestedAction.java
package com.Nested;
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;
public class NestedAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
NestedForm booksForm = (NestedForm) form;
return mapping.findForward("nested");
}
}
NestedForm.java
package com.Nested;
import java.util.*;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NestedForm extends ActionForm {
College college;
public College getCollege() {
return college;
}
public void setCollege(College college) {
this.college = college;
}
Students student;
public Students getStudent() {
return student;
}
public void setStudent(Students student) {
this.student = student;
}
public void reset(ActionMapping mapping,HttpServletRequest request) {
Collection Students = new ArrayList();
Students.add(new Students("1", "Santhi","MCA"));
Students.add(new Students("2", "Prasanthi","MBA"));
Students.add(new Students("3", "Madhuri","MBA"));
Students.add(new Students("4", "Harini","MBA"));
Students.add(new Students("5", "Shalini","MCA"));
college = new College(1, "GIPS", Students);
}
}
Students.java
package com.Nested;
/**
* @author Prasanthi
*
*/
public class Students {
private String id;
private String name;
private String course;
public Students(){}
public Students(String id, String name,String course){
this.id = id;
this.name = name;
this.course=course;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
}
NestedTest.jsp
<%@ page language="java"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-nested" prefix="nested"%>
<html>
<body>
<br><br>
<center>
<h2><u>Nested Example</u></h2>
<html:form action="/nest" method="post">
<nested:nest property="college">
<b>
College Name:<nested:write property="name"/></b><br>
<h3><u>Students Table</u></h3>
<table border="1" cellpadding="1" cellspacing="2" width="40%">
<tr><td align="center">ID</td>
<td align="center">Name</td>
<td align="center">Course</td>
</tr>
<nested:iterate property="students">
<tr> <td align="center"><nested:write property="id"/></td>
<td align="center"><nested:write property="name"/></td>
<td align="center"><nested:write property="course"/></td>
</tr>
</nested:iterate>
</table>
</nested:nest>
</html:form>
</body>
</html>
web.xml
<web-app>
<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>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>NestedTest.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</web-app>
struts-config.xml
<struts-config>
<form-beans>
<form-bean name="Nestedform" type="com.Nested.NestedForm" />
</form-beans>
<action-mappings>
<action
path="/nest"
type="com.Nested.NestedAction"
input="/NestedTest.jsp"
name="Nestedform"
scope="request"
validate="false">
<forward name="nested" path="NestedTest.jsp" />
</action>
</action-mappings>
</struts-config>
0 comments 
How use Bean Tags and Message Resources in Struts
Here I am explaining how use Bean Tags and Message Resources in Struts .
SampleForm.java
package com.MessageResources;
import org.apache.struts.action.ActionForm;
/**
*
* @author Prasanthi
*
*/
public class SampleForm extends ActionForm{
String name=null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
SampleAction.java
package com.MessageResources;
import org.apache.struts.action.*;
import javax.servlet.http.*;
/**
*
* @author Prasanthi
*
*/
public class SampleAction extends Action{
public ActionForward execute(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)throws Exception
{
SampleForm sample=(SampleForm)form;
String n1=sample.getName();
HttpSession ses=req.getSession(true);
ses.setAttribute("name",n1);
return map.findForward("success");
}
}
ApplicationResources.properties
hello.name=Enter your name
hello.submit=Enter
hello.welcome=Welcome To
beansample.jsp
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<html:html>
<body>
<br><br>
<center><h2><u>Sample Struts Form</h2></u>
<font color="red"> These Text messages from properties see code.<br><br></font>
<html:form action="/sample">
<bean:message key="hello.name" /><html:text property="name" /><br><br>
<html:submit><bean:message key="hello.submit" /></html:submit>
</html:form>
</body>
</html:html>
beansuccess.jsp
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<html>
<body><br><br>
<h2><center>
<bean:message key="hello.welcome" /><%=(String)session.getAttribute("name")%>
</body>
</html>
web.xml
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<welcome-file-list>
<welcome-file>beansample.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts-config.xml
<struts-config>
<form-beans>
<form-bean name="samplebean" type="com.MessageResources.SampleForm" />
</form-beans>
<action-mappings>
<action path="/sample"
name="samplebean"
type="com.MessageResources.SampleAction"
input="beansample.jsp"
scope="request">
<forward name="success" path="/beansuccess.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResources"/>
</struts-config>
0 comments 
How To Use Logic Tags in Struts
Here I am explaining how to use Logic Tags in Struts .
CdTest.java
package com.LogicTags;
import java.util.List;
public class CdTest {
String title;
String id;
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public CdTest() {
this.title="pokiri";
this.id="1";
}
}
Cd.java
package com.LogicTags;
import java.util.List;
public class Cd {
String title;
int id;
List actors;
public Cd(String title, int id, List actors) {
this.title = title;
this.id = id;
this.actors = actors;
}
public String getTitle() {return title;}
public int getId() {return id;}
public List getActors() {
return actors;
}
}
CdForm.java
package com.LogicTags;
import java.util.*;
public class CdForm {
List CDList = new LinkedList();
public CdForm() {
List list1 = new LinkedList();
list1.add("Ameer Khan");
list1.add("Kajol");
Cd cd1 = new Cd("Fana", 1, list1);
CDList.add(cd1);
List list2 = new LinkedList();
list2.add("Mahesh Babu");
list2.add("Iliana");
Cd cd2 = new Cd("Pokiri", 2, list2);
CDList.add(cd2);
}
public List getCDList() {
return CDList;
}
}
web.xml
<web-app>
<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>2</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>LogicTest.jsp</welcome-file>
</welcome-file-list>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</web-app>
LogicTest.jsp
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<jsp:useBean id="cds" class="com.LogicTags.CdForm" scope="session" />
<jsp:useBean id="cdt" class="com.LogicTags.CdTest" scope="request"/>
<body>
<center>
<br><br>
<h2><u>Logic Tags Examples</u></h2><br>
<b><u>logic:notEqual Example</u> </b>
<logic:notEqual name="cdt" property="title" value="The Matrix">
This CD The Matrix is not available
</logic:notEqual> <br><br>
<b><u>logic:equal Example</u> </b>
<logic:equal name="cdt" property="title" value="pokiri">
This CD Pokiri available
</logic:equal><br><br>
<b><u>logic:present Example</u> </b>
<logic:present name="cdt" property="title">
title property is available
</logic:present><br><br>
<b><u>logic:notPresent Example</u> </b>
<logic:notPresent name="cdt" property="name">
name property is not available
</logic:notPresent><br><br>
<b><u>logic:iterate Example</u> </b><br>
<b>CdList</b>
<table border=1 >
<tr>
<th>Title</th>
<th>Id</th>
<th>Actors</th>
</tr>
<logic:iterate id="cd" name="cds" property="CDList">
<tr>
<td><bean:write name="cd" property="title" /></td>
<td><bean:write name="cd" property="id" /></td>
<td><bean:write name="cd" property="actors" /></td>
</tr>
</logic:iterate>
</table>
</body>
0 comments 
Internalization in struts
Here I am explaining how to do Internalization in struts .
struts-config.xml
<?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="Iform" type="com.Internalization.InternalizeForm"/>
</form-beans>
<action-mappings>
<action name="Iform"
path="/internalize"
type="com.Internalization.InternalizeAction"
scope="session"
input="Internalize.jsp">
<forward name="success" path="/Internalization.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
<message-resources parameter="ApplicationResources_de_DE" />
<message-resources parameter="ApplicationResources_sv_SE" />
<message-resources parameter="ApplicationResources_fr_FR" />
</struts-config>
web.xml
<web-app>
<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>2</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>Internalize.jsp</welcome-file>
</welcome-file-list>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
</web-app>
InternalizeForm.java
package com.Internalization;
import org.apache.struts.action.ActionForm;
public class InternalizeForm extends ActionForm{
public String lang;
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
}
InternalizeAction.java
package com.Internalization;
import java.util.Enumeration;
import java.util.Locale;
import java.util.ResourceBundle;
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;
public class InternalizeAction extends Action {
public ActionForward execute(ActionMapping map,ActionForm form,HttpServletRequest req,HttpServletResponse res)throws Exception
{
String lang = req.getParameter("lang");
if (lang == null) {
lang="English";
}else {
ResourceBundle bundle=null;
Locale locale=null;
if (lang.equals("German")) {
locale=Locale.GERMANY;
} else if (lang.equals("French")) {
locale=Locale.FRANCE;
} else if (lang.equals("Swedish")) {
locale=new Locale("sv","SE");
} else {
locale=Locale.US;
}
HttpSession session=req.getSession();
session.putValue("myLocale",locale);
bundle = ResourceBundle.getBundle("ApplicationResources",locale);
for (Enumeration e = bundle.getKeys();e.hasMoreElements();) {
String key = (String)e.nextElement();
String s = bundle.getString(key);
session.putValue(key,s);
}
}
return map.findForward("success");
}
}
ApplicationResources.properties
hello.name=Name
hello.password=Password
hello.course=Course
hello.college=College
hello.city=City
hello.submit=submit
ApplicationResources_de_DE.properties
hello.name=Name-de
hello.password=Password-de
hello.course=Course-de
hello.college=College-de
hello.city=City-de
hello.submit=submit-de
ApplicationResources_fr_FR.properties
hello.name=Name-fr
hello.password=Password-fr
hello.course=Course-fr
hello.college=College-fr
hello.city=City-fr
hello.submit=submit-fr
ApplicationResources_sv_SE.properties
hello.name=Name-sv
hello.password=Password-sv
hello.course=Course-sv
hello.college=College-sv
hello.city=City-sv
hello.submit=submit-sv
Internalize.jsp
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<html:html >
<body><br><br>
<center>
<h3><u>
Please select a language </u></h3>
<html:form action="/internalize">
English <input type="radio" name="lang" value="English" checked>
German <input type="radio" name="lang" value="German">
French <input type="radio" name="lang" value="French">
Swedish<input type="radio" name="lang" value="Swedish">
<br><br>
<html:submit />
</html:form>
</body>
</html:html>
Internalization.jsp
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ page import="java.util.*" %>
<html:html>
<body>
<%Locale myLocale = (Locale)session.getValue("myLocale"); %>
<br><br>
<center><h3><u>Sample Messages</u></h3>
<form>
<table>
<tr><td><%=session.getValue("hello.name")%></td>
<td><input type="text" /></td></tr>
<tr><td><%=session.getValue("hello.password")%></td>
<td><input type="text" /></td></tr>
<tr><td><%=session.getValue("hello.course") %></td>
<td><input type="text" /></td></tr>
<tr><td><%=session.getValue("hello.college") %></td>
<td><input type="text" /></td></tr>
<tr><td><%=session.getValue("hello.city") %></td>
<td><input type="text" /></td></tr>
<tr><td></td><td colsapn="2"><html:submit> <%=session.getValue("hello.submit") %></html:submit></td></tr>
</table>
</form>
</body>
</html:html>
1 comments 
Exception handling in struts
Here I am explaining how to handle Exceptions in struts .
struts-config.xml
<?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="exceptionform" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="id" type="java.lang.String"/>
</form-bean>
</form-beans>
<global-exceptions>
<exception
key ="errors.exception1"
type="com.Exception.Exception1"
handler="com.Exception.MyHandler"
path="/Except.jsp"/>
<exception
key ="errors.exception2"
type="com.Exception.Exception2"
handler="com.Exception.MyHandler"
path="/Except.jsp"/>
</global-exceptions>
<action-mappings>
<action path="/exceptiontest"
name="exceptionform"
scope="request"
input="/ExceptionTest.jsp"
validate="true"
type="com.Exception.ExceptionTest">
<forward name="success" path="/ExceptionTest.jsp"/>
<forward name="failure" path="/Except.jsp"/>
</action>
</action-mappings>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
web.xml
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>ExceptionTest.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
</web-app>
Exception1.java
package com.Exception;
public class Exception1 extends Exception {
public Exception1() {
super();
}
public Exception1(String message) {
super(message);
}
public Exception1(String message, Throwable cause) {
super(message, cause);
}
public Exception1(Throwable cause) {
super(cause);
}
}
Exception2.java
package com.Exception;
public class Exception2 extends Exception {
public Exception2() {
super();
}
public Exception2(String message) {
super(message);
}
public Exception2(String message, Throwable cause) {
super(message, cause);
}
public Exception2(Throwable cause) {
super(cause);
}
}