以下是重要代码
\WebRoot\WEB-INF\jsp
\login.jsp    
验证码:<img name="d" src="authImg">web.xml<!-- 为图形验证码Servlet配置URL -->
<servlet-mapping>
<servlet-name>img</servlet-name>
<url-pattern>/WEB-INF/jsp/authImg.jsp</url-pattern>
</servlet-mapping>servlet路径
E:\myeclipse\HRSystem\src\org\qjkt\hrsystem\web\AuthImg.java
红色为路径  我就奇怪了   为什么路径会是这个?

解决方案 »

  1.   

    再补充一句,如果E:\myeclipse\HRSystem\src\org\qjkt\hrsystem\web\AuthImg.java这个是系统生成的,那就对了,SERVLET本身就是个JAVA类,应该在web.xml中的<servlet><url-patten></url-patten></servlet>配置的Servlet的路径
      

  2.   

    o(∩_∩)o...哈哈!
    不知道这个有什么好奇怪的
    如果你的文件放到了WEB-INF文件夹下面
    当然需要这样配置
      

  3.   

    E:\myeclipse\HRSystem\src\org\qjkt\hrsystem\web\AuthImg.java 你这个是<servlet-class>中的路径。。<url-pattern>是URL的映射地址。Servlet的实际地址和映射地址你要分清哦。。他们通过<servlet-name>来匹配,下面是个简单例子。  <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>com.xxx.Test</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Sel_Test</servlet-name>
        <url-pattern>/system/Test</url-pattern>
      </servlet-mapping>
      

  4.   

    不好意思,XML文件写错了,mapping中的<servlet-name>应该是Test才对。
      <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>com.xxx.Test</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/system/Test</url-pattern>
      </servlet-mapping>
      

  5.   

    你是不是 把JSP 文件 放到了 WEB-INF\jsp  文件夹下了啊??
    如果是的话 这样配置就是对的
      

  6.   

    我想说的是   压根项目里就没有authImg.jsp这个文件  jsp那个文件夹里也没有
      

  7.   

    红色的pattern 是指 当客户端访问到匹配这个pattern的url时触发到你的web.xml里面定义为img 的那个servlet
    而根据这个servlet的名字: img  在前面<servlet></servlet>中的定义来寻找实际的Class
      

  8.   


    这个定义不是说要去访问到那个jsp文件 ,而是说 客户端访问的url是这个时, 自动触发servlet 不知道这样你是否理解
      

  9.   

    关键是这个URL好象不存在呀?
      

  10.   


    嗯  先谢谢~你说不是访问那个JSP文件  那么请问这个URL是根据什么定义的呢? authImg authImg.JPG  authImg.java不行?
      

  11.   


    你说的这些都可以, 只要不和其他的url-pattern冲突就好,忘记了冲突是否允许,至少冲突了你自己也不好控制
      

  12.   

    不行哟~  authImg.java没试过  但是authImg authImg.JPG都试了  都不行~  那个URL是根据什么定义的呢?
    非常谢谢你~
      

  13.   

    你改成其他的 ,那么使用它的地方也要改掉
    按照我对先前一些回复的理解 你那个东西是生产类似验证码这种东西 ,那么肯定是在某个jsp里面用<img tag来访问了这个url你要改成其他东西的时候 对应的地方也要改掉当然你可以先直接在浏览器里面输入地址来测试改了以后是否生效
    比如你改成authImg
    那么浏览器输入 http://host:port/WEB-INF/jsp/authImg   总之这个pattern 是你在web.xml里面做定义 别的地方 去使用而已
      

  14.   

    我发帖的时候写了WebRoot\WEB-INF\jsp 
    \login.jsp    
    验证码: <img name="d" src="authImg"> 输入地址是authImg
    但是配置的web.xml是authImg.jsp呵呵~  这个是什么情况呢?  
      

  15.   

    首先,告诉你一个小秘密:<url-partten>是可以随便乱写的,你爱怎么写就怎么写。它存在不存在是无所谓的,只要你写了,浏览器和服务器都会认为它是实际存在的。
    第二,只要你写了,如果你要访问这个Servlet,那你就只能按照<url-partten>所写的去访问这个Servlet。
    这就是所谓Servlet魔法,爽吧?OK,你知道了这两个秘密,我们再来看你的问题。\WebRoot\WEB-INF\jsp 
    \login.jsp    
    验证码: <img name="d" src="authImg"> web.xml <!-- 为图形验证码Servlet配置URL --> 
    <servlet-mapping> 
    <servlet-name>img </servlet-name> 
    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 
    </servlet-mapping>从你的代码中可以看出,你有一个叫login.jsp的文件,它放在WEB-INF\jsp下面?里面有一句代码,它要显示一个叫authImg的图片?这里要指出你的一个错误,我认为你把img的src写错了,应该是<img name="d" src="authImg.jsp"> 
    其实这张图片是动态生成的,由一个叫authImg的Servlet来动态生成。这个应该就是你的代码做的事情。那么,我们来想想,为啥<url-pattern>要写成/WEB-INF/jsp/authImg.jsp呢?答案是,为了配合login.jsp的所在位置(WEB-INF/jsp),以便于在img标签中直接使用authImg.jsp这个名字来引用它。那么,又来一个问题了:为什么要把这个Servlet的<url-pattern>写成/WEB-INF/jsp/authImg.jsp呢?答案是:为了让别人无法直接访问这个Servlet(WEB-INF文件夹下面的文件是无法使用浏览器直接访问的)。接着的问题就是:你写一个/WEB-INF/jsp,Servlet就在/WEB-INF/jsp下面了?答案是:请参看前面我所说的第一个小秘密!最后的问题是:那么请问这个URL是根据什么定义的呢? authImg authImg.JPG  authImg.java行不?
    答案是:这个URL是拍脑袋想出来的,爱怎么定义都行,authImg authImg.JPG  authImg.java全部都可以。你可以自己测试一下。
      

  16.   


    首先谢谢你回答我问题  非常的感谢“从你的代码中可以看出,你有一个叫login.jsp的文件,它放在WEB-INF\jsp下面?里面有一句代码,它要显示一个叫authImg的图片?这里要指出你的一个错误,我认为你把img的src写错了,应该是 <img name="d" src="authImg.jsp"> 
    其实这张图片是动态生成的,由一个叫authImg的Servlet来动态生成。”            <img name="d" src="authImg">  应该没错    <img name="d" src="authImg.jsp"> 我测试过了  不行  servlet的那个authImg.JAVA那别的文件夹下的:\myeclipse\HRSystem\src\org\qjkt\hrsystem\web\AuthImg.java 
    -------------------------------------------------------------------------------------------------------“最后的问题是:那么请问这个URL是根据什么定义的呢? authImg authImg.JPG  authImg.java行不? 
    答案是:这个URL是拍脑袋想出来的,爱怎么定义都行,authImg authImg.JPG  authImg.java全部都可以”测试过了  不行哟  所以才说奇怪~    不过这是我前几天测试的  现在本坏了  明天拿去修  莫非我上次测试有问题?  应该不会啊  我才测试过很多次了~
      

  17.   

    <url-pattern> </url-pattern> 中配置的就是你的servlet的虚拟访问路径,也就是说,你访问http://IP:断口/虚拟路径,就可以访问你的servlet了。你红色里面弄个jsp文件干什么呢?你想干什么?可能LZ真的有点迷糊.哈哈
      

  18.   

    http://localhost:8080/contextpath/WEB-INF/jsp/authImg.jsp 
      

  19.   

    <servlet-mapping>
    <servlet-name>img </servlet-name>
    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 如果 <servlet>
        <servlet-name>/WEB-INF/jsp/authImg.jsp</servlet-name>
        <servlet-class>com.servlet.AaddmoneyServlet</servlet-class>
      </servlet> <url-pattern> 的名字应该是随意的 是要和<servlet> 中的<servlet-name> 匹配就可以了吧
      

  20.   

    配置应该是
      <servlet>
        <servlet-name>img</servlet-name>
        <servlet-class>org.qjkt.hrsystem.web.AuthImg</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>img</servlet-name>
        <url-pattern>/WEB-INF/jsp/authImg.jsp</url-pattern>
      </servlet-mapping>执行时, <img name="d" src="WEB-INF/jsp/authImg.jsp"> 
    这时,就是调用的org.qjkt.hrsystem.web.AuthImg.class
      

  21.   

    关键是红色部分的authImg.jsp这个文件不存在呀
      

  22.   

    代码片段不全<servlet-mapping> 
    <servlet-name>img </servlet-name> 
    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 
    </servlet-mapping>对应的<servlet-name>是什么?可能这是段被废弃的servlet配置代码,这段代码的功能被
    <img name="d" src="authImg"> Servlet:authImg代替了.但是从新编写验证码功能类的人把authImg.jsp文件删除后,却忘记清理web.xml文件的配置,在找找有没有其他相关的 Servlet 配置
      

  23.   

    对应的 <servlet-name>是什么? 
    当然是img了
    应该不是不小心删除  删除了还能运行?  我现在还能运行哟
      

  24.   

    <servlet-mapping>
    <url-pattern>/WEB-INF/jsp/authImg.jsp</url-pattern>
    是映射路径
    可以随意写 

    <servlet> 
    中的<servlet-name>/WEB-INF/jsp/authImg.jsp</servlet-name> 
    必须要这么写才能找到相对应的servlet
      (如有错误 ,请指正,谢谢)
      

  25.   

    呃~  我也是这么想的  但是关键是authImg.jsp这个文件不存在呀
      

  26.   

    <url-pattern></url-pattern>是映射路径,不是真实路径
      

  27.   

     压根项目里就没有authImg.jsp这个文件  jsp那个文件夹里也没有
      

  28.   

    <url-pattern></url-pattern>中是虚拟路径,你不但可以写成/WEB-INF/jsp/authImg.jsp  还可以写成:“/tiancai.exe”  或者"hah.html" 或者“ssss” 或者“mmmmm.txt”   只要你在浏览器中分别是servlet路径+"/tiancai.exe" ......等等就行。
      

  29.   


    同意 。
    url-partten只是逻辑上的一个映射,根据它来找到真正的servlet!并且那样放的目的:/web-inf/ ,这样通过浏览器是不能直接访问的,但是容器内的其它的资源是可以照常访问的。
      

  30.   

    <url-pattern></url-pattern>在这个标签配置的是用户访问的路径,不需要是真实存在的。
    只要有意义就好了.
      

  31.   

    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 
    这个不代表你有authImg.jsp这个文件,这个只是个映射,你可以随便写
    关键是<servlet-name>img </servlet-name>这个,这个跟你的servlet是关联的,
    也就是说重客户端传来的/WEB-INF/jsp/authImg.jsp  的请求都是由servlet-name为img的servlet类做处理的
      

  32.   

    那个文件应该是验证图片的jsp文件吧,jsp在生成以后就放在那个文件夹下面。
      

  33.   

    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 
    这个是你的servlet的路径名,格式:/xxxx,不要加.jsp
      

  34.   

    楼主没什么奇怪的,如果你看过jivesoftware公司的东西 就会清楚了,他们总是把jsp编译后打包,作为servet发布,url mapping时候 用原来的jsp名字作为映射地址目标。
    例如:
       <servlet>
            <servlet-name>org.jivesoftware.openfire.admin.audit_002dpolicy_jsp</servlet-name>
            <servlet-class>org.jivesoftware.openfire.admin.audit_002dpolicy_jsp</servlet-class>
        </servlet>
       <servlet-mapping>
            <servlet-name>org.jivesoftware.openfire.admin.audit_002dpolicy_jsp</servlet-name>
            <url-pattern>/audit-policy.jsp</url-pattern>
        </servlet-mapping>
      

  35.   

    除了/WEB-INF/jsp/authImg.jsp    其他都不正常
      

  36.   

    我电脑坏了  东西在电脑里  过几天电脑好  我发源码在看看吧  可能是哪我搞错了 谢谢大家了 顺便B4下傻逼TCL电脑
      

  37.   

    在\tomcat\work这个目录下找找authImg_jsp.class
      

  38.   


    今天学习,突然想到:
    /WEB-INF 路径不能被外部访问,但是可以被内部文件访问,把验证码放到这里,只能该网站里的页面能调用,仅此而已至于你的img 路径,应该是这个servlet的路径吧,或者说有另一个servlet在为它服务,你看看那个servlet的<url-pattern>是authImg的,应该会有一个的至于/WEB-INF/jsp/authImg.jsp 这个名字,是你随便起的,你可以起任何存在或不存在的路径,它只是一个映射,和你的物理路径没关系,实际执行的类是对应servlet-name的servlet-class所指向的类我也在学习中,共同探讨
      

  39.   

    对于你的这个问题:    我告诉你应该是你的web-INF里面有你的图片文件包,而你的
    <!-- 为图形验证码Servlet配置URL --> 
    <servlet-mapping> 
    <servlet-name>img </servlet-name> 
    <url-pattern>/WEB-INF/jsp/authImg.jsp </url-pattern> 
    </servlet-mapping> 
      这个实在WEB-INF/img/中有于此相关的名字
       在还有就是你的验证码要包含authImg.jsp 这样一个图片,所以在这里会是这样写。
        我是一名学这个技术的小员工
                                                                                                         如果不懂就加我为好友问
      

  40.   

    谢谢大家了  关键是现在我测试不了  TCL那破本修了两星期还没修好  这是第2次修了  第一次修好到第二次坏才隔了一个月左右  哎~
      

  41.   

    我也没见过用图片这种情况的,我一直都是用请求路径到java类里。没见过,学习中……,希望能出一个最好的答案