整 合疑问
来源:4-1 Freemarker与Servlet整合
jia_蛙
2019-12-03 12:58:24
一般我们请求转发的时候不是要带上:如果是servlet的话带上配置的地址值,如果是文件的话,直接 文件名 不是表示 这个文件就在webContent下面吗?像案例中的在webContent下的WEB-INF下的ftl文件下的employee.ftl 文件不应该这样写:request.getRequestDispatcher("/WEB-INF/ftl/employee.ftl").forward(request, response); 但是我试了一下这样子写不行,报404
2回答
同学你好。因为我们在配置文件中配置了前缀:
配置之后,相当于ftl结尾的请求,全都会交给FreemarkerServlet处理,它会将TemplatePath追加到当前这个以ftl结尾的请求路径前,也就是说,同学使用request.getRequestDispatcher("/WEB-INF/ftl/employee.ftl").forward(request, response);请求会变为/WEB-INF/ftl/WEB-INF/ftl/employee.ftl,所以会找不到。而使用request.getRequestDispatcher("/employee.ftl").forward(request, response);则会正常的去Web根目录的/WEB-INF/ftl下寻找employee.ftl
如果解答了同学的疑问,望采纳~
祝学习愉快~
jia_蛙
提问者
2019-12-03
这里之所以写request.getRequestDispatcher("/employee.ftl").forward(request, response); 能跳到employee.ftl是因为配置中的地址写了 *.ftl是吗 刚刚看了一下配置。还有那个问题,为什么 这里写request.getRequestDispatcher("/WEB-INF/ftl/employee.ftl").forward(request, response); 这样不行呀?按理来说应该也可以访问的呀
相似问题