问题: 1.地址栏访问页面index.jsp,css样式显示,js加载;
2.页面提交后,经过Handel处理后,转发到index.jsp,css,js失效
项目具体情况:
1.地址栏访问如下图
2.index.jsp在项目的路径:在WebRoot下的sc中,css样式在sc下
3.页面引入css的写法
4.页面提交,表单提交的路径是处理器的路径(<form action="${pageContext.request.contextPath }/login.action" method="post">)
5.提交成功后,Handle处理
6.转发到index.jsp,css,js失效
7.视图解析器前缀后缀的配置
问题原因分析:1.地址栏访问时,页面引入css样式是相对于页面所在相对路径,就是说从index.jsp所在位置,开始查找css样式,此时可以查找到,所以显示样式
2.处理器转发后,由于Handle的命名空间是WebRoot下,所以转发后,页面引入css样式则是从WebRoot开始查找,由于css样式在sc下,所有当然找不到,找不到,所有不显示css样式,js同理
解决办法:将jsp和Handle放在同一目录下即可。
1.可使用绝对路径,在jsp页面顶部加入以下标签:
2.由于使用绝对路径的方法,所有可移植性较差,所以可以使用这种方法
此时表单提交的路径是(<form action="${pageContext.request.contextPath }/sc/login.action" method="post">)
在处理器中设置访问路径,如下:
这样设置后:再次登录,处理后,页面正常如下:Action的处理原理是相同的,就是在Action的命名空间即namespace中加上/sc即可