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>
这里我建议用第二种方法,因为这种方法无论你使用转发还是重定向不会出现找不到路径的问题。
至此大功告成,希望能够对看过的朋友有所帮助。
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>
这里我建议用第二种方法,因为这种方法无论你使用转发还是重定向不会出现找不到路径的问题。
至此大功告成,希望能够对看过的朋友有所帮助。
相关文章推荐
- 获取JAVA[WEB]项目相关路径的几种方法(转载)
- web项目报404一直找不到图片(路径绝对正确)
- 转:获取JAVA[WEB]项目相关路径的几种方法
- MyEclipse中tomcat部署时,找不到web项目的解决方案
- SpringMVC WEB项目 jsp引入的js,css文件找不到路径问题
- SpringMVC WEB项目 jsp引入的js,css,gif等类型文件找不到路径问题
- 从web项目中解析xml文件出现(\src\bean.xml (系统找不到指定的路径。))
- 获取JAVA[WEB]项目相关路径的几种方法
- SpringMVC WEB项目 jsp引入的js,css文件找不到路径问题()
- Maven项目pom.xml文件报:xxx\target\m2e-wtp\web-resources\META-INF\MANIFEST.MF (系统找不到指定的路径。) 问题
- 获取JAVA[WEB]项目相关路径的几种方法
- [转]获取JAVA[WEB]项目相关路径的几种方法
- 无法启动,报错:找不到指定路径,无法装载项目解决方案
- VS打开.net工程提示"无法读取项目文件"web.csproj",系统找不到指定路径"
- Eclipse 项目发布到Tomcat报系统找不到路径的问题解决方案!
- 获取JAVA[WEB]项目相关路径的几种方法
- eclipse部署web项目至本地的tomcat但在webapps中找不到的解决方案
- 获取JAVA[WEB]项目相关路径的几种方法
- 将Myeclipse里面的web项目导入到eclipse时css文件路径找不到错误
- Java web项目路径终极解决方案