(2)19.4.3 关于一个简单的 servlet 实例

  Hello World 示例代码。

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 扩展 HttpServlet 类
public class HelloWorld extends HttpServlet {
 
  private String message;

  public void init() throws ServletException
  {
      // 执行必需的初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑是在这里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
      // 什么也不做
  }
}

将上面的保存成一个 HelloWorld.java文件。进行编译之前,需要配置 classpath。

  (1)默认情况下,Servlet 应用程序位于路径<Tomcat-installation-directory>/webapps/ROOT 下,且将编译的 HelloWorld.class 类文件放在 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。

  [注:]进行(1)之前,先将WEB-INF 文件夹至于 ROOT 之下。

  (2)在 web.xml 文件中,创建以下条目:

<web-app>      
    <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>
</web-app>  

启动Tomcat服务器,在浏览器的地址栏中输入 http://localhost:8080/HelloWorld 。如果一切顺利,会在浏览器中看到 Hello World 。

 

 

【注:】在servlet 浏览器访问路径配置时,应该注意的是:

(1)java 类里的注解 -- @WebServlet("/HelloServlet")对应浏览器路径:

http://localhost:8080/TomcatTest/HelloServlet

(2)配置文件(web.xml)里对应的浏览器访问路径:

http://localhost:8080/TomcatTest/TomcatTest/HelloServlet

以上两种配一个就 OK,否则路径重名的话反而会让 tomcat 启动不了。

例如:

修改 web.xml :

<url-pattern>/HelloServlet</url-pattern>

修改后,web.xml 和 java 类的注解,对应路径都是:

http://localhost:8080/TomcatTest/HelloServlet

 

导致

命名的 servlet[HelloServlet]和 [com.runoob.test.HelloServlet] 都被映射到 URL 模式 [/ HelloServlet] 这是不允许的。

解决方法:将 java 类的注解去掉,或者进入 web.xml 将映射删除就可以。

posted on 2019-04-03 23:42  Actstone  阅读(110)  评论(0)    收藏  举报

导航