Vanity URLs in Struts
I figured out a way to make your Struts' app have URLs like the following:
http://raibledesigns.com/weblog?method=edit http://raibledesigns.com/weblog.jsp?method=edit http://raibledesigns.com/weblog.html?method=edit http://raibledesigns.com/weblog.php?method=edit http://raibledesigns.com/weblog.asp?method=edit
Might be a nifty little trick to try. Pump out a version of Roller with this feature enabled and you could say you made a .NET version! ;-)
Here's how:
1. I created a RequestFilter that maps to /* 2. This filter checks to see if request.getServletPath() matches any of the action paths in struts-config.xml. If so, it forwards to the action. 3. As an added feature, I added a set of allowed extensions to this filter's init parameters. So far I have .jsp,.html,.asp,.cfm (using .jsp ensures no one links to them directly, MVC enforced!) - so marketing can choose what technology they want to convey ;-) This seems to work great. For example, I have an "advancedSearch" action defined as follows: <action path="/advancedSearch" type="org.apache.struts.actions.ForwardAction" parameter=".advancedSearch"/> (ForwardAction will eventually be replaced, if necessary, with a real action). This allows all of the following URLs to work: http://site.com/do/advancedSearch (works with Struts by default) http://site.com/advancedSearch http://site.com/advancedSearch.html + all other extensions listed.
More information (including source code) can be found on the struts-user mailing list.