本次测试,使用是比较原始的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下。