java - Display forwarded JSP with url-pattern "/*" -


to improve java skills, i'm trying build simple j2ee framework (mvc).

i built handle every request in frontservlet. here mapping used :

web.xml : <servlet>     <servlet-name>front</servlet-name>     <servlet-class>test.frontservlet</servlet-class> </servlet> <servlet-mapping>     <servlet-name>front</servlet-name>     <url-pattern>/*</url-pattern> </servlet-mapping>    

my problem when forward request frontservlet jsp, obviously, jsp request handle frontservlet , view isn't rendered.

  • how can resolve problem keeping url-pattern "/*" ?
  • is there way render jsp in servlet without performance losses ?

thanks in advance reply !


  • solution 1 (@bryan kyle)

i'm trying follow advise. created filter :

public void dofilter(servletrequest request,    servletresponse response, filterchain chain)     throws ioexception, servletexception      {        httpservletrequest req = (httpservletrequest) request;         if(!req.getrequesturl().tostring().endswith("jsp"))        {            // changed servlet url-pattern "/front.controller"            req.getrequestdispatcher("/front.controller").forward(req, response);            /*chain.dofilter(req, resp);*/        }    } 

<filter>     <filter-name>filter</filter-name>     <filter-class>test.filter</filter-class> </filter>  <filter-mapping>     <filter-name>filter</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping> 
  • is right?

thanks !

a filter inappropriate solution front controller approach.

you want refine url-pattern of servlet matches e.g. /pages/* or *.do. don't want front controller kick in on irrelevant requests css/js/images/etc. take /pages/* example, assuming you've jsp in /web-inf/foo.jsp, following in servlet

protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {     request.getrequestdispatcher("/web-inf" + request.getpathinfo() + ".jsp").forward(request, response); } 

should display jsp in question on http://localhost:8080/contextname/pages/foo.

see also:


Comments

Popular posts from this blog

linux - Mailx and Gmail nss config dir -

c# - Is it possible to remove an existing registration from Autofac container builder? -

php - Mysql PK and FK char(36) vs int(10) -