您的位置:首页 > 其它

web项目找不到路径的几种解决方案

2010-11-21 10:18 246 查看
在开发项目的时候,经常会出找不到路径的问题,今天偶吧我的一些心得分享给大家,希望对遇到类似错误的能够有所帮助,如果我说的有错,请给予指导。

1、在解决这个问题前,我们需要先理解一下jsp的跟路径和servlet的跟路径。

jsp的跟路径是http://localhost:8080/

servlet的跟路径是http://localhost:8080/项目名/

注解:这里的localhost是你所项目所发布机器的ip地址,8080是你项目所部署服务的端口号。

2、转发和重定向的区别。

这里我只简单的说明一下,转发的地址栏地址不会指向真正的地址,而重定向正好相反。

3、下面让我们以一个项目为例子。





但我用index.jsp去登陆的时候,如果成功则返回success.jsp页面,如果失败,则返回error.jsp页面,这里我用的是struts2测试的,返回的两个页面我分别用了两种方式,转发后重定向。

以下是我struts.xml内容

<struts>

<package name="login" extends="struts-default">

<action name="login" class="com.mingri.it.loginAction">

<result name="success">/page/success.jsp</result>

<result name="error" type="redirect">/page/error.jsp</result>

</action>

</package>

</struts>

当我输入正确的用户名和密码的时候我可以转发到success页面。


当我输入错误的用户名或密码是可以重定向到error。jsp页面。

注意:这里我们只关心的是他们的地址栏中的路径。

以下是他们的路径:

http://localhost:8080/mingri/login.action

http://localhost:8080/mingri/page/error.jsp

我们会发现,登陆错误的时候,它地址栏显示的是error。jsp页面的真实路径。

这时候如果我们想要在error。jsp加一个链接返回到登陆页面,就有可能会报找不到路径的问题。

以下是error。jsp源码。

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">

<%

String url=request.getContextPath();

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

登陆失败,<hr>

<a href="index.jsp" >重新登陆</a>

</body>

</html>


用这种方式会出现找不到路径的问题,此时也许有人会这么写,

<a href="/index.jsp" >重新登陆</a>

这种方式也是找不到的,为什么会这样那,原因是,jsp的根路径是http://localhost:8080/而不是
http://localhost:8080/mingri/

解决方案:

1、把重定向改为转发,也就是如下语句

<result name="error">/page/error.jsp</result>



2、应用绝对路径,String url=request.getContextPath();

源文件如下:


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">

<%

String url=request.getContextPath();

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

登陆失败,<hr>

<a href="<%=url%>/index.jsp" >重新登陆</a>

</body>

</html>


这里我建议用第二种方法,因为这种方法无论你使用转发还是重定向不会出现找不到路径的问题。

至此大功告成,希望能够对看过的朋友有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: