Servlet 的访问路径问题
假如一个 Servlet 在 web.xml 配置文件中有如下描述:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.iridium.servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello/helloworld</url-pattern>
</servlet-mapping>
那么在某个 JSP 页面中的 form 则应该用类似下面的代码:
<form action="<%=request.getContextPath()%>/hello/helloworld">
<input type="submit" value="submit">
</form>
下面的写法来源于从前的 MyEclipse
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
其他:
- 注意<base>标签表示给页面类每一个链接自动加上 basePath. 这个 base 标签可能只在 MyEclipse 的环境中有效,在普通的 Java EE Eclipse 开发的应用中,没有效果。
- 用绝对路径,而不是相对路径。这里所谓的绝对路径,是指/{context path}/... 这种路径,不是指 /home/iridium/... 这种硬盘目录的绝对路径。