解决路径问题

                 定义:前台路径:在jsp中(除java代码块)填写的的路径;
                           后台路径:在java代码,配置文件中填写的路径;


                  参照路径:不以/开头的:参照路径为当前资源的访问路径(是地址栏地址去掉访问名称)
                                                          例如:URL为http://localhost:8080/01-primary/hello.do去掉资源名称hello.do
                                                          即为访问路径http://localhost:8080/01-primary/ URL=访问路径+资源名称
                                     以/开头的:1.前台路径的参照路径是web服务器的根。例如http://localhost:8080
                                                        2.后台路径的参照路径是web应用的根。例如http://localhost:8080/01-primary

                                   示例:<a href="/hello.do">跳转</a> (注:MyController是SpringMVC中的处理器)
                                   前台路径,其参照路径为web服务器的根,即http://localhost:8080,所以提交的绝对路径为
                                   http://localhost:8080/ hello.do,这个绝对路径是无法访问到处理器MyController的,中间缺少项目名。
                                   解决方法:路径前加${pageContext.request.contextPathdon}动态获取项目的名称。
                                   即${pageContext.request.contextPathdon}/hello.do

                                   <a href="hello.do">跳转</a>
                                   不以/开头的路径,其参照路径为当前资源的访问路径,http://localhost:8080/01-primary/index.jsp去掉index.jsp
                                   即为http://localhost:8080/01-primary/,所以其访问路径为http://localhost:8080/01-primary/ hello.do。能访问的到。

                                   request.getRequestDispacther("/test.jsp").forword(request,response);
                                   后台路径,其参考路径为web应用的根,即http://localhost:8080/01-primary,所以提交的绝对路径为
                                   http://localhost:8080/01-primary /test.jsp,能访问的到,因为test.jsp在项目根目录。


                     特例:当代码中使用response的sendRedirect()方法进行重定向时,其参照路径不是web应用的根,而是web服务器的根路径。
                             (因为重定向是两个请求两个响应,"相当于是从前台发出的请求")。正确写法:response.sendRedirect("test.jsp"); 不带/

posted @ 2017-10-17 22:09  【一片冰心】  阅读(318)  评论(0编辑  收藏  举报