JSP交给Servlet处理后,转到重定向的页面时,布局混乱是什么原因?
6个回答
展开全部
虽然你没有提供具体的代码或者例子,但是我估计情况或许是这样的:
假设为站点名为ws,站点根目录下有_pages目录和没media目录。_pages下有个index.jsp文件,其内容如下(只列出body标签):
<body>
hello this is index.jsp
<img src="../_media/bg.jpg" >
</body>
因为bg.jpg文件中_media目录下,通常我们会在index.jsp中这样引用该文件的:../media/bg.jpg
" .. " 表示上级目录,这大家都知道。这种方式引用文件在静态资源中是可行的。但是动态的Servlet来说涉及到上下文的概念,这里不做解释。
现在我们写一个简单的servlet进行跳转,核心代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/_pages/index.jsp").forward(request, response);
}
可见,该servlet收到请求直接跳转到_pages/index.jsp。
现在我们测试:http://localhost:8080/ws/_pages/index.jsp,结果是图片可以显示的。
现在测试(servlet映射url是redirector):http://localhost:8080/ws/redirector,结果是图片无法显示。
解决方法:将index.jsp的代码做如下改动
<body>
hello this is index.jsp
<img src="/ws/_media/bg.jpg" >
</body>
现在测试两个路径,都是没问题的。
假设为站点名为ws,站点根目录下有_pages目录和没media目录。_pages下有个index.jsp文件,其内容如下(只列出body标签):
<body>
hello this is index.jsp
<img src="../_media/bg.jpg" >
</body>
因为bg.jpg文件中_media目录下,通常我们会在index.jsp中这样引用该文件的:../media/bg.jpg
" .. " 表示上级目录,这大家都知道。这种方式引用文件在静态资源中是可行的。但是动态的Servlet来说涉及到上下文的概念,这里不做解释。
现在我们写一个简单的servlet进行跳转,核心代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/_pages/index.jsp").forward(request, response);
}
可见,该servlet收到请求直接跳转到_pages/index.jsp。
现在我们测试:http://localhost:8080/ws/_pages/index.jsp,结果是图片可以显示的。
现在测试(servlet映射url是redirector):http://localhost:8080/ws/redirector,结果是图片无法显示。
解决方法:将index.jsp的代码做如下改动
<body>
hello this is index.jsp
<img src="/ws/_media/bg.jpg" >
</body>
现在测试两个路径,都是没问题的。
展开全部
那是因为你的css样式文件路径出错了,样式文件路径用<link href="<%=path %>/source/bookshop.css" rel="stylesheet" type="text/css"> 这样无论如何都不会有问题 其中path你懂的,(request.getContextPath())
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
样式文件关联的路径错了,你可以直接打开此网页来判断是不是程序的原因。也就是说你直接在浏览器里输入jsp的地址,然后看页面是不是混乱的,如果是就是编写页面时候没注意路径。如果不是就是重定向时跳转的问题,因为看不到代码,只能这样帮你了
追问
输入JSP地址可以正常显示,是重定向跳转的问题。
管理员登录
(是不是这出问题了?)
..
追答
it2008chen 说的应该是对的,你试试,别怕错,怕代码改不回来就备份一份。哈哈,多错几次就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-01-22 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
JSP交给Servlet处理后,转到重定向的页面混乱的原因是重定向后页面的css无法加在导致,建议使用绝对路径加载css样式。
解决办法:
重定向不用变,转发的时候按照servlet的路径进行修改相对路径就可以了
sendRedirect等同于此方式
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Location",newLocn);
(Meta Refresh)方法200
这种方法是由HTML提供的,Meta本身就是HTML标签。使用方法是:<meta http-equiv="refresh" content="5;
url=http://www.dreamdu.com/" />
相应的java代码
String content=stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
解决办法:
重定向不用变,转发的时候按照servlet的路径进行修改相对路径就可以了
sendRedirect等同于此方式
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Location",newLocn);
(Meta Refresh)方法200
这种方法是由HTML提供的,Meta本身就是HTML标签。使用方法是:<meta http-equiv="refresh" content="5;
url=http://www.dreamdu.com/" />
相应的java代码
String content=stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是你的css连接错了啊 肯定是没有处理好css文件和当前url之间相对路径的关系…… 页面乱是因为他找不到那些控制的样试文件,如果页面目录较
追问
怎么处理CSS文件和当前URL之间的相对路径的关系?
目录结构:bookshop(工程名)
-servlet/UserLogin.java
-WebRoot/source/bookshop.css
/adminLogin.jsp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询