http://localhost:8080/servlet/helloworld
解决方案 »
- org.apache.catalina.core.StandardWrapperValve invoke
- HibernateTemplate自动提交事务吗?
- java中能传值传对象,那么它能传一个方法吗?
- 保持Java类 怎么理解
- java在那些情况下会导致内存溢出
- jfreechart 堆栈图设置颜色
- 求VE/GEF/EMF/Eclipse3.0M8的下载地址(速度较快的官方镜像或非官方)
- filter中filterConfig为NULL,在线
- 如何提高jbuilder的速度?
- Class must not be null
- bufferedInputstream用在socket上时用多大的buffer能使传输速度最快
- java环境变量的设置一直出问题
你上面的代码没有错误!
怀疑是你具体操作的错误,或者是别的原因!
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
关于invoker的已经被注释掉的地方的注释去掉,特别是上面的这一句的注释一定要注释
<servlet-class>HelloWorld</servlet-class> HelloWorld
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/helloworld</url-pattern>
</servlet-mapping> 你这里的配置有问题
servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet> 表示指定包含的servlet类。而以下的结构:<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping> 表示指定HelloServlet应当映射到哪一种URL模式。访问的时候就要http://localhost:8080/servlet/helloworld
----
一定注意大小写问题,这样路径肯定没错,出错只可能是文件的事
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/helloworld</url-pattern>
</servlet-mapping>
<url-pattern>里多加了个servlet,去掉同时注意字母大小写就可以了,如下:
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
***************************
/*HelloWorld.java*/
放到虚拟目录或别的目录下成这样的结构web-inf/classes/HelloWorld.java
然后编译了成了这样的结构web-inf/classes/Hello/HelloWorld.classpackage Hello;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>");
out.println("This is my first Servlet");
out.println("</title></head><body>");
out.println("<h1>Hello,World!</h1>");
out.println("<h2>Hello,World!</h2>");
out.println("<h3>Hello,World!</h3>");
out.println("</body></html>");}
}********************************
/*web.xml*/修改后的web.xml,修改后记得重新启动Tomcat不然总是出错误的。说找不到。<?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>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>Hello.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
****************************************把它用Jcreator编译了的HelloWorld.class把打包的以Hello/HelloWorld.class这样的结构一起
copy到了web-inf里的classes底下。然后去把web-inf里的web.xml修改,加上以下几行:
<servlet-name>HelloWorld</servlet-name> /*注册一个servlet的别名,一般就用类的名字*/
<servlet-class>Hello.HelloWorld</servlet-class>/*指明它在web-inf的classes底下开始的位置*/
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>/*一般是用/servlet/*或用/servlet/servlet的名字*/
就好了。
或
<servlet-name>HelloWorld</servlet-name>
<servlet-class>Hello.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/*</url-pattern>
我一直从网上看到的都是这几句要点。一个要点是注册了servlet;一个要点是为这个servlet指定一个位置。
但是由于每次修改了web.xml后没有重新启动Tomcat。总是以为配置web.xml出错了。一直在修改一直在测试,却总是出来错误。就是在这个原因了。
如果在ROOT里放的servlet的话,用http://localhost:8080/servlet/HelloWorld访问
如果放到虚拟目录,比如我的是lanziman的话就用http://localhost:8080/servlet/HelloWorld访问。
刚才写错了。不好意思。