在初学servlet的时候路径的确是个问题,如果不好好的搞懂,在实际应用中真的会犯糊涂。
下面通过几个例子分析和看下到底是个什么状况。
有如下一个表单:test.jsp(
此文件在
WebRoot
的
根目录
下)
<form action="SecondServlet">
UserName:<input type="text" name="username" size="20"/>
Password:<input type="password" name="password" size="20"/>
<input type="submit" value="OK"/>
</form>
另一种action
的配置方式:
<form action="/JSP/SecondServlet">
web.xml配置如下:
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>com.test.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/SecondServlet</url-pattern>
</servlet-mapping>
SecondServlet.java:
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.process(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<h1>"+username+"<br>"+password+"</h1>");
}
疑问?
刚刚在配置文件中<servlet-name>和<url-pattern>写的都一样,那么 jsp页面中的表单form的action是根据什么来找到对应的servlet的呢?
是根据<servlet-name>
还是根据<url-pattern>
下面通过修改web.xml
和test.jsp
表单中的action
来观察。
<form action="MyServlet">(写的是url-pattern的名字)
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.test.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
此时输入localhost/JSP/test.jsp
,提交发现页面的跳转:
http://localhost/JSP/MyServlet?username=admin&password=admin
在此就证明了jsp
页面和
servlet
相关联是通过
<url-pattern>
联系起来的!
要是不放心,可以再次修改:
<form action="Firstervlet">(写的是servlet-name的名字)
此时在运行,发现程序会报404
错误
.
下面又有问题了:
此时如果test.jsp
在
jsp
文件下,即
(WebRoot-->jsp-->test.jsp
)
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>com.test.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/SecondServlet</url-pattern>
</servlet-mapping>
根据上面的配置可以很容易的想到:
<form action="/JSP
/SecondServlet">
或者
<form action="SecondServlet">
再改进:
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>com.test.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/second/SecondServlet
</url-pattern>
</servlet-mapping>
那么
<form action="second/SecondServlet">
还有一种配置方法:
如:demo.html
在
JSP-->WebRoot-->serdemo
下
修改web.xml
<servlet-mapping>
<servlet-name>input</servlet-name>
<url-pattern>/serdemo/input
</url-pattern>(相应的文件夹)
</servlet-mapping>
此时的配置方式是直接写出了文件夹的名称。
那么demo.html
中怎么写呢?
<form action="input
" method="post">
总结:
在jsp
页面中配置
servlet
路径的时候根据
url-pattern
配置
有两种形式:
通用
(在根目录下或者在某个文件下
)
<url-pattern>/x/y</url-pattern>
那么jsp/html
中就这样
(
以表单为例
)
:
action="x/y"
或者
action="/项目名称/x/y" (注意项目名称前面要加/
)
在文件下:
<url-pattern>/文件夹名称
/y</url-pattern>
那么jsp/html
中就这样:
action="y"
分享到:
相关推荐
Servlet路径问题在Web开发中是常见的,特别是在使用Java Servlet技术时。Servlet路径涉及到表单提交、请求转发、URL映射以及资源访问等多个方面。以下是对这些知识点的详细解释: 1. **表单提交路径**: - 在HTML...
### JSP/Servlet中的路径问题详解 #### 一、路径的基本概念 在JSP和Servlet技术中,理解和处理路径是非常重要的。路径可以分为绝对路径和相对路径两种。 **1. 绝对路径** - **定义**:绝对路径是指文件或目录在...
Servlet 中的相对路径和绝对路径归纳 在 Servlet 编程中,路径是非常重要的一个概念。路径可以分为相对路径和绝对路径两种,在不同的场景下,选择合适的路径类型非常重要。本文将对 Servlet 中的相对路径和绝对路径...
JSP、Servlet中的相对路径和绝对路径(包括路径问题),解决繁琐的路径问题。
Servlet路径在Web开发中扮演着至关重要的角色,它是连接前端表单和后端处理逻辑的桥梁。在描述中提到,表单是用户交互和数据传输的主要手段,而Servlet则是处理这些数据并生成动态网页的核心。本文将详细探讨Servlet...
在探讨“jsp+servlet路径状态的测试”这一主题时,我们深入分析了在JSP与Servlet环境下,不同路径(绝对路径与相对路径)在页面跳转过程中的表现及其对资源定位的影响。本测试旨在理解并优化JSP页面之间的跳转机制,...
JavaWeb开发技术-实现Servlet虚拟路径的映射 在JavaWeb开发技术中,实现Servlet虚拟路径的映射是非常重要的一步。Servlet是一个小型的Java程序,它可以运行在服务器端,处理客户端的请求,并将结果返回给客户端。...
在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于...
首先,你需要在项目的类路径下放置一个文件,然后在Servlet的`doGet()`或`doPost()`方法中调用`getRealPath()`或`getResource()`。这将帮助你理解如何在实际的JavaWeb应用中使用ServletContext来访问类路径下的文件...
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
在这里,路径可以以"/"开头(相对当前项目路径)或者不以"/"开头(相对当前Servlet路径)。使用"/"开头的路径代表绝对路径,不带"/"则为相对路径。为了避免路径混乱,建议始终使用以"/"开头的绝对路径。 重定向路径...
### J2EE中的路径问题详解 #### 一、引言 在Java Web开发中,路径的概念至关重要,尤其是在处理JSP和Servlet之间的跳转时。本文将深入探讨J2EE环境中路径的基本概念及其应用方法,包括相对路径和绝对路径的定义、...
Servlet 虚拟路径映射配置详解 Servlet 虚拟路径映射配置详解是指在 Servlet 中配置虚拟路径映射,以便客户端可以访问 Servlet。本文将详细介绍 Servlet 虚拟路径映射配置的详细信息。 1. 配置虚拟路径映射 在 ...
以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与标准 #### 1. URL与URI URL(Uniform Resource Locator)统一资源定位符,是一种用于标识网络上资源位置的标准格式,如`...
在 JSP/Servlet 中,路径问题非常重要,正确的理解和使用路径可以避免许多问题。 2.1 服务器端的地址 在 JSP/Servlet 中,服务器端的相对地址指的是相对于当前 Web 应用的地址,这个地址是在服务器端解析的。例如...
开发者在构建web应用时,通常会将此jar包添加到项目的类路径中,以便能够利用Servlet API进行编程。 Servlet API主要包括以下几个关键概念和类: 1. **Servlet**:这是所有服务器端Java小程序的基类,实现了...
2. **遇到的问题及解决**:实验初期可能遇到未编译JAVA文件就打包的问题,解决方法是在打包前先确保所有源代码都已正确编译。 3. **后续扩展**:可以尝试部署更复杂的Servlet与Jsp应用,探索更多高级功能,如会话...
在Java Web开发中,路径问题是一个常见的挑战,尤其是在处理JSP页面、Servlet以及web.xml配置文件时。理解和正确使用路径对于构建稳定、高效的应用程序至关重要。以下是对标题和描述中提及的知识点的深入探讨。 ###...
HttpServletRequest包含了请求的所有信息,如请求参数、头信息、请求路径等;HttpServletResponse则用于构造和发送HTTP响应。 8. **过滤器Filter**:Servlet API还提供了Filter机制,允许在请求到达Servlet之前或...