If you opt for the Apache rewrite rule, rather than the application server mapping/filter (as I did) you might also want to do more than just look for "^([0-9a-zA-Z]+)$"
You may want to confirm the url is not a directory or a file that does exist if apache is fronting and serving the non-jsp resources. And confirm that the JSP exists, and do a pass thru rather than redirect, and append any possible query string.
RewriteCond %{REQUEST_URI} !^/.*\.(jsp)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.jsp -f
RewriteRule ^(.+)$ /$1.jsp [PT,QSA,L]
And to make sure that users only see this via /search, not /search.jsp then you want to rewrite the reverse as well
RewriteRule ^(.+)\.jsp$ $1 [R=301,QSA,L]
RewriteRule ^(.+)index$ $1 [R=301,QSA,L]
This is a good idea for SEO purposes so that search engines dont ding you for duplicating content at multiple urls.