整 合疑问

来源:4-1 Freemarker与Servlet整合

jia_蛙

2019-12-03 12:58:24

http://img.mukewang.com/climg/5de5e8f909c752bb11600453.jpg

一般我们请求转发的时候不是要带上:如果是servlet的话带上配置的地址值,如果是文件的话,直接 文件名
不是表示 这个文件就在webContent下面吗?像案例中的在webContent下的WEB-INF下的ftl文件下的employee.ftl
文件不应该这样写:request.getRequestDispatcher("/WEB-INF/ftl/employee.ftl").forward(request, response);
但是我试了一下这样子写不行,报404


写回答

2回答

芝芝兰兰

2019-12-03

同学你好。因为我们在配置文件中配置了前缀:

http://img.mukewang.com/climg/5de601dc0925683809110298.jpg

配置之后,相当于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

如果解答了同学的疑问,望采纳~

祝学习愉快~

0

jia_蛙

提问者

2019-12-03

这里之所以写request.getRequestDispatcher("/employee.ftl").forward(request, response);
能跳到employee.ftl是因为配置中的地址写了 *.ftl是吗 刚刚看了一下配置。还有那个问题,为什么
这里写request.getRequestDispatcher("/WEB-INF/ftl/employee.ftl").forward(request, response);
这样不行呀?按理来说应该也可以访问的呀


0

0 学习 · 9666 问题

查看课程