使用Eclipse创建Servlet

本次测试,使用是比较原始的Eclipse Java版本,只能创建Java Project,不能创建Dynamic Web Project,也没有Tomcat的集成。

以在浏览器上显示Servlet中输出的文字为目的,其它方面不考虑,不多解释。

前提条件:已安装Java,已安装Tomcat,且正确配置。

第一步,File --> New Java Project

此处可能会修改的可能只有两个地方,其它的根据情况自行处理,基本不用动。如下图所示:

点击Next

第二步,必要的配置

这个界面上的东西,可改可不改,根据自己实际需要决定。通常情况下,有些IDE会默认为servlet_test5/WebContent/WEF-INF/classes或者servlet_test5/webapps/WEF-INF/classes,都可以,关键是WEF-INF/classes是必要搭配。

第三步,点击上个界面的Tab中的Libararies

然后点击Add External JARs

出现选择文件对话框,找到tomcat的安装目录下的lib文件夹,选择jsp-api.jar和servlet-api.jar两个文件

  点击确定,返回上个界面后,点击Finish

 第四步,根目录下创建index.jsp文件

随便输入点什么,这个文件对于Servlet这个程序来讲,没什么用,主要用于确定网站是否配置正确。index.jsp放在哪里都可以,只要在tomcat中指向它即可。

 配置tomcat,指向此项目的根目录,即index.jsp所在的目录

WIN+R运行,services.msc打开服务管理,重新启动tomcat,如果一切顺利,此时在浏览器中输入localhost:8080,应当能看到index.jsp中输入的文字。

 第五步,创建Sevlet

(1)src下创建一个包sabre.web.servlet,包下创建一个类ServletDemo1,名称自拟,其它默认即可,点击Finish

 

在创建的类中输入以下代码:

package sabre.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo1 extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public ServletDemo1() {
        super();
    }
    
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 使用 GBK 设置中文正常显示
            response.setCharacterEncoding("GBK");
            response.getWriter().write("Servlet演示");
        }
     
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
}

第六步,创建WEB-INF

这是是最关键的一步,我的挫折均来自这里

如果第二步配置的是WEB-INF/classes,则此处应当已经生成了此目录,不需要手动创建。

根目录下创建目录WEB-INF,注意,必须大写,小写无效。

必须是这个名称,否则无效。

WEB-INF目录必须在tomcat中配置的网站根目录下,否则无效,如果第二步配置的是servlet_test5/webapps/WEF-INF/classes,则网站根目录是webapps。

WEB-INF目录下创建classes目录,此目录即是第二步中配置的默认output目录,编译生成的字节码都会放到这里。原理是如果Web应用程序要用到某个类,则会到/WEB-INF/classes中试着载入类,若没找到,再尝试从/WEB-INF/lib的JAR文件中寻找类文件,若还没有找到,则会到容器实现本身存放类或JAR的目录中寻找,但位置视实现厂商而有所不同,以Tomcat而言,搜寻的路径是Tomcat安装目录下的lib目录。

WEB-INF下创建web.xml,注意,web.xml一定要在WEB-INF目录下,否则无效。web.xml是java web必须的配置文件,类似.net的web.config。

此处web.xml的作用是对servlet进行映射

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>JavaWeb2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
<!-- 配置Servlet -->
    <servlet>
        <servlet-name>ServletDemo1</servlet-name>
        <servlet-class>sabre.web.servlet.ServletDemo1</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ServletDemo1</servlet-name>
        <url-pattern>/ServletDemo1</url-pattern>
    </servlet-mapping>
</web-app>

重启tomcat,浏览器中输入http://localhost:8080/ServletDemo1,如果一切顺利,页面上将显示"Servlet演示",表示Servlet创建成功。

如果出现HTTP Status 500 - Error instantiating servlet class XXXX类,多半是因为classes目录没在WEB-INF下。

原文地址:https://www.cnblogs.com/Sabre/p/15743367.html