still got the error: PageNotFound.noHandlerFound(1005) | No mapping please help, how do config ur web.xml..
tks a lot !!! chris Michael Horwitz wrote: > > Matt, > > I have attached a simple filter class which works well with Spring MVC. > The > basic operation works on the following principles: > > 1) The servlet container retains responsibility for serving all static > resources. This ensures optimum performance (resources can be cached, have > their timestamps checked for updates, etc) and avoids any I/O nasties that > might arise if the filter itself tries to read and serve up these > resources. > 2) The filter redirects any requests for active pages to the relevant > processing chain, which includes all filters related to active content, > e.g. > Hibernate filter. This helps ensure that the minimum number of filters are > applied to static content. > 3) The filter requires reasonably sophisticated pattern matching abilities > to sort active from static page requests. This implies the use of an > excludes filter on top of the normal include filter provided by default as > part of the servlet standard. > > The attached implementation is Spring MVC specific. Any request that the > filter believes matches an active page are redirected to the dispatch > servlet by name. All other requests are allowed to pass straight through > for > normal processing by the servlet container. The solution also relies on > the > use of the <dispatcher> filter configuration element available as of the > servlet 2.4 spec to separate filtering on active page requests from those > for static content, which leads me to believe the solution could be made > to > work for the other web frameworks. > > Let me know what you think. > > Mike. > > > On 1/29/07, mraible <[EMAIL PROTECTED]> wrote: >> >> >> Any update on this Mike? It looks like most folks would prefer to stick >> with >> *.html (as would I). >> >> http://appfuse.org/pages/viewpage.action?pageId=495 >> >> Thanks, >> >> Matt >> >> >> Matt Raible-3 wrote: >> > >> > On 1/17/07, Michael Horwitz <[EMAIL PROTECTED]> wrote: >> >> Matt, >> >> >> >> I have successfully used Dojo with SpringMVC while still keeping the >> >> .html >> >> extension by using a filter to redirect any non-dojo requests to the >> >> Spring >> >> servlet. This approach has two nice side effects: 1) the servlet >> >> container >> >> can use its default handling for all static content and 2) one can >> reduce >> >> the number of filters that get applied to such content. >> >> >> >> If people are interested I would be more than happy to share the >> >> solution. >> > >> > I'd definitely be interested in this and having folks test it with >> > Struts 2. It might be best to post it here, as well as in JIRA >> > (http://issues.appfuse.org/browse/APF-431). >> > >> > Matt >> > >> >> >> >> Mike. >> >> >> >> >> >> On 1/17/07, Matt Raible <[EMAIL PROTECTED]> wrote: >> >> > I've created a poll so everyone can vote on their favorite >> extension. >> >> > >> >> > http://appfuse.org/pages/viewpage.action?pageId=495 >> >> > >> >> > You'll need to create an account and login to vote. To do this, go >> to >> >> > View > Account > Sign Up (or login if you already have an account). >> >> > >> >> > Thanks! >> >> > >> >> > Matt >> >> > >> >> > On 1/16/07, Sanjiv Jivan <[EMAIL PROTECTED]> wrote: >> >> > > I like .html but the problem I've faced with using this extension >> is >> >> that >> >> > > serving static html file with the .html file extension (like >> >> documentation, >> >> > > Dojo templates or FckEditor files) becomes very hard to map to not >> go >> >> to >> >> the >> >> > > applications MVC controller. I've spent countless number of hours >> >> messing >> >> > > with the url-pattern in web.xml without much success. >> >> > > >> >> > > So I usually use .htm for the application extension. >> >> > > >> >> > > Sanjiv >> >> > > >> >> > > >> >> > > On 9/20/06, Matt Raible < [EMAIL PROTECTED]> wrote: >> >> > > > >> >> > > > Dear AppFuse users, >> >> > > > >> >> > > > As many of you likely know, there are a couple of issues with >> using >> >> > > > the *.html extension with some frameworks in AppFuse. For >> example, >> >> > > > with WebWork - it loads Dojo template files from a *.html >> >> extension. >> >> > > > If you want to use Dojo with WebWork, you have to modify your >> >> default >> >> > > > extension. >> >> > > > >> >> > > > http://issues.appfuse.org/browse/APF-431 >> >> > > > >> >> > > > Because of this, we're starting to look at other extensions. >> I'd >> >> > > > rather use one for all frameworks, rather than the recommended >> ones >> >> > > > for each framework b/c it allows us to have one >> security.xmlfiles, >> >> > > > rather than one for each framework. Another option is to use >> >> > > > path-based mapping, for example: >> >> > > > >> >> > > > http://localhost:8080/yourapp/go/users >> >> > > > >> >> > > > Where "/go/*" is the path that front-controller servlet/filters >> are >> >> > > > mapped to. The only problem with this is stat trackers >> typically >> >> like >> >> > > > to track extensions, and so we'd be unfriendly to those >> companies >> >> who >> >> > > > like to watch their stats. >> >> > > > >> >> > > > Here's a couple thoughts - feel free to add your own suggestions >> >> and >> >> > > thoughts: >> >> > > > >> >> > > > 1. *.htm >> >> > > > 2. *.aspx >> >> > > > 3. *.php >> >> > > > 4. *.app >> >> > > > 5. *.a >> >> > > > 6. *.o >> >> > > > 7. *.apf (would help us track AppFuse-based applications, but >> it's >> >> a >> >> > > > pretty ugly extension) >> >> > > > 8. *.em >> >> > > > 9. *.fun >> >> > > > 10. *.page >> >> > > > >> >> > > > I still like *.html the best b/c it doesn't give away the >> >> underlying >> >> > > > technology, so *.htm seems like the best option after that. But >> of >> >> > > > course, I'm open to suggestions. ;-) >> >> > > > >> >> > > > Matt >> >> > > > >> >> > > > >> >> > > >> >> --------------------------------------------------------------------- >> >> > > > To unsubscribe, e-mail: >> >> > > [EMAIL PROTECTED] >> >> > > > For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > >> >> > > > >> >> > > >> >> > > >> >> > >> >> > >> >> > -- >> >> > http://raibledesigns.com >> >> > >> >> > >> >> --------------------------------------------------------------------- >> >> > To unsubscribe, e-mail: >> >> [EMAIL PROTECTED] >> >> > For additional commands, e-mail: [EMAIL PROTECTED] >> >> > >> >> > >> >> >> >> >> > >> > >> > -- >> > http://raibledesigns.com >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> > For additional commands, e-mail: [EMAIL PROTECTED] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Changing-default-extension-from-*.html-to-*.---tf2307780s2369.html#a8699069 >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > package org.appfuse.webapp.filter; > > import org.apache.commons.lang.StringUtils; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > import org.springframework.util.PatternMatchUtils; > import org.springframework.web.util.UrlPathHelper; > > import javax.servlet.Filter; > import javax.servlet.FilterChain; > import javax.servlet.FilterConfig; > import javax.servlet.RequestDispatcher; > import javax.servlet.ServletContext; > import javax.servlet.ServletException; > import javax.servlet.ServletRequest; > import javax.servlet.ServletResponse; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > import java.io.IOException; > import java.util.Iterator; > import java.util.Set; > > /** > * A simple filter that allows the application to continue using the .html > prefix for active > * pages but still allows Dojo to serve up its HTML template code. The > filter works on an > * include/exclude basis where all requests for active pages are > redirected by the filter to > * the dispatch servlet. All Dojo related .html requests are allowed to > pass straight through > * to be processed by the servlet container as per normal. > */ > public class DojoFilter implements Filter { > > private static Log log = LogFactory.getLog(DojoFilter.class); > > private final static String DEFAULT_INCLUDES = "*.html"; > > private final static String DEFAULT_EXCLUDES = ""; > > public static final String INCLUDES_PARAMETER="includes"; > > public static final String EXCLUDES_PARAMETER="excludes"; > > public static final String > ACTION_SERVLET_NAME_PARAMETER="action_servlet_name"; > > public static final String _REQUEST_PARSED = > "org.appfuse.webapp.request.parsed"; > > private String[] excludes; > > private String[] includes; > > private String actionServletName = "action"; > > private RequestDispatcher actionServletRequestDispatcher; > > /** > * Read the includes/excludes paramters and set the filter accordingly. > */ > public void init(FilterConfig filterConfig) > { > String includesParam = > filterConfig.getInitParameter(INCLUDES_PARAMETER); > if (StringUtils.isEmpty(includesParam)) > { > includes = parsePatterns(DEFAULT_INCLUDES); > } > else > { > includes = parsePatterns(includesParam); > } > String excludesParam = > filterConfig.getInitParameter(EXCLUDES_PARAMETER); > if (StringUtils.isEmpty(excludesParam)) > { > excludes = parsePatterns(DEFAULT_EXCLUDES); > } > else > { > excludes = parsePatterns(excludesParam); > } > String actionServletNameParam = > filterConfig.getInitParameter(ACTION_SERVLET_NAME_PARAMETER); > if (StringUtils.isNotEmpty(actionServletNameParam)) > { > actionServletName = actionServletNameParam; > } > ServletContext servletContext = filterConfig.getServletContext(); > actionServletRequestDispatcher = > servletContext.getNamedDispatcher(actionServletName); > if (actionServletRequestDispatcher == null) > { > log.error("No action servlet named [" + actionServletName + "] could > be found. Please check configuration in web.xml."); > throw new RuntimeException("Could not instantiate dojo filter: no > valid action servlet specified, or action servlet not found."); > } > } > > private String[] parsePatterns(String delimitedPatterns) > { > //make sure no patterns are repeated. > Set patternSet = > org.springframework.util.StringUtils.commaDelimitedListToSet(delimitedPatterns); > String[] patterns = new String[patternSet.size()]; > int i = 0; > for (Iterator iterator = patternSet.iterator(); iterator.hasNext(); > i++) > { > //no trailing/leading white space. > String pattern = (String) iterator.next(); > patterns[i] = pattern.trim(); > } > return patterns; > } > > public void doFilter(ServletRequest request, ServletResponse response, > FilterChain chain) throws IOException, > ServletException { > > if (request.getAttribute(_REQUEST_PARSED) != null) > { > chain.doFilter(request, response); > return; > } > > final HttpServletRequest req = (HttpServletRequest) request; > final HttpServletResponse res = (HttpServletResponse) response; > > UrlPathHelper urlPathHelper = new UrlPathHelper(); > String path = urlPathHelper.getPathWithinApplication(req); > boolean pathExcluded = PatternMatchUtils.simpleMatch(excludes, path); > boolean pathIncluded = PatternMatchUtils.simpleMatch(includes, path); > > if (pathIncluded && ! pathExcluded) > { > // req.setAttribute(_REQUEST_PARSED, Boolean.TRUE); > actionServletRequestDispatcher.forward(req, res); > return; > } > > chain.doFilter(req, res); > } > > public void destroy() { > actionServletRequestDispatcher = null; > } > } > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > -- View this message in context: http://www.nabble.com/Changing-default-extension-from-*.html-to-*.---tf2307780s2369.html#a8742724 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
