使用url-pattern" / *"显示转发的JSP [英] Display forwarded JSP with url-pattern "/*"

查看:252
本文介绍了使用url-pattern" / *"显示转发的JSP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了提高我的java技能,我正在尝试构建一个简单的j2ee框架(MVC)。

To improve my java skills, I'm trying to build a simple j2ee framework (MVC).

我构建它来处理FrontServlet中的每个请求。这是我使用的映射:

I built it to handle every request in a FrontServlet. Here is the mapping that I 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>   

我的问题是当我将请求从FrontServlet转发到JSP时,显然,由FrontServlet处理JSP请求,并且不呈现视图。


  • 如何解决此问题保持url-pattern/ *的问题?

  • 有没有办法在没有性能损失的情况下在Servlet中呈现JSP?

  • How can I resolve this problem by keeping the url-pattern "/*" ?
  • Is there a way to render a JSP in a Servlet without performance losses ?

预先感谢您的回复!


  • 解决方案1(@Bryan Kyle)

我正在尝试遵循您的建议。我创建了这个过滤器:

I'm trying to follow your advise. I created this filter :

public void doFilter(ServletRequest request,
   ServletResponse response, FilterChain chain) 
   throws IOException, ServletException 

   {
       HttpServletRequest req = (HttpServletRequest) request;

       if(!req.getRequestURL().toString().endsWith("jsp"))
       {
           // I changed the servlet url-pattern to "/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 it right?
    • 谢谢!

      推荐答案

      A 过滤器对于前端控制器方法来说是不合适的解决方案。

      A Filter is an inappropriate solution for a front controller approach.

      您想要优化 url-你的servlet的模式,以便匹配例如 / pages / * *。执行。你不希望你的前端控制器参与CSS / JS / images /等无关的请求。以 / pages / * 为例,假设您在 /WEB-INF/foo.jsp ,然后servlet中的以下内容

      You want to refine the url-pattern of your servlet so that it matches e.g. /pages/* or *.do. You don't want your front controller to kick in on irrelevant requests like CSS/JS/images/etc. To take /pages/* as an example, assuming that you've a JSP in /WEB-INF/foo.jsp, then the following in a servlet

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          request.getRequestDispatcher("/WEB-INF" + request.getPathInfo() + ".jsp").forward(request, response);
      }
      

      应该在 http:// localhost:8080 / contextname / pages / foo

      • Design patterns in Java web applications
      • Hidden features of JSP/Servlet

      这篇关于使用url-pattern&quot; / *&quot;显示转发的JSP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆