View
230
Download
2
Embed Size (px)
Citation preview
Objectives: 1. Investigate the Web application deployment descriptor
2. Install and deploy Tomcat and struts
3. Design and deploy a struts application
Struts Deployment
Topics
To learn how to create and deploy WAR files Deployment Descriptor (web.xml) Installing and Configuring Tomcat Installing Struts The struts-config.xml file Designing a Struts Application Deploying a Struts Application
Packaging a Web Application for
Deployment
Servlet Specification 2.2 specified the use of a single web archive file - *.war
An extension of the .jar fileHas the same form as the .zip file (.jar and .war)
Why use a WAR file?
Simplify deploymentEasy to installSingle file to each server in cluster
Improve securityNo access between Web applications
Packaging for third-party applications
Structure of a WAR File
beans
WEB-INF
classes
Packagedirectories
lib
web.xml
Class files
JAR files
JSP pages, HTML documents, image files
JSP pages, HTML documents, image files
app.war
Class files
Contentdirectories
tlds TLD files
Accessing the WAR File
All WAR contents are associated with a top-level URL directory:
http://myserver.com/app/…URLs for assets in top-level and content
directories are assigned automatically.URLs for WEB-INF assets must be explicitly
specified.
Configuring WEB-INF Assets
Primarily controlled via the deployment descriptor:
WEB-INF/web.xmlDeployment descriptor is an XML document:
<?xml version=”1.0” encoding=”UTF-8” ?><!DOCTYPE web-app PUBLIC -//Sun Microsystems, Inc.//DTD Web Application
2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
Has the root element of:<web-app>…
Elements of a Web Application
Application configuration Context parameters Servlet configuration Session Configuration Servlet Mapping MIME types Default pages Custom Tag Libraries
Application Configuration
<icon> <small-icon>wdk/widget/image/illustration/button/
dctmlogo16x16.gif</small-icon>
<large-icon>wdk/widget/image/illustration/button/dctmlogo32x32.gif</large-icon>
</icon>
<display-name>Sample Library Services Client </display-name>
<description>This web application provides an example of how to leverage library services.</description>
Context Parameters
Name/value pairs that become available in the ServletContext object using the getInitParameter() method <context-param> <param-name>dbUser</param-name> <param-value>joe</param-value> </context-param> <context-param> <param-name>dbPwd</param-name> <param-value>zebra</param-value> </context-param>
Servlet Configuration
A web application’s servlets are specified in the deployment descriptor via the <servlet> tag and its subelements
Mandatory tags for each servlet definintion:<servlet-name> tag - specifies a logical name for the servlet<servlet-class> tag - specifies the Java class that
implements the servlet Optional tags:
<description>, <display-name>, <icon> <init-param> parameters passed to the init() method of the
servlet <load-on-startup> signifies that the servlet should be loaded
into JVM at container startup. Value of the element signifies its relative order. It may be an empty tag
Servlet Configuration
<servlet> <servlet-name>MyGreatServlet</servlet-name> <servlet-class>
com.BigCompany.RJServlet </servlet-class> <description>Great Servlet</description> <init-param> <param-name>GreatnessLevel</param-name> <param-value>6</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet>
Servlet Mapping
Used to hide the implementation of the application by giving a servlet a logical name in the form of a URI
<web-apps>
<servlet-mapping><servlet-name>MyGreatServlet</servlet-name>
<url-pattern>/GServ</url-pattern>
</servlet-mapping>
</web-apps>
Session Configuration
Sets the session timeout
<web-app> … <session-config>
<session-timeout>60</session-timeout> </session-config> …</web-app>
MIME Types
Maps file extensions to MIME Types
<mime-mapping> <extension>pdf</extension> <mime-type>application/pdf</mime-type> </mime-mapping>
<mime-mapping> <extension>html</extension> <mime-type>text/html</mime-type> </mime-mapping>
Default Pages and Distributable Servlets
<welcome-file-list><welcome-file>default.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file-list>
<distributable/>
<welcome-file-list> specifies which file within an application directory should be displayed when a URL is requested that contains only a directory
<distributable/>
has no content signals whether an application can run in multiple JSP
containers simultaneously
Custom Tag Libraries
<webapp>…
<taglib><taglib-uri>/greatTags</taglib-uri>
<taglib-location>/WEB-INF/tlds/greatTags_1_0.tld</taglib-location>
</taglib>
…
</webapp>
Tomcat JSP/Servlet Container
Open-source Java-based Web application container
Initially through the Jakarta project of the Apache Software Foundation
Runs servlets on Catalina container portion Runs JSP on Jasper container portion Sun’s reference implementation for servlet and
JSP specifications http://tomcat.apache.org
Installing and Configuring Tomcat
Make sure a current and compatible version of the Java SDK, Standard Edition is installed Acquired at http://java.sun.com/javase
Extract Tomcat server from downloaded archive Set JAVA_HOME to location of Java SE
installation
Testing Tomcat Installation
Open up a command prompt window or shell Navigate to the Tomcat installation directory Start the Tomcat server
bin\startup
Open your browser and type in the following URL
http://localhost:8080
Jakarta Struts Project
Open-source Java-based Web application development framework
Initially developed through the Jakarta project of the Apache Software Foundation
Provides control layer based on standard technologies Servlets JavaBeans ResourceBundles XML
http://struts.apache.org
Supporting Web Applications with Struts
Extract Struts files from downloaded archive
For each Web Application Copy JAR files to /WEB-INF/lib directory Make sure a web.xml file exists in /WEB-INF Create a struts-config.xml file and store in /WEB-INF
• Deployment descriptor for Struts applications• Integrates the MVC components into a working
application
Struts and JBoss
Go to http://struts.apache.org Download version 1 release Extract Struts files from downloaded archive
Copy struts-taglib and struts-core file to: $JBOSS/server/all/deploy/jboss-web.deployer $JBOSS/server/all/lib
Copy all commons*.jar files to: $JBOSS/server/all/deploy/jboss-web.deployer
When creating Web application: copy struts tlds to WEB-INF/tlds directory in
application war file create appropriate web.xml file add struts-config.xml file to WEB-INF directory
A basic struts-config.xml file
<?xml version=“1.0” encoding=“ISO-8859-1” ?><!DOCTYPE struts-config PUBLIC “-//Apache Software
Foundation//DTD Struts Configuration 1.3//EN” “http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd”>
<struts-config>
<message-resourcesparameter=“company.ApplicationResources” />
</struts-config>
Tag-Library Descriptors
To use specialized struts tags Specify a taglib entry in web.xml Copy struts-html.tld to /WEB-INF/tlds
<taglib> <taglib-uri>/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/tlds/struts-
html.tld</taglib-location></taglib>
Steps for Designing a Struts Application
Define and create all the Views Add ActionForms used to support views
Create the controller components ActionServlet Action
Define View-Controller relationships in struts-config.xml
Describe the struts components to the Web server web.xml
Run the application
Struts-specific Form Tags
The struts HTML tag library offers struts-specific functionality
<html:form action=“/Lookup.do">Product ID: <html:text property="product" /><br>
<html:submit/></html:form>
Flow of Control
Upon submission of JSP View, ActionForm object will be created, populated with the request parameters, and stored in the session.
The action referenced by the <html:form/> will be invoked and passed a reference to the populated ActionForm.
ActionForm
Properties are populated by request parameters of the same name
Struts uses JavaBean reflection Design patterns must be followed
private String product;
public void setProduct(String prod);
public String getProduct();
reset() method restores baseline state
Define the Form Bean
Make the form bean known to the struts framework
Declare the following element in struts-config.xml
<form-beans>
<form-bean name="lookupForm" type="ssps.LookupForm"/>
</form-beans>
Create the Controller
Composed of two components A single implementation of
org.apache.struts.action.ActionServlet• Dispatching component
One or more implementations of org.apache.struts.action.Action
• Performs business logic• Entry point is execute() method
Controller-View Flow
Within the execute() method, targets are determined which dictate the next page in the Web application sequence.
The execute() method returns an instance of ActionForward
..target = new String(“success”);
return (mapping.findForward(target));
Deploying Actions
Add an entry to the <action-mappings> section of struts-config.xml
<action path="/Lookup"type="ssps.LookupAction"name="lookupForm”input="/prompt.jsp">
<forward name="success" path="/results.jsp"/><forward name="failure" path="/prompt.jsp"/></action>
Deploy the Struts Application
Define the ActionServlet to the Web application Inform the ActionServlet of the location of
struts-config.xml Specify that the ActionServlet is preloaded
Deploy the Struts Application – web.xml
<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>
Deploy the Struts Application – web.xml
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>