<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/index.php?action=history&amp;feed=atom&amp;title=How_to_write_a_new_WebGoat_lesson</id>
		<title>How to write a new WebGoat lesson - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/index.php?action=history&amp;feed=atom&amp;title=How_to_write_a_new_WebGoat_lesson"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;action=history"/>
		<updated>2026-04-27T03:13:49Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=14644&amp;oldid=prev</id>
		<title>Koussa at 14:40, 28 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=14644&amp;oldid=prev"/>
				<updated>2006-12-28T14:40:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 14:40, 28 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot; &gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All you have to do is implement the abstract methods in LessonAdapter.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All you have to do is implement the abstract methods in LessonAdapter.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebGoat uses the Element Construction Set from the Jakarta project. You should read up on the API for ECS at &amp;lt;u&amp;gt;http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;www&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;peerfear&lt;/del&gt;.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;alexandria&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;content&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;html/javadoc/ecs/HEAD/index&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;html&lt;/del&gt;&amp;lt;/u&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebGoat uses the Element Construction Set from the Jakarta project. You should read up on the API for ECS at &amp;lt;u&amp;gt;http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jakarta&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;apache&lt;/ins&gt;.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;site&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;downloads&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;downloads_ecs&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cgi&lt;/ins&gt;&amp;lt;/u&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebGoat uses WTP. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;add &lt;/del&gt;more &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;details &lt;/del&gt;here&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebGoat uses WTP. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;You can find &lt;/ins&gt;more &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;information about Eclipse WTP &lt;/ins&gt;here &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;http://www.eclipse.org/webtools/.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Step 1: Set up the framework ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Step 1: Set up the framework ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Koussa</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=11823&amp;oldid=prev</id>
		<title>Kramse: /* Step 2: Implement createContent */</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=11823&amp;oldid=prev"/>
				<updated>2006-11-06T06:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 2: Implement createContent&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 06:50, 6 November 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot; &gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Generate the next screen for the user&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Generate the next screen for the user&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This all happens within the createContent &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;metnod&lt;/del&gt;. Remember that each lesson should be handled on a single page. Therefore it is important to design the lesson to work on one page. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This all happens within the createContent &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;method&lt;/ins&gt;. Remember that each lesson should be handled on a single page. Therefore it is important to design the lesson to work on one page. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Sample createContent Method'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Sample createContent Method'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kramse</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=5036&amp;oldid=prev</id>
		<title>Weilin Zhong: /* Step 2: Implement createContent */</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=5036&amp;oldid=prev"/>
				<updated>2006-06-05T20:20:58Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 2: Implement createContent&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:20, 5 June 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot; &gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Sample createContent Method'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Sample createContent Method'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A good generic pattern for the createContent method is shown below:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A good generic pattern for the createContent method is shown below:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Weilin Zhong</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=5034&amp;oldid=prev</id>
		<title>Weilin Zhong at 20:10, 5 June 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_write_a_new_WebGoat_lesson&amp;diff=5034&amp;oldid=prev"/>
				<updated>2006-06-05T20:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[WebGoat User Guide Table of Contents]]__TOC__&lt;br /&gt;
&lt;br /&gt;
All you have to do is implement the abstract methods in LessonAdapter.&lt;br /&gt;
&lt;br /&gt;
WebGoat uses the Element Construction Set from the Jakarta project. You should read up on the API for ECS at &amp;lt;u&amp;gt;http://www.peerfear.org/alexandria/content/html/javadoc/ecs/HEAD/index.html&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
WebGoat uses WTP. &amp;lt;add more details here&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Step 1: Set up the framework ==&lt;br /&gt;
Source for the class NewLesson.java&lt;br /&gt;
&lt;br /&gt;
==Step 2: Implement createContent ==&lt;br /&gt;
Creating the content for a lesson is fairly simple. There are two main parts:&lt;br /&gt;
# Handle the input from the user’s last request&lt;br /&gt;
# Generate the next screen for the user&lt;br /&gt;
&lt;br /&gt;
This all happens within the createContent metnod. Remember that each lesson should be handled on a single page. Therefore it is important to design the lesson to work on one page. &lt;br /&gt;
&lt;br /&gt;
'''Sample createContent Method'''&lt;br /&gt;
A good generic pattern for the createContent method is shown below:&lt;br /&gt;
&lt;br /&gt;
 // define a constant for the filed name&lt;br /&gt;
 Private static final String INPUT = “input”;&lt;br /&gt;
 Protected Element createContent(WebSession s)&lt;br /&gt;
 {&lt;br /&gt;
  ElementContainer ec = new ElementContainer();&lt;br /&gt;
  try&lt;br /&gt;
  {&lt;br /&gt;
    // get some input from the user&lt;br /&gt;
    // see ParameterParser for details&lt;br /&gt;
    String userInput = s.getParser().getStringParameter(INPUT, “”);         &lt;br /&gt;
    // do something with the input&lt;br /&gt;
    // -- SQL query?&lt;br /&gt;
    // -- Runtime.exec?&lt;br /&gt;
    // -- Some other dangerous thing&lt;br /&gt;
    // generate some output – a string and an input field&lt;br /&gt;
    ec.addElement(new StringElement(“Enter a string: “));&lt;br /&gt;
    ec.addElement( new Input(Input.TEXT, INPUT, userinput));&lt;br /&gt;
  }&lt;br /&gt;
  catch (Exception e)&lt;br /&gt;
  {&lt;br /&gt;
     s.setMessage(“Error generating “ + this.getClass().getName());&lt;br /&gt;
     e.printStackTrace();&lt;br /&gt;
  }&lt;br /&gt;
  return(ec);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ECS is quite powerful. See the Encoding lesson for an example of how to use it to create a table with rows and rows of output.&lt;br /&gt;
&lt;br /&gt;
==Step 3: Implement the other methods ==&lt;br /&gt;
&lt;br /&gt;
The LessonAdapter class requires more methods to make a lesson fully functional. These methods allow the WebGoat user to navigate to the lesson and display lesson information. Each method is fairly simple and should only take a few minutes to implement.&lt;br /&gt;
&lt;br /&gt;
Additional LessonAdapter Methods&lt;br /&gt;
{| border=1&lt;br /&gt;
 ||  || '''Method''' || ''''''Description''''''&lt;br /&gt;
|-&lt;br /&gt;
 || 1 || getHints || Return hints to the framework one at a time&lt;br /&gt;
|-&lt;br /&gt;
 || 2 || getCredits || Return credits to the framework for display&lt;br /&gt;
|-&lt;br /&gt;
 || 3 || getInstructions || This method will load the instructions HTML file from lesson_plans directory if you create one.&lt;br /&gt;
|-&lt;br /&gt;
 || 4 || getRanking || Sets the order of the lessons within a category. The lowest ranked lesson appears at the top.&lt;br /&gt;
|-&lt;br /&gt;
 || 5 || getTitle || The title is rendered as HTML&lt;br /&gt;
|-&lt;br /&gt;
 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
  protected List getHints()&lt;br /&gt;
  {&lt;br /&gt;
      // Hints will be returned to the user in the order they&lt;br /&gt;
      // appear below. The user must click on “next hint”&lt;br /&gt;
      // before the hint will be didplayed.&lt;br /&gt;
      List hints = new ArrayList();&lt;br /&gt;
      hints.add( &amp;quot;There are no hints defined.&amp;quot; );&lt;br /&gt;
      return hints;&lt;br /&gt;
  }&lt;br /&gt;
  public Element getCredits()&lt;br /&gt;
  {&lt;br /&gt;
      return new StringElement(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /*&lt;br /&gt;
   * Gets the ranking attribute of the LessonAdapter object. &lt;br /&gt;
          * The ranking denotes the order in which&lt;br /&gt;
          * the menu item will appear in menu list for each category. The&lt;br /&gt;
          * lowest number will appear as the first lesson.&lt;br /&gt;
   *&lt;br /&gt;
   * @return    The ranking value&lt;br /&gt;
   */&lt;br /&gt;
  public Integer getRanking()&lt;br /&gt;
  {&lt;br /&gt;
  	return new Integer(10);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   *  Fill in a descriptive title for this lesson. &lt;br /&gt;
          *  This will appear above the control area at the &lt;br /&gt;
          *  top of the page. This field will be rendered as html.&lt;br /&gt;
   *&lt;br /&gt;
   * @return    The title value&lt;br /&gt;
   */&lt;br /&gt;
  public String getTitle()&lt;br /&gt;
  {&lt;br /&gt;
  	return &amp;quot;Untitled Lesson &amp;quot; + getScreenId();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
==Step 4: Build and test &amp;lt;this must have changed in v4&amp;gt; ==&lt;br /&gt;
After the new lesson is implemented ant can be used to build and deploy the new web application. First you want to remove the webgoat.war and the webgoat directory from the webapps directory. Next, cd to the webgoat directory and type:&lt;br /&gt;
&lt;br /&gt;
  ''ant install'' &lt;br /&gt;
&lt;br /&gt;
This will compile the new lesson and “install” the path into Tomcat. The lesson only needs to be installed once. If changes are made to the web application and another test is needed type:&lt;br /&gt;
&lt;br /&gt;
  ''ant reload''&lt;br /&gt;
&lt;br /&gt;
==Step 5: Give back to the community ==&lt;br /&gt;
If you have come up with a lesson that you think helps to teach people about web application security, please contribute it by sending it to the people who maintain the WebGoat application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[WebGoat User Guide Table of Contents]]&lt;br /&gt;
[[Category:OWASP WebGoat Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Weilin Zhong</name></author>	</entry>

	</feed>