关于JavaServlet的 The requested resource (****) is not avail

今天被这个问题困了一天...终于解决了...

非常感谢对面宿舍的七公子和回归...O(∩_∩)O~


位于项目test1中的WebRoot下WEB-INF中的web.xml 里的内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

  <servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
  </servlet-mapping>
 
</web-app>


正确的访问url: http://localhost:8080/test1/servlet

反问出错的url: http://localhost:8080/test1/servlet/HelloServlet

 

 

解释如下:

 

< servlet > 元素

 

< servlet

  <!-- Servlet -->  

   < servlet -name>Servlet</ servlet -name>  

  <!-- Servlet 的实现类 -->  

  < servlet -class> HelloServlet </ servlet -class>  

</ servlet >

< servlet -mapping> 元素

< servlet -mapping>

<!-- Servlet -->  

< servlet -name>Servlet</ servlet -name> 

<!– 访问 Servlet 的相对路径 -->   

< url -pattern>/ servlet </ url -pattern>

</ servlet -mapping>

 

在访问时,url地址是: http://localhost:port/项目名称/web.xml中配置的<url-pattern></url-pattern>里的内容

后面不用再加servlet的名字了因为url-pattern里的就是访问servlet的相对路径,只要访问url中的和 配置文件中的 保持一致就行了...

另外,<servlet-class>中的类名,如果该类是在一个包里的话,则应为:包名.类名。


今天上网查的时候大家都说要保持路径一致,当时不明白,什么叫保持路径一致呢...现在总算是有些了解了...

 

加油↖(^ω^)↗

你可能感兴趣的:(xml,Web,servlet,sun)