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.
I did some refactorings of AppFuse yesterday - inspired by an e-mail I received from Jon
. I basically de-coupled my Actions from Hibernate - tossing around a connection object in the constructors of my Managers and DAOs (rather than the method signatures). A little more casting, but no noticeable performance difference. I'll upload the source shortly.
Update: - Source has been released.
Crucial.com always seems to have the best prices on RAM - and today I found its no different for the PowerBook - for 512MB, it's $150 vs. $300 from Apple. That's Apple for you - trying to make a buck where ever they can - not a bad business practice when you have so many cult-like followers.