以下是重要代码
\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
红色为路径 我就奇怪了 为什么路径会是这个?
\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
红色为路径 我就奇怪了 为什么路径会是这个?
不知道这个有什么好奇怪的
如果你的文件放到了WEB-INF文件夹下面
当然需要这样配置
<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>
<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>
如果是的话 这样配置就是对的
而根据这个servlet的名字: img 在前面<servlet></servlet>中的定义来寻找实际的Class
这个定义不是说要去访问到那个jsp文件 ,而是说 客户端访问的url是这个时, 自动触发servlet 不知道这样你是否理解
嗯 先谢谢~你说不是访问那个JSP文件 那么请问这个URL是根据什么定义的呢? authImg authImg.JPG authImg.java不行?
你说的这些都可以, 只要不和其他的url-pattern冲突就好,忘记了冲突是否允许,至少冲突了你自己也不好控制
非常谢谢你~
按照我对先前一些回复的理解 你那个东西是生产类似验证码这种东西 ,那么肯定是在某个jsp里面用<img tag来访问了这个url你要改成其他东西的时候 对应的地方也要改掉当然你可以先直接在浏览器里面输入地址来测试改了以后是否生效
比如你改成authImg
那么浏览器输入 http://host:port/WEB-INF/jsp/authImg 总之这个pattern 是你在web.xml里面做定义 别的地方 去使用而已
\login.jsp
验证码: <img name="d" src="authImg"> 输入地址是authImg
但是配置的web.xml是authImg.jsp呵呵~ 这个是什么情况呢?
第二,只要你写了,如果你要访问这个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全部都可以。你可以自己测试一下。
首先谢谢你回答我问题 非常的感谢“从你的代码中可以看出,你有一个叫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全部都可以”测试过了 不行哟 所以才说奇怪~ 不过这是我前几天测试的 现在本坏了 明天拿去修 莫非我上次测试有问题? 应该不会啊 我才测试过很多次了~
<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> 匹配就可以了吧
<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
<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 配置
当然是img了
应该不是不小心删除 删除了还能运行? 我现在还能运行哟
<url-pattern>/WEB-INF/jsp/authImg.jsp</url-pattern>
是映射路径
可以随意写
但
<servlet>
中的<servlet-name>/WEB-INF/jsp/authImg.jsp</servlet-name>
必须要这么写才能找到相对应的servlet
(如有错误 ,请指正,谢谢)
同意 。
url-partten只是逻辑上的一个映射,根据它来找到真正的servlet!并且那样放的目的:/web-inf/ ,这样通过浏览器是不能直接访问的,但是容器内的其它的资源是可以照常访问的。
只要有意义就好了.
这个不代表你有authImg.jsp这个文件,这个只是个映射,你可以随便写
关键是<servlet-name>img </servlet-name>这个,这个跟你的servlet是关联的,
也就是说重客户端传来的/WEB-INF/jsp/authImg.jsp 的请求都是由servlet-name为img的servlet类做处理的
这个是你的servlet的路径名,格式:/xxxx,不要加.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>
今天学习,突然想到:
/WEB-INF 路径不能被外部访问,但是可以被内部文件访问,把验证码放到这里,只能该网站里的页面能调用,仅此而已至于你的img 路径,应该是这个servlet的路径吧,或者说有另一个servlet在为它服务,你看看那个servlet的<url-pattern>是authImg的,应该会有一个的至于/WEB-INF/jsp/authImg.jsp 这个名字,是你随便起的,你可以起任何存在或不存在的路径,它只是一个映射,和你的物理路径没关系,实际执行的类是对应servlet-name的servlet-class所指向的类我也在学习中,共同探讨
<!-- 为图形验证码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 这样一个图片,所以在这里会是这样写。
我是一名学这个技术的小员工
如果不懂就加我为好友问