jsp表单无法访问Servlet;路径问题
在使用servlet处理jsp时发现很多提交表单时发生的错误都是因为提交路径出错造成的。
就是一直报404,的问题。
web.xml配置如下:
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>Com.Ren.Servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/Servlet/LoginServlet</url-pattern>
</servlet-mapping>
(1)当login.jsp和login.html中form表单配置如下
<form action="Servlet/LoginServlet" method="get">
用户名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
是可以正常访问
(2)当login.jsp和login.html中form表单配置如下时(多加了一个/):
<form action="/Servlet/LoginServlet" method="get">
用户名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
就无法访问,报404
(3)当login.jsp中form表单配置如下时:
<form action="${pageContext.request.contextPath}/Servlet/LoginServlet" method="get">
用户名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
或者 login.html中表单为:
<form action="/虚拟目录/Servlet/LoginServlet" method="get">
用户名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
或者(前面加一个.)
<form action="./Servlet/LoginServlet" method="get">
用户名:<input type="text" name="userName" checked>
<input type="submit" value="提交">
</form>
都是可以正常访问的
总结:
(1) / 代表根目录(就是tomcat软件中webapps目录)
(2) . 代表当前目录(个人设置的虚拟目录其实就等于idea中webapp目录)
补充:
关于重定向和转发遇到的路径问题
有一个很好地观点:https://blog.csdn.net/qq_42744046/article/details/105110803
是说:在用地址的时候,需要判断是给浏览器用还是给服务器用。如果是给浏览器用需要加上虚拟地址;如果是给服务器用就不需要加上虚拟地址;
这也很好理解:浏览器是访问别人的资源,地址当然要详细,“/” 所代表的根目录是tomcat服务器下的webApps目录。
而服务器的转发只是转发自己内部的资源,所以它的"/"根目录就是代表虚拟目录;
简而言之:就是服务器项目中使用的根目录“/”就是虚拟目录;浏览器使用的根目录“/”是tomcat下webapps目录;
今天练习文件上传,关于Io流中“/”路径问题,因为我做的事WEB项目,所以该处的“/”根路径表示tomcat所安装目录的根路径,此处是D盘;
还是,看路径的时候,需要想到是谁在用,就能想明白根路径在哪了;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性