<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flavio Tordini &#187; Java</title>
	<atom:link href="http://flavio.tordini.org/on/java/feed" rel="self" type="application/rss+xml" />
	<link>http://flavio.tordini.org</link>
	<description></description>
	<lastBuildDate>Mon, 26 Jul 2010 23:45:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HTTP Headers Filter</title>
		<link>http://flavio.tordini.org/http-headers-filter</link>
		<comments>http://flavio.tordini.org/http-headers-filter#comments</comments>
		<pubDate>Sun, 12 Feb 2006 10:15:19 +0000</pubDate>
		<dc:creator>Flavio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[http cache]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[servlets]]></category>

		<guid isPermaLink="false">http://flavio.tordini.org/http-headers-filter</guid>
		<description><![CDATA[A Java Servlet Filter that sets HTTP headers.
Implementation of javax.servlet.Filter used to set HTTP headers. The filter parameters are treated as HTTP headers. The parameter name becomes the header name, while the parameter value becomes the header value. The parameter value may contain EL expressions. If the expression evaluates to a java.util.Date or a java.lang.Long [...]]]></description>
			<content:encoded><![CDATA[<p>A Java Servlet Filter that sets HTTP headers.<br />
Implementation of <code>javax.servlet.Filter</code> used to set HTTP headers. The filter parameters are treated as HTTP headers. The parameter name becomes the header name, while the parameter value becomes the header value. The parameter value may contain <acronym title="JSP 2.0 Expression Language">EL</acronym> expressions. If the expression evaluates to a <code>java.util.Date</code> or a <code>java.lang.Long</code> object the header is considered to be a Date header and formatted according to the HTTP spec.</p>
<h2>These are the implicit objects available to the EL context:</h2>
<dl>
<dt>now</dt>
<dd>A <code>java.util.Date</code> object the represents the current time.</dd>
</dl>
<h2>Init-params:</h2>
<dl>
<dt>negativeMapping</dt>
<dd>A regular expression matching request URIs to be ignored. The URI is obtained using <a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()"><code>HttpServletRequest.getRequestURI()</code></a>. See also the <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html">regular expression documentation</a>
</dd>
</dl>
<h2>This is a typical usage example:</h2>
<pre>&lt;filter&gt;
  &lt;filter-name&gt;httpHeaders&lt;/filter-name&gt;
  &lt;filter-class&gt;
    org.ft.servlet.filters.httpheaders.HTTPHeadersFilter
  &lt;/filter-class&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;Expires&lt;/param-name&gt;
    &lt;param-value&gt;${now.time + 1000 * 60}&lt;/param-value&gt;
  &lt;/init-param&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;Last-Modified&lt;/param-name&gt;
    &lt;param-value&gt;${now}&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
  &lt;filter-name&gt;httpHeaders&lt;/filter-name&gt;
  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;</pre>
<h2>Requirements</h2>
<ul>
<li>
<a href="http://jakarta.apache.org/commons/el/">Jakarta Commons EL</a>
</li>
<li>
<a href="http://jakarta.apache.org/tomcat/">Servlet 2.4 compliant container</a>
</li>
</ul>
<h2>Download</h2>
<ul>
<li><a href="download/httpheaders-0.0.0.zip">http-headers-0.0.0 (source + binary)</a></li>
</ul>
<h2>Legal</h2>
<p>This is Open Source software distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License Version 2.0</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flavio.tordini.org/http-headers-filter/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Juseppe, a simple JSP framework</title>
		<link>http://flavio.tordini.org/juseppe</link>
		<comments>http://flavio.tordini.org/juseppe#comments</comments>
		<pubDate>Tue, 05 Jul 2005 16:32:57 +0000</pubDate>
		<dc:creator>Flavio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[server-side]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://flavio.tordini.org/juseppe-a-simple-jsp-framework</guid>
		<description><![CDATA[Juseppe is a simple framework for JSP development. I wrote it to speed up my (and my colleagues&#8217;) work, but you can use it too. Juseppe is implemented as a Java Servlet Filter and meant to be used in a JSP 2.0 + JSTL environment.
Goals

Achieve technology independent and (hopefully) stable URIs.
Simplify site construction and navigation [...]]]></description>
			<content:encoded><![CDATA[<p>Juseppe is a simple framework for <acronym title="Java Server Pages">JSP</acronym> development. I wrote it to speed up my (and my colleagues&#8217;) work, but you can use it too. Juseppe is implemented as a Java Servlet <a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/Filter.html">Filter</a> and meant to be used in a <a href="http://java.sun.com/products/jsp/">JSP 2.0</a> + <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a> environment.</p>
<h2>Goals</h2>
<ul>
<li>Achieve <a href="http://www.w3.org/TR/chips/#gl3">technology independent</a> and (hopefully) <a href="http://www.w3.org/Provider/Style/URI">stable</a> URIs.</li>
<li>Simplify site construction and navigation among JSPs.</li>
</ul>
<h2>Clean URIs</h2>
<p>With Juseppe, your URIs will not reveal the underlying technology. This is both a security advantage and a wise naming design: when you’ll reimplement your site with a new technology chances are you’ll be able to preserve the old URIs and break no links. Your URIs will look like:</p>
<pre>http://www.dumbnews.com/politics

http://www.dumbnews.com/article/4321</pre>
<p>and <strong>not</strong>:</p>
<pre>http://www.dumbnews.com/politics.jsp

http://www.dumbnews.com/article.jsp?id=4321</pre>
<h2>Site structure</h2>
<p>Juseppe simplifies JSP development and mantainance by providing a navigation system among web application resources. Instead of hardcoding links and site sections inside JSPs, Juseppe puts the website structure in a freeform XML file. URIs are then mapped to XML nodes and to JSPs using <a href="http://w3c.org/TR/xpath">XPath</a> expressions. This makes adding and removing sections much easier than delving inside spaghetti JSP code.</p>
<p>This is a typical XML configuration:</p>
<pre>&lt;page name="." resource="/home.jsp" display="Homepage"&gt;
&lt;page name="politics" resource="/politics.jsp" display="Politics"/&gt;
&lt;page name="technology" resource="/technology.jsp" display="Technology"/&gt;
&lt;page name="article" resource="/article.jsp"/&gt;
&lt;/page&gt;</pre>
<h2>Take a look to the demo!</h2>
<p>The quickest way to grasp the concept behind this project is trying the sample webapp included in the distribution.</p>
<h2>Starting a new web application from scratch</h2>
<ol>
<li>Drop juseppe-x.x.x.war found in the binary distribution in your servlet container web application directory.</li>
</ol>
<h2>Using Juseppe in an existing web application</h2>
<ol>
<li>Extract juseppe-x.x.x.war using the <code>jar</code> utility (or any other zip utility).</li>
<li>Copy the libraries found in <code>WEB-INF/lib</code> to your application <code>WEB-INF/lib</code> directory.</li>
<li>Copy <code>WEB-INF/juseppe.xml</code> to your application <code>WEB-INF</code> directory.</li>
<li>Open <code>WEB-INF/web.xml</code>, then cut’n’paste the Juseppe Filter definition and mapping to your <code>web.xml</code>.</li>
<li>Customize <code>WEB-INF/juseppe.xml</code> according to your website structure.</li>
<li>Possibly customize Juseppe Filter init-params in <code>WEB-INF/web.xml</code>.</li>
</ol>
<p>For reference documentation see the Javadocs included in the distribution.</p>
<h2>Status</h2>
<p>Juseppe is production ready. It is currently used on the following (italian) sites:</p>
<ul>
<li> <a href="http://www.kataweb.it/news/">Kataweb News</a></li>
<li> <a href="http://www.kataweb.it/multimedia/">Kataweb Multimedia</a></li>
<li><a href="http://www.deejay.it/">Radio DeeJay</a></li>
<li> <a href="http://multimedia.repubblica.it/">Repubblica Multimedia</a></li>
<li> <a href="http://xl.repubblica.it/">XL</a></li>
<li> <a href="http://www.kataweb.it/">Kataweb.it</a></li>
<li> <a href="http://www.kataweb.it/feedo/">Kataweb Fido (A web-based feed aggregator)</a></li>
</ul>
<h2>Legal</h2>
<p>Juseppe is Open Source software distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License Version 2.0</a>.</p>
<h2>Requirements</h2>
<ul>
<li> <a href="http://jakarta.apache.org/tomcat/">Servlet 2.4 compliant container</a></li>
<li> <a href="http://www.jaxen.org/">Jaxen XPath Engine (included in the package)</a></li>
</ul>
<h2>Download</h2>
<ul>
<li> <a href="download/juseppe-1.0.3-bin.zip">Juseppe 1.0.3 Binaries (Upgraded to Jaxen 1.1b7)</a></li>
<li> <a href="download/juseppe-1.0.3-src.zip">Juseppe 1.0.3 Sources</a></li>
<li> <a href="download/juseppe-1.0.2-bin.zip">Juseppe 1.0.2 Binaries</a></li>
<li> <a href="download/juseppe-1.0.2-src.zip">Juseppe 1.0.2 Sources</a></li>
<li> <a href="download/juseppe-1.0.1-bin.zip">Juseppe 1.0.1 Binaries (Removed dependency on Commons Logging)</a></li>
<li> <a href="download/juseppe-1.0.1-src.zip">Juseppe 1.0.1 Sources</a></li>
<li> <a href="download/juseppe-1.0.0-bin.zip">Juseppe 1.0.0 Binaries</a></li>
<li> <a href="download/juseppe-1.0.0-src.zip">Juseppe 1.0.0 Sources</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flavio.tordini.org/juseppe/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSTL patch</title>
		<link>http://flavio.tordini.org/jstl-patch</link>
		<comments>http://flavio.tordini.org/jstl-patch#comments</comments>
		<pubDate>Tue, 05 Jul 2005 09:57:54 +0000</pubDate>
		<dc:creator>Flavio</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[jstl]]></category>
		<category><![CDATA[servlets]]></category>

		<guid isPermaLink="false">http://flavio.tordini.org/jstl-patch</guid>
		<description><![CDATA[This is a patched version of the Jakarta Standard Tag Library
  which implements the JSTL 1.1 specification. This patch makes the XML tags run 100 times faster. I wrote almost no code, I just reverted the XPathUtil class to a previous version and managed to compile the whole thing.
  
Originally the Standard Taglib [...]]]></description>
			<content:encoded><![CDATA[<p>This is a patched version of the <a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Jakarta Standard Tag Library</a><br />
  which implements the <a href="http://java.sun.com/products/jsp/jstl/">JSTL 1.1 specification</a>. This patch makes the XML tags run <strong>100 times faster</strong>. I wrote almost no code, I just reverted the XPathUtil class to a previous version and managed to compile the whole thing.
  </p>
<p>Originally the Standard Taglib used the <a href="http://www.jaxen.org/">Jaxen XPath processor</a>. With version 1.1 the project switched to <a href="http://xml.apache.org/xalan-j/">Xalan</a>, decreasing performance by a factor of 100. At <a href="http://www.kataweb.it">my company</a> we chose to use JSTL and we&#8217;re really happy about it. But our sites must work now, so I put together this patched version. I hope to be able to use the official version very soon. In the meanwhile, if you&#8217;re using JSTL in a production environment give this version a try.</p>
<p>I submitted this patch to the Standard Taglib developers but it was refused because it implies a dependency on Jaxen. Here&#8217;s <a href="http://nagoya.apache.org/eyebrowse/BrowseList?listName=taglibs-dev@jakarta.apache.org&amp;by=thread&amp;from=905112">the original thread</a> on the taglibs-dev at jakarta.apache.org mailing list.</p>
<p>To install over an existing webapp just drop in the <code>standard-*.*.*-patched.jar</code> and remove <code>standard.jar</code>.<br />
      You also need <code>jaxen-*.*.jar</code> from the <a href="http://www.jaxen.org/">Jaxen project</a>.</p>
<h2>Requirements</h2>
<ul>
<li>
<a href="http://jcp.org/aboutJava/communityprocess/final/jsr052/">JSTL APIs</a>
</li>
<li>
<a href="http://www.jaxen.org/">Jaxen XPath Engine</a>
</li>
</ul>
<h2>Download</h2>
<ul>
<li>
<a href="download/standard-1.1.2-patched-jaxen-1.1.jar">standard-1.1.2-patched-jaxen-1.1.jar (works with Jaxen 1.1)</a></p>
</li>
<li>
<a href="download/XPathUtil-jaxen-1.1.java">The modified source file (org.apache.taglibs.standard.tag.common.xml.XPathUtil) (works with Jaxen 1.1) </a>
</li>
<li>
<a href="download/standard-1.1.2-patched.jar">standard-1.1.2-patched.jar (works with Jaxen 1.0)</a>
</li>
<li>
<a href="download/standard-1.1.1-patched.jar">standard-1.1.1-patched.jar (works with Jaxen 1.0)</a>
</li>
<li>
<a href="download/XPathUtil.java">The modified source file (org.apache.taglibs.standard.tag.common.xml.XPathUtil) (works with Jaxen 1.0) </a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flavio.tordini.org/jstl-patch/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>XSLT Servlet</title>
		<link>http://flavio.tordini.org/xslt-servlet</link>
		<comments>http://flavio.tordini.org/xslt-servlet#comments</comments>
		<pubDate>Thu, 23 Jun 2005 10:02:08 +0000</pubDate>
		<dc:creator>Flavio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[servlets]]></category>

		<guid isPermaLink="false">http://flavio.tordini.org/xslt-servlet</guid>
		<description><![CDATA[This servlet transforms an XML document using an XSLT stylesheet. Probably there are other Servlet implementations of this kind, but I couldn&#8217;t find one with the features I need available under an Open Source license, so I wrote this one.
Features

the XML document and the stylesheet can be retrieved from the local webapp or from the [...]]]></description>
			<content:encoded><![CDATA[<p>This servlet transforms an XML document using an <a href="http://www.w3.org/TR/xslt">XSLT</a> stylesheet. Probably there are other Servlet implementations of this kind, but I couldn&#8217;t find one with the features I need available under an Open Source license, so I wrote this one.</p>
<h2>Features</h2>
<ul>
<li>the XML document and the stylesheet can be retrieved from the local webapp or from the network (using <code>java.net</code>).</li>
<li>Stylesheet is preloaded at startup and then periodically reloaded in the background in order to optimize performance.</li>
<li>
<a href="http://jcp.org/aboutJava/communityprocess/final/jsr152/">JSP EL expressions</a> can be used in the Servlet init params.</li>
<li>
<a href="http://www.w3.org/TR/xslt#section-Passing-Parameters-to-Templates">Parameters</a> can be passed to the stylesheet.</li>
<li>
<a href="http://www.w3.org/TR/xslt#output">XSLT output properties</a> can be controlled by the Servlet.</li>
<li>Not tied to a specific XML parser or XSLT processor.<br />
        This Servlet uses <code>javax.xml.transform</code> (aka TrAX) for XSLT processing.</li>
</ul>
<p>This is a sample <code>web.xml</code> configuration:</p>
<pre>
&lt;servlet&gt;
  &lt;servlet-name&gt;myTransformation&lt;/servlet-name&gt;
  &lt;servlet-class&gt;it.kataweb.xslt.servlet.XSLTServlet&lt;/servlet-class&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;xml&lt;/param-name&gt;
    &lt;param-value&gt;http://domain.org/service?param=${param.myParam}&lt;/param-value&gt;
  &lt;/init-param&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;xslt&lt;/param-name&gt;
    &lt;param-value&gt;/WEB-INF/xslt/myStylesheet.xslt&lt;/param-value&gt;
  &lt;/init-param&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;xsltReloadInterval&lt;/param-name&gt;
    &lt;param-value&gt;60&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/servlet&gt;
</pre>
<p>For reference documentation see the Javadocs included in the distribution.</p>
<h2>Legal</h2>
<p>This Servlet is Open Source software distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License Version 2.0</a>.</p>
<h2>Requirements</h2>
<ul>
<li>
<a href="http://jakarta.apache.org/tomcat/">Servlet 2.4 compliant container</a>
</li>
<li>
<a href="http://jakarta.apache.org/commons/el/">Jakarta Commons EL (included in the package)</a>
</li>
</ul>
<h2>Download</h2>
<ul>
<li>
<a href="download/xslt-servlet-1.1.0-bin.zip">XSLT Servlet 1.1.0 Binaries</a>
</li>
<li>
<a href="download/xslt-servlet-1.1.0-src.zip">XSLT Servlet 1.1.0 Sources</a>
</li>
<li>
<a href="download/xslt-servlet-1.0.0-bin.zip">XSLT Servlet 1.0.0 Binaries</a>
</li>
<li>
<a href="download/xslt-servlet-1.0.0-src.zip">XSLT Servlet 1.0.0 Sources</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flavio.tordini.org/xslt-servlet/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arale, a Java web spider</title>
		<link>http://flavio.tordini.org/arale</link>
		<comments>http://flavio.tordini.org/arale#comments</comments>
		<pubDate>Wed, 10 Jan 2001 10:28:44 +0000</pubDate>
		<dc:creator>Flavio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[java spider]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://flavio.tordini.org/arale-a-java-web-spider</guid>
		<description><![CDATA[Arale can download entire web sites or specific resources from the web. Arale can also render dynamic sites to static pages. I wrote this utility in 2001 to familiarize myself with the java.net.* package. I&#8217;m not actively maintaining it anymore, the code is rather messy but the spider is working fine.
Areas of interest

Web development
Advanced web [...]]]></description>
			<content:encoded><![CDATA[<p>Arale can download entire web sites or specific resources from the web. Arale can also render dynamic sites to static pages. I wrote this utility in 2001 to familiarize myself with the <code>java.net.*</code> package. I&#8217;m not actively maintaining it anymore, the code is rather messy but the spider is working fine.</p>
<h2>Areas of interest</h2>
<ul>
<li>Web development</li>
<li>Advanced web browsing</li>
</ul>
<h2>Features</h2>
<ul>
<li>Download and scan user-defined file types.</li>
<li>Rename dynamic resources. Encode query strings into filenames.</li>
<li>Set the number of simultaneous connections.</li>
<li>Options for minimum and maximum file size.</li>
<li>Domain depth support.</li>
</ul>
<p>While many bots around are focused on page indexing, Arale is primarly designed for personal use. It fits the needs of advanced web surfers and web developers. Some real life cases are:</p>
<ul>
<li>downloading only images, videos, mp3 or zip files from a site.</li>
<li>manuals, articles, ebooks fragmented in many files to discourage download.</li>
<li>user-unfriendly sites. Popups, banners and tricky scripts annoying you before you can download a resource.</li>
</ul>
<p><em>Multithreaded</em> means that Arale can download more than one file simultaneously. Arale can easily saturate your bandwidth, thus providing the fastest possible download speed for your internet connection.</p>
<p>If you&#8217;re developing dynamic sites using technologies such as JSP, PHP, ASP or whatever, you may be interested in rendering dynamic pages to static files.<br />
Arale supports URL renaming: query string is encoded in the static filename and .html extension is appended. let&#8217;s make an example:</p>
<ul>
<li>original URL: <code>mypage.jsp!myparam=myvalue.html</code></li>
<li>static filename: <code>mypage.jsp!myparam=myvalue.html</code></li>
</ul>
<p>Existing links to renamed URLs are substituted with modified links. This preserves navigation among static files. Once a dynamic site is trasformed into a set of static files it can be deployed on a server that does not support dynamic pages. For example you may deploy a JSP site in a free web space.</p>
<p>Currently Arale is a command-line tool. It would be nice to develop a GUI for it. I&#8217;d like to have some feedback from users, so if you think it&#8217;s worth send me an email and tell me what you think. <img src='http://flavio.tordini.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Requirements</h2>
<ul>
<li> <a href="http://java.com/en/download/manual.jsp">Java Runtime Environment (JRE)</a></li>
</ul>
<h2>Download</h2>
<ul>
<li> <a href="download/arale.zip">arale.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flavio.tordini.org/arale/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
