首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

小弟我弄了三个小时未解决,望高手帮小弟我下

2011-12-26 
我弄了三个小时未解决,望高手帮我下前提:我机子里同时装了TOMCAT,和RESIN,设置TOMCAT的端口为8081,RESIN的

我弄了三个小时未解决,望高手帮我下
前提:我机子里同时装了TOMCAT,和RESIN   ,设置TOMCAT的端口为8081,RESIN的端口为8080,可以正常使用TOMCAT和RESIN中正常的做JSP和JAVABEAN的访问。

现在写的是servlet,   其中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> Test </servlet-name>
<servlet-class> moreservlets.TestServlet </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> Test </servlet-name>
<url-pattern> /UrlTest </url-pattern>
</servlet-mapping>
<!--   …   -->
</web-app>

各个文件的位置如下:TestServlet.class位于/deployDemo/WEB-INF/classes/moreservlets文件夹下,web.xml位于deployDemo/WEB-INF文件夹下,

TestServlet.java的代码如下:
package   moreservlets;

import   java.io.*;
import   javax.servlet.*;
import   javax.servlet.http.*;

/**   Simple   servlet   used   to   illustrate   servlet   naming
*   and   custom   URLs.
*   <P>
*   Taken   from   More   Servlets   and   JavaServer   Pages
*   from   Prentice   Hall   and   Sun   Microsystems   Press,
*   http://www.moreservlets.com/.
*   ?   2002   Marty   Hall;   may   be   freely   used   or   adapted.
*/

public   class   TestServlet   extends   HttpServlet   {
public   void   doGet(HttpServletRequest   request,
HttpServletResponse   response)
throws   ServletException,   IOException   {
response.setContentType( "text/html ");
PrintWriter   out   =   response.getWriter();
String   uri   =   request.getRequestURI();
out.println( " <HTML> "   +
" <BODY   BGCOLOR=\ "#FDF5E6\ "> \n "   +
" <H2> URI:   "   +   uri   +   " </H2> \n "   +
" </BODY> </HTML> ");
}
}


问题如下:
在tomcat下:
我可以使用http://localhost:8081/deployDemo/UrlTest   访问且结果正确
但是不可以使用:http://localhost:8081/deployDemo/servlet/Test   或
                                http://localhost:8081/deployDemo/moreservlets.TestServlet
则不可访问,请问是为啥?

如果把servlet-mapping去掉,用http://localhost:8081/deployDemo/servlet/Test   或http://localhost:8081/deployDemo/moreservlets.TestServlet仍然不可访问,又是为什么啊?

更重要的是在resin下访问:
web.xml文件同上,但是使用http://localhost:8081/deployDemo/UrlTest或http://localhost:8081/deployDemo/servlet/Test   或http://localhost:8081/deployDemo/moreservlets.TestServlet均不可访问,又是为什么啊?

[解决办法]
在tomcat下访问用:http://localhost:8081/deployDemo/UrlTest
在resin下访问用:http://localhost:8080/deployDemo/UrlTest
[解决办法]
绝对路径的写法是:http://localhost:8081/deployDemo/servlet/moreservlets.TestServlet,不需要在web.xml里面配。
[解决办法]
你 <url-pattern> /UrlTest </url-pattern> 这样配置的当然


http://localhost:8081/deployDemo/UrlTest 访问且结果正确

你这两个算什么路径呢?
http://localhost:8081/deployDemo/servlet/Test
http://localhost:8081/deployDemo/moreservlets.TestServlet
包下面的类访问的时候可以用“.”?
我觉得至少应该这样访问吧?
http://localhost:8081/deployDemo/moreservlets/TestServlet
[解决办法]
想直接通过servlet名字而不是映射访问servlet 得启用 servlet调用器
在 tomcat安装目录 /conf下的web.xml中找到

<!--
<servlet>
<servlet-name> invoker </servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name> debug </param-name>
<param-value> 0 </param-value>
</init-param>
<load-on-startup> 2 </load-on-startup>
</servlet>
-->
这段代码 并把去注释掉。
找到:

<!--
<servlet-mapping>
<servlet-name> default </servlet-name>
<url-pattern> / </url-pattern>
</servlet-mapping>
-->
去掉注释符号-> 保存-> 重启tomcat
就可以通过servlet名字直接访问servlet了
[解决办法]
写servlet最好给它配置servlet-mapping,因为现在那种不需要配置servlet-mapping的都是低版本的应用服务器,现在的流行的服务器都是把这个功能关闭了的,都是必须配置servlet-mapping的。
[解决办法]
你确定resin里项目的web.xml对了么?

热点排行