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+"/";
%>

其他:

  1. 注意<base>标签表示给页面类每一个链接自动加上 basePath. 这个 base 标签可能只在 MyEclipse 的环境中有效,在普通的 Java EE Eclipse 开发的应用中,没有效果。
  2. 用绝对路径,而不是相对路径。这里所谓的绝对路径,是指/{context path}/... 这种路径,不是指 /home/iridium/... 这种硬盘目录的绝对路径。