关于使用servlet后的404问题

 很多初学者在初次接触MVC,这里指由servlet充当控制器时的情况,因为struts框架中都进行了处理,所以一般不会出现404,下面就经常出现的问题做一下总结:

首先说一下在servlet中页面跳转时的路径问题,页面跳转一般分为转发和重点向,这时候的地址推荐写成相对于整个web根目录的地址:

1.转发:request.getRequestDispatch(url).forward(request,response);

     这里的url,写地址时要写成"/bookDetail.jsp",在这个位置的/代表的工程根目录

2.重定向:response.sendRedirect(url);

   这里的url,写地址时要写成"/工程部署名称/bookDetail.jsp",在这个位置的/代表的是Tomcat根目录,所以后面还需要添加一个工程名称,但是因为在部署web项目时工程名称可能会改动,所以在项目开发时对于重定向的代码,一般写成:

//获取工程上下文路径(工程名字)
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/index.jsp");

下面再来说说页面中出现的类404现象,不如图片路径找不到,或者说表单点击条件出现404等,出现这种现象的原因主要是因为,咱们设计页面时可能用的是dreamweaver,页面中所有的资源都是相对于当前文件去找的,但是在实际开发中有可能是转发到这个页面的,这时地址栏的地址可能和当前页面本身所在的目录不一致,这时候就会出现图片或者样式表找不到的情况,如何解决这种情况呢,答案还是上面的,让所有的资源相当于根目录去定位,在页面实现这个其实很简单,只需要设置一个base标签就可以了,jsp页面一般会自动计算出一个,代码如下

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

%>

举个简单的例子来说明一下base的作用,如果我把页面中我的base中的href属性设置为http://www.baidu.com,在我的页面中有个,<img src="images/xxx.jpg"/>,这个图片会显示http://www.baidu.com/images/xxx.jpg对应的图片。

关于404的问题就介绍到这了,如果还有不明白的,请留言,我会及时回复。
 


 

发布了28 篇原创文章 · 获赞 48 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章