You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2017/04/18 05:38:35 UTC

[3/5] struts-site git commit: updated page to current example application

updated page to current example application


Project: http://git-wip-us.apache.org/repos/asf/struts-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-site/commit/4ca26c06
Tree: http://git-wip-us.apache.org/repos/asf/struts-site/tree/4ca26c06
Diff: http://git-wip-us.apache.org/repos/asf/struts-site/diff/4ca26c06

Branch: refs/heads/master
Commit: 4ca26c060faa4c1ccf5765837dd0062b6161eb2a
Parents: 2423050
Author: Stefaan Dutry <st...@gmail.com>
Authored: Mon Apr 17 11:37:29 2017 +0200
Committer: Stefaan Dutry <st...@gmail.com>
Committed: Mon Apr 17 11:37:29 2017 +0200

----------------------------------------------------------------------
 .../att14974992_Basic_Struts2_Mvn.png           | Bin 18234 -> 0 bytes
 .../attachments/basic_struts2_maven_jsp.png     | Bin 0 -> 8387 bytes
 .../how-to-create-a-struts2-web-application.md  | 151 +++++++++++--------
 3 files changed, 88 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts-site/blob/4ca26c06/source/getting-started/attachments/att14974992_Basic_Struts2_Mvn.png
----------------------------------------------------------------------
diff --git a/source/getting-started/attachments/att14974992_Basic_Struts2_Mvn.png b/source/getting-started/attachments/att14974992_Basic_Struts2_Mvn.png
deleted file mode 100644
index 4b2bdb3..0000000
Binary files a/source/getting-started/attachments/att14974992_Basic_Struts2_Mvn.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/struts-site/blob/4ca26c06/source/getting-started/attachments/basic_struts2_maven_jsp.png
----------------------------------------------------------------------
diff --git a/source/getting-started/attachments/basic_struts2_maven_jsp.png b/source/getting-started/attachments/basic_struts2_maven_jsp.png
new file mode 100644
index 0000000..48b6a79
Binary files /dev/null and b/source/getting-started/attachments/basic_struts2_maven_jsp.png differ

http://git-wip-us.apache.org/repos/asf/struts-site/blob/4ca26c06/source/getting-started/how-to-create-a-struts2-web-application.md
----------------------------------------------------------------------
diff --git a/source/getting-started/how-to-create-a-struts2-web-application.md b/source/getting-started/how-to-create-a-struts2-web-application.md
index d608b99..7e95cba 100644
--- a/source/getting-started/how-to-create-a-struts2-web-application.md
+++ b/source/getting-started/how-to-create-a-struts2-web-application.md
@@ -40,33 +40,77 @@ at [struts-examples](https://github.com/apache/struts-examples).
 > This tutorial assumes you know how to create a Java web application that uses Maven to manage artifacts and build 
 the web application archive (war) file.
 
-__Step 1 - Create A Java Web Application__
+#### Step 1 - Create A Java Web Application
 
 In your Java IDE create a Java web application with a project name of basic_struts that follows the standard Maven
-project folder structure. In your pom.xml include the following:
+project folder structure. In your `pom.xml` include the following:
 
 **pom.xml build node**
 
 ```xml
 <build>
-    <finalName>basic_struts</finalName>
+    <finalName>basic-struts</finalName>
 </build>
 ```
-{:title="Final name"}
 
-__Step 2 - Add index.jsp__
+###### to run the application using maven, add the jetty maven-plugin to your pom.xml
+
+**pom.xml jetty plugin**
+
+```xml
+<build>
+    ...   
+    <plugins>
+        <plugin>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty-maven-plugin</artifactId>
+            <version>8.1.16.v20140903</version>
+            <configuration>
+                <webApp>
+                    <contextPath>/${build.finalName}</contextPath>
+                </webApp>
+                <stopKey>CTRL+C</stopKey>
+                <stopPort>8999</stopPort>
+                <scanIntervalSeconds>10</scanIntervalSeconds>
+                <scanTargets>
+                    <scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
+                </scanTargets>
+            </configuration>
+        </plugin>
+    </plugins>
+</build>
+```
+The above plugin will enable you to run the application using `mvn jetty:run`
+
+#### Step 2 - Add index.jsp
 
 Our next step is to add a simple `index.jsp` to this web application. Create an `index.jsp` under `src/main/webapp`
 with a title of __Basic Struts 2 Application - Welcome__ and in the body add an h1 heading of __Welcome to Struts 2!__
 
-Run `mvn clean package` to create the war file. Copy the war file into your Servlet container so that it will deploy the war file.
+**index.jsp**
+
+```jsp
+<!DOCTYPE html>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>Basic Struts 2 Application - Welcome</title>
+  </head>
+  <body>
+    <h1>Welcome To Struts 2!</h1>
+  </body>
+</html>
+```
 
-Start up your Servlet container and in a web browser go to [http://localhost:8080/Basic_Struts2_Mvn/index.jsp](http://localhost:8080/Basic_Struts2_Mvn/index.jsp). 
+Run `mvn jetty:run` to run the application.
+
+In a web browser go to [http://localhost:8080/basic-struts/index.jsp]([http://localhost:8080/basic-struts/index.jsp). 
 You should see the following:
 
-![Basic_Struts2_Mvn.png](attachments/att14974992_Basic_Struts2_Mvn.png)
+![basic_struts2_maven_jsp.png](attachments/basic_struts2_maven_jsp.png)
 
-__Step 3 - Add Struts 2 Jar Files To Class Path__
+#### Step 3 - Add Struts 2 Jar Files To Class Path
 
 Now that we know we have a working Java web application, lets add the minimal required Struts 2 framework Jar files 
 to our web application's class path. In `pom.xml` add the following dependency node:
@@ -87,58 +131,45 @@ files struts2-core requires (transitive dependencies).
 <i class="glyphicon glyphicon-info-sign alert-info" aria-hidden="true"></i> Beginning with Struts version 2.2.3 
 you do not need to specify a separate dependency node for javassist.
 
-__Step 4 - Add Logging__
+#### Step 4 - Add Logging
 
-To see what's happening under the hood, the example application for this tutorial uses log4j. You'll need to add to pom.xml a dependency node for the log4j jar file:
+To see what's happening under the hood, the example application for this tutorial uses log4j2. You'll need to add a dependency node for log4j2 to the pom:
 
 **pom.xml log4j dependency node**
 
 ```xml
 <dependency>
-    <groupId>log4j</groupId>
-    <artifactId>log4j</artifactId>
-    <version>1.2.14</version>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-core</artifactId>
+    <version>2.8.2</version>
 </dependency>
 ```
 
-Setup a `log4j.xml` configuration in the `src/main/resources` folder. You can copy the one from the example application, 
-which contains the following
+Setup a `log4j2.xml` configuration in the `src/main/resources` folder which contains the following
 
-**log4j.xml**
+**log4j2.xml**
 
 ```xml
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-    
-    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
-       <layout class="org.apache.log4j.PatternLayout"> 
-          <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> 
-       </layout> 
-    </appender>
- 
-    <!-- specify the logging level for loggers from other libraries -->
-    <logger name="com.opensymphony">
-    	<level value="DEBUG" />
-    </logger>
-
-    <logger name="org.apache.struts2">
-    	 <level value="DEBUG" />
-    </logger>
-  
-   <!-- for all other loggers log only info and above log messages -->
-     <root>
-        <priority value="INFO"/> 
-        <appender-ref ref="STDOUT" /> 
-     </root> 
-    
-</log4j:configuration> 
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="debug"/>
+        <Logger name="org.apache.struts2" level="debug"/>
+        <Root level="warn">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
 ```
 
-Note the above log4j configuration specifies the console as the log target.
+Note the above log4j2 configuration specifies the console as the log target.
 
-__Step 5 - Add Struts 2 Servlet Filter__
+#### Step 5 - Add Struts 2 Servlet Filter
 
 To enable the Struts 2 framework to work with your web application you need to add a Servlet filter class and filter 
 mapping to `web.xml`. Below is the filter and filter-mapping nodes you should add to `web.xml`.
@@ -160,7 +191,7 @@ mapping to `web.xml`. Below is the filter and filter-mapping nodes you should ad
 For more information about configuring the deployment descriptor for Struts 2 see `web.xml`. Note the url-pattern node 
 value is `/*` meaning the Struts 2 filter will be applied to all URLs for this web application.
 
-__Step 6 - Create struts.xml__
+#### Step 6 - Create struts.xml
 
 Struts 2 can use either an XML configuration file or annotations (or both) to specify the relationship between a URL, 
 a Java class, and a view page (such as `index.jsp`). For our basic Struts 2 application, we'll use a minimal xml 
@@ -180,11 +211,9 @@ must be on the web application's root class path).
     <constant name="struts.devMode" value="true" />
 
     <package name="basicstruts2" extends="struts-default">
-
         <action name="index">
             <result>/index.jsp</result>
         </action>
-
     </package>
 
 </struts>
@@ -195,32 +224,28 @@ the browser to `index.jsp`.
 
 For more information about the struts.xml configuration file see `struts.xml`.
 
-__Step 7 - Build and Run the Application__
+#### Step 7 - Build and Run the Application
 
-With all of the above in place run mvn clean package to create the war file. Remove the previously created war file 
-and exploded web application folder from your Servlet container's webapps folder. Copy to your Servlet container's webapps 
-folder the new war you just created.
+Run `mvn jetty:run` to run the web-application using the jetty maven-plugin.
 
-Start up the Servlet container. View the console where you should see numerous debug messages that tell you 
-the Struts 2 framework is being included in the `Basic_Struts2_Mvn` web application.
+View the console where you should see numerous debug messages that tell you the Struts 2 framework is being included in the `basic-struts2` web application.
 
-Open a web browser and go to [http://localhost:8080/Basic_Struts2_Mvn/index.action](http://localhost:8080/Basic_Struts2_Mvn/index.action) 
+Open a web browser and go to [http://localhost:8080/basic-struts/index.action](http://localhost:8080/basic-struts/index.action) 
 (note that's `index.action` not `index.jsp` at the end of the URL). You should see the same web page as when going to 
-[http://localhost:8080/Basic_Struts2_Mvn/index.jsp](http://localhost:8080/Basic_Struts2_Mvn/index.jsp). View the log 
+[http://localhost:8080/basic-struts/index.jsp](http://localhost:8080/basic-struts/index.jsp). View the log 
 messages written to the console and you should find several that discuss `index.action` and `index.jsp`:
 
 **Struts 2 Log Messages**
 
 ```
-com.opensymphony.xwork2.DefaultActionProxy.debug:57 - Creating an DefaultActionProxy for namespace / and action name index
 ...
-org.apache.struts2.dispatcher.ServletDispatcherResult.debug:57 - Forwarding to location /index.jsp
+2017-04-17 11:16:01,084 DEBUG [qtp1723848804-22] xwork2.DefaultActionProxy (DefaultActionProxy.java:89) - Creating an DefaultActionProxy for namespace [/] and action name [index]
+...
+2017-04-17 11:16:01,172 DEBUG [qtp1723848804-22] result.ServletDispatcherResult (ServletDispatcherResult.java:131) - Forwarding to location: /index.jsp
+...
 ```
 
-Note that the xwork2 artifact is one of the Jar files that is a transitive dependency for the struts2-core Jar file. 
-The xwork2 library is used heavily by the Struts 2 framework.
-
-__Getting Help__
+### Getting Help
 
 The [Struts 2 user mailing list](/mail.html) is an excellent place to get help.  If you are having a problem getting 
 this Basic Struts 2 application to work search the Struts 2 mailing list. If you don't find an answer to your problem,