问题:在Servlet中进行请求转发后,跳转至目标页面(例register.jsp),但是页面的CSS样式失效,页面混乱。这个问题如果是重定向的不会出现。
那么我们就要看下请求转发了,请求转发是客户端发送请求,Servlet做出业务逻辑处理。然后Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。
更多关于请求转发和重定向的内容参考:https://blog.youkuaiyun.com/qq_34111779/article/details/78164027
原因是目标页面原来引用资源(cssd等)的相对路径是当前目标页面相对于资源文件的相对路径。而Servlet跳转时,页面(例register.jsp)的路径是这个Servlet的相对路径,浏览器中的地址栏并不会跳转到目标页面。
如:原页面http://localhost:8080/lab/view/login.jsp
请求转发后跳转至目标页面后浏览器中地址栏:http://localhost:8080/lab/login?action=toRegister
样式失效,页面内容混乱
而单独打开目标页面,页面的CSS和JS样式是生效了的
目标页面地址http://localhost:8080/lab/view/register.jsp