前提:项目名称或者Web App的名称是myFirstWebProject
1、先假设在index.jsp中,有一个form如下:
<!-- <form action="/myFirstWebProject/myfirstservletname" method=get> --> <form action=<%=request.getContextPath() %>/myfirstservletname method=post> <!-- <form action=myfirstservletname method=post> --> <!-- <form action=myFirstWebProject/myfirstservletname method=post> --> <input type=text name=test /> <input type=submit name='upload'> </form>?
共4种情况,分别讲述如下:
a)/myFirstWebProject/myfirstservletname,最前面的那个斜杠在JSP中表示的意思是代表域名的意思,换句话说,我本南的域名就是http://localhost:8081/,拼接起来就是http://localhost:8081/myFirstWebProject/myfirstservletname
?
b)<%=request.getContextPath() %>翻译过来就是/myFirstWebProject,剩下的同上。
?
c)相对路径:前面什么都不写等于INDEX.JSP所在的目录,即http://localhost:8081/myFirstWebProject.
?
d)相对路径:利用c的知识,这里完整的路径应该是:http://localhost:8081/myFirstWebProject/myFirstWebProject/myfirstservletname,此时必须在web.xml再配置一个servlet mapping才可以。
?
以下是web.xml中的内容:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>myfirstservletname</servlet-name> <servlet-class>servletPackage.bs.MyFirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myfirstservletname</servlet-name> <url-pattern>/myfirstservletname</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myfirstservletname</servlet-name> <url-pattern>/gg/hh/gg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myfirstservletname</servlet-name> <url-pattern>/gg/hh/gg1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myfirstservletname</servlet-name> <url-pattern>/myFirstWebProject/myfirstservletname</url-pattern> </servlet-mapping> </web-app>?
?
?
2、关于web.xml中的路径
?
web.xml中的斜杠表示的和JSP中的不一样,它表示的是web App的名称,即http://localhost:8081/myFirstWebProject。
?
?
ref:浪曦尚学堂Servlet_Jsp视频。
?
?