Thank much Mark, I talked with a colleague and we're going to give the urlrewrite a try. Thanks! -----Original Message----- From: Mark McLaren [mailto:[EMAIL PROTECTED] Sent: 28 September 2007 12:02 To: Struts Users Mailing List Subject: Re: Mapping a jsp to an action
Hi Jennie, I am fairly new to Struts 2 but you can certainly do action wildcard mappings with it, such as: <action name="*" > <result>/{1}.jsp</result> </action> where foo.action would map to foo.jsp. However, my guess is that what you are asking for is a little bit more advanced (and judging by the "*.do" you are not using Struts 2). You might be better to look at using mod_rewrite on apache if you can. Alternatively you could create or use something like the URL rewriting servlet filter below. <http://tuckey.org/urlrewrite/> A very simple URL mapping servlet would do the trick and look something like the servlet below. I'm sure that other other here would be able to improve on this with some clever one line regular expression but at least it gives you an idea of how to do it: public class UrlMappingServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String path=req.getServletPath(); String queryString = req.getQueryString(); // cut off the extension and leading slash int end = path.lastIndexOf(".jsp"); path = path.substring(1, end); // split the path into components String[] pathcomponents = path.split("/"); // 0 -recipes // 1 - number String number = pathcomponents[1]; // 2 - recipe name String name = pathcomponents[2]; String destination = "/recipeDetails.jsp"?number=" + number + "&name=" + name + "&" + queryString; RequestDispatcher rd; rd = req.getRequestDispatcher(destination); rd.forward(req, resp); } } Of course, best practice states you should never go directly to a JSP url in a Struts app. You should always go via an action. HTH Mark On 9/28/07, Jennie Moeller <[EMAIL PROTECTED]> wrote: > Hi, > > I'm trying to map a jsp page to an action. When any jsp gets loaded > with the recipe path on it I want it to go to an action. > > for example: > > This uri: recipes/4735/steak-with-barbecue-sauce.jsp > > I want it to hit my > > recipeDetails action > > My struts action looks like this: > > <action path="/recipes/**" > type="com.pub.actions.RecipeDetailsAction" > name="recipeDetailsForm" > scope="request" > validate="false"> > > <forward redirect="false" name="success" > path="/WEB-INF/jsp/recipeDetails.jsp" /> > </action> > > > > My web.xml looks like this: > > <servlet-mapping> > <servlet-name>action</servlet-name> > <url-pattern>/recipes/*/*.jsp</url-pattern> > </servlet-mapping> > > <servlet-mapping> > <servlet-name>action</servlet-name> > <url-pattern>*.do</url-pattern> > </servlet-mapping> > > > any ideas? > > thanks, > Jennie > > > This e-mail (and any attachments) is confidential and may contain > personal views which are not the views of the BBC unless specifically > stated. > If you have received it in error, please delete it from your system. > Do not use, copy or disclose the information in any way nor act in > reliance on it and notify the sender immediately. Please note that the > BBC monitors e-mails sent or received. > Further communication will signify your consent to this. > -- "Paradoxically, the more time saving abstractions you are using the more you actually have to know." - Simon Willison --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system. Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received. Further communication will signify your consent to this. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]