SpringMVC控制器 跳转到jsp页面 css img js等文件不起作用 不显示

通过浏览器的开发者工具查看网页源代码发现css,js,img等资源的路径出现了错误,路径前边多了一个控制器的路径,类似:

http://localhost:8080/项目根目录/控制器名称/js/jquery-1.9.1.min.js

解决办法:在jsp页面中将资源的路径设置为../js/jquery-1.9.1.min.js这样就会返回控制器的上一层路径了,最后得到的路径是:

http://localhost:8080/项目根目录/js/jquery-1.9.1.min.js

上边这种解决办法并不好,假设有这样一种场景:我在myeclipse启动项目,首先运行的是一个登陆页面,路径为

http://localhost:8080/项目根目录/login.jsp

login.jsp里边的css,js,img等资源的相对路径如./js/jquery-1.9.1.min.js。
之后我进行登录,登录成功之后进入到一个新页面,在这个新页面里边有一个退出登录按钮,这个按钮点击之后跳到控制器,这个控制器的路径为:

http://localhost:8080/项目根目录/控制器名称/控制器里边的方法名称

在这个控制器里边我进行一些退出登录的操作,进行完这些操作之后,我再次跳转到了login.jsp页面,这时候login.jsp里边的css,js,img等资源的路径再次变为了

http://localhost:8080/项目根目录/控制器名称/js/jquery-1.9.1.min.js

依然加载不出来资源,所以最终的解决办法是:引用css,js,img等资源文件以及在jsp页面进行跳转到其它页面或者控制器的时候使用绝对路径。

在jsp页面首部加上这段代码:

<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

在css,js,img等资源文件以及访问控制器的相对路径改为绝对路径:

./js/jquery-1.9.1.min.js => <%=basePath %>js/jquery-1.9.1.min.js

你可能感兴趣的:(java,javaee,SpringMVC)