java4all@1986 java. Powered by Blogger.

Developing our own struts PlugIn?

>> Friday, June 24, 2011

Understanding Of Plug In:

Struts PlugIns are configured using the <plug-in> element within the Struts configuration file. This element has only one valid attribute, 'className', which is the fully qualified name of the Java class which implements the org.apache.struts.action.PlugIn interface.

For PlugIns that require configuration themselves, the nested <set-property> element is available.

The plug-in tag in the struts-config.xml file is used to declare the PlugIn to be loaded at the time of server start-up. Following example shows how to declare the Tiles PlugIn:
<plug-in className="org.apache.struts.tiles.TilesPlugin">
  <set-property
  property="definitions-config"
   value="/WEB-INF/tiles-defs.xml"/>
</plug-in>

The above declaration instructs the struts to load and initialize the Tiles plugin for your application on startup.

Writing Struts PlugIn Java Code

In this example we write Sailajaword Struts PlugIn example that will give you idea about creating, configuring and checking Struts PlugIn. Our Sailajaword Stuts PlugIn contains a method called Say Hello, which simply returns HelloWorld message.

Here is code of Sailajaword Struts Plugin:

package roseindia.net.plugin;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import org.apache.struts.action.PlugIn;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ModuleConfig;

/**
* @author Deepak Kumar
* @Web http://www.roseindia.net
* @Email roseindia_net@yahoo.com
*/


public class SailajawordStrutsPlugin implements PlugIn {


  public static final String PLUGIN_NAME_KEY 
  = SailajawordStrutsPlugin.class.getName();

 public void destroy() {
  System.out.println("Destroying Sailajaword World PlugIn");
 }

 public void init(ActionServlet servlet, ModuleConfig config) 
throws ServletException {
  System.out.println("Initializing Sailajaword World PlugIn");
 ServletContext context = null;
 context = servlet.getServletContext();
SailajawordStrutsPlugin objPlugin = new SailajawordStrutsPlugin();
 context.setAttribute(PLUGIN_NAME_KEY, objPlugin);

 }

  public String sayHello(){
  System.out.println("Sailaja Plugin");
  return "Hello Plugin";
  }
  
}

Configuring PlugIn in Struts-config.xml


To configure the plugin add the following line your struts-config.xml file.

<plug-in className="roseindia.net.plugin.SailajawordStrutsPlugin">
</plug-in>

How to Call PlugIn In Jsp Page
 Here is the code how to call the plugIn
<%@page contentType="text/html" import="java.util.*,roseindia.net.plugin.*" %>
<%

ServletContext servletContext = this.getServletContext();


HelloWorldStrutsPlugin plugin= (HelloWorldStrutsPlugin) servletContext.getAttribute
(HelloWorldStrutsPlugin.PLUGIN_NAME_KEY);

String strMessage = plugin.sayHello();

%>

Message From Plugin: <%=strMessage%>

The output will be sailaja PlugIn

Read more...

Getting struts datasource from struts-config.xml?

This tutorial shows you how you can configure Struts DataSource Manager on the Tomcat 5.5.9 server. We will use struts 1.2.7 in this tutorial. In this tutorial we will configure Struts DataSource Manager to use MySQL Database and use the connection provided by Struts DataSource in action class.

Downloading and Installing Tomcat 5.5.9
Download jakarta-tomcat-5.5.9 from http://jakarta.apache.org/tomcat/. Install it on your machine. Run and test the pages that comes with the tomcat.

Download Struts
Download Struts struts-1.2.7 from http://struts.apache.org/download.cgi and unzip it to your favorite directory. Go to the struts-1.2.7\webapps directory and then unzip struts-blank.war file. We will use this file to write our tutorial.

Download MySQL JDBC Driver

Download mysql-connector-java-3.0.16-ga-bin.jar from here mysql-connector-java-3.0.16-ga-bin.jar or you can download and use the latest version of mysql jdbc driver. Copy the JDBC driver file (mysql-connector-java-3.0.16-ga-bin.jar or latest version) to the jakarta-tomcat-5.5.9\common\lib directory of your tomcat installation. This will add the MySQL JDBC driver to the tomcat server.

Creating MySQL Database

In this tutorial I am using MySQL server installed on my local machine. You can download and install MySQL on your local machine and use for this tutorial. If you already have MySQL server then you can use the existing MySQL server.


Configuring Struts Application
Now create a directory "strutsdatabase" in the jakarta-tomcat-5.5.9\webapps\ directory and copy the content of struts-blank application (unzipped above) in the strutsdatabase directory.

Now start the tomcat and try to access the strutsdatabase application by typing the url http://localhost:8080/strutsdatabase in browser. Your browser should display the welcome page. After testing shutdown the tomcat server.

Configuring Struts DataSource Manager
The Struts DataSource manager makes it easy for your Action class get the database connection. To configure the Stuts DataSource Manager we will uncomment the <data-sources> entry in the struts-config.xml.

Uncomment and then <data-sources> entry in the struts-config.xml and then change the line "org.apache.commons.dbcp.BasicDataSource" to "org.apache.tomcat.dbcp.dbcp.BasicDataSource". In tomcat 5.5.9 dbcp classes are packaged in naming-factory-dbcp.jar archieve, so we are using "org.apache.tomcat.dbcp.dbcp.BasicDataSource" instead of "org.apache.commons.dbcp.BasicDataSource". After this change the database dirver, database url and passwor in the <data-sources> tag.

In struts-config.xml your <data-source> look like below

<data-sources>
<data-source type="org.apache.tomcat.
dbcp.dbcp.BasicDataSource">
    <set-property
      property="driverClassName"
      value="com.mysql.jdbc.Driver" />
    <set-property
      property="url"
      value="jdbc:mysql://localhost:3306
/strutsdatabase?autoReconnect=true" />
    <set-property
      property="username"
      value="root" />
    <set-property
      property="password"
      value="" />
    <set-property
      property="maxActive"
      value="10" />
    <set-property
      property="maxWait"
      value="5000" />
    <set-property
      property="defaultAutoCommit"
      value="false" />
    <set-property
      property="defaultReadOnly"
      value="false" />
    <set-property
      property="validationQuery"
      value="SELECT COUNT(*) FROM test" />
</data-source>
</data-sources>
Create an action class to test the Data source
  
package test;

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 java.sql.*;

public class TestDataSource extends Action
{
  public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) throws Exception{

 javax.sql.DataSource dataSource;
 java.sql.Connection myConnection=null;
 try {
  dataSource = getDataSource(request);
  myConnection = dataSource.getConnection();
  Statement stmt=myConnection.createStatement();
  ResultSet rst=stmt.executeQuery("select

 username from test");
  System.out.println("*************

*****************************");
  System.out.println("********Out

 Put from TestDataSource ******");
  while(rst.next()){
  System.out.println("User Name is:

 " + rst.getString("username"));
  }
  System.out.println("************

******************************");
  rst.close();
  stmt.close();
  // do what you wish with myConnection
 } catch (SQLException sqle) {
  getServlet().log("Connection.process", sqle);
 } finally {
  //enclose this in a finally block to make
  //sure the connection is closed
  try {
 myConnection.close();
  } catch (SQLException e) {
 getServlet().log("Connection.close", e);
  }
 }


  return mapping.findForward("success");
  }
}  
The following code can be used to get Datsource ans connection from Struts DataSource
dataSource = getDataSource(request);
myConnection = dataSource.getConnection();


Save this file(TestDataSource.java)  into jakarta-tomcat-5.5.9\webapps\strutsdatabase\WEB-INF\src\java\test directory. Add the servlet API into class path. Then open dos prompt and navigate to jakarta-tomcat-5.5.9\webapps\strutsdatabase\WEB-INF\src\ directory and issue run ant. This will compile the action class (TestDataSource.java) and copy it to the classes directory of the webapplication.


Our <action-mappings>  looks below
 
<action
  path="/DataSource"
  type="test.TestDataSource">
  <forward name="success" path="/success.jsp"/>
</action>

This is all about how to get DataSource and Connection From Struts DataSource

Read more...

Deployement Discriptor in Struts or web.xml in struts?

Deployment Descriptor
                       What we will configure in web.xml in struts
            
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

  <!-- Action Servlet Configuration -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
    <param-name>application</param-name>
    <param-value>test.struts.MessageResources</param-value>
  </init-param>
    <init-param>
      <param-name>mapping</param-name>
      <param-value>org.apache.struts.action.RequestActionMapping</param-value>
    </init-param>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</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>index.html</welcome-file>
  </welcome-file-list>

  <!-- Struts Tag Library Descriptors -->
  <jsp-config>
  <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-template.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
  </taglib>
</jsp-config>
</web-app>

Read more...

What do we will configure in struts-config.xml?

                                            STRUTS-CONFIG.XML

The main control file in the Struts framework is the struts-config.xml XML file, where action mappings are specified.

This file’s structure is described by the struts-config DTD file, which is defined at http://jakarta.apache.org/struts/. A copy of the DTD can be found on the /docs/dtds subdirectory of the framework’s installation root directory. The top-level element is struts-config.

        STRUTS-CONFIG.XML
           
<struts-config>

 <!-- ========== Data Source Decleration ============ -->
<data-sources>
<data-source type="org.apache.tomcat.
dbcp.dbcp.BasicDataSource">
    <set-property
      property="driverClassName"
      value="com.mysql.jdbc.Driver" />
    <set-property
      property="url"
      value="jdbc:mysql://localhost:3306
/strutsdatabase?autoReconnect=true" />
    <set-property
      property="username"
      value="root" />
    <set-property
      property="password"
      value="" />
    <set-property
      property="maxActive"
      value="10" />
    <set-property
      property="maxWait"
      value="5000" />
    <set-property
      property="defaultAutoCommit"
      value="false" />
    <set-property
      property="defaultReadOnly"
      value="false" />
    <set-property
      property="validationQuery"
      value="SELECT COUNT(*) FROM test" />
</data-source>
</data-sources>

 <!-- ========== Form Bean Definitions ============ -->
 <form-beans>
   <form-bean name="login" type="com.bhaskar.NewActionForm" />
 <form-bean name="UserForm" type="org.apache.struts.action.DynaActionForm">
    <form-property name="givenName"type="java.lang.String"
        />
    <form-property name="firstname" type="java.lang.String"/>
</form-bean>

<!-- ========== Global Forwards Definitions ============ -->
 <global-forwards type="org.apache.struts.action.ActionForward">
      <forward name="sucess" path="mypage.jsp" />
 </global-forwards>


<!-- ========== Global Exceptions Definitions ============ -->
<global-exceptions>
<exception key="some.key" type="java.lang.NullPointerException"
       path="/WEB-INF/errors/null.jsp"/>
</global-exceptions>

<!-- ========== Action Mappings Definitions ============ -->
<action-mappings>
        <action
            path="/logon"
            type="org.apache.struts.webapp.example.LogonAction"
            name="logonForm"
            scope="request"
            input="/logon.jsp"
            unknown="false"
            validate="true" >
<forward name="key" path="/me.jsp"/>
<forward name="key1" path="/me1.jsp"/>
       </action>
    </action-mappings>

<!-- ========== Controller ============ -->
<controller
    processorClass="org.apache.struts.action.RequestProcessor"
       contentType="text/html"/>;

    <!-- ========== Message Resources ============ -->
    <message-resources parameter="MyWebAppResources" null="false" />

<!-- ========== PlugIns ============ -->
<plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config"         value="/WEB-INF/tiles-defs.xml"/>
</plug-in>
        
</struts-config>

<!-- ========== All about Configuration File ============ -->

Read more...

FaceBook Login

HTML/JAVASCRIPT

HTML/JAVASCRIPT

HTML/JAVASCRIPT

HTML/JAVASCRIPT

Total Pageviews

STATCOUNTER

  © Blogger template Simple n' Sweet by Ourblogtemplates.com 2009

Back to TOP