Servlet入门

什么是Servlet

  • Server Applet:小服务程序
  • Servlet需要在一个web应用中运行
  • 一个web应用是部署在tomcat中的

最原始的方式创建j2ee项目

  • 因为是开发Servlet所以需要用到 servlet-api.jar 这个包里的相关类。
  • 链接:https://pan.baidu.com/s/1svoVuOgM192urZjC4bZehw
  • 提取码:58sh
  • 新建一个项目:File->New->Java Project
  • 导入必须的servlet-api.jar包:右键点击项目->properties->Java Build Path->Libraries->Add External JARs
  • 编写HelloServlet
import java.io.IOException;
import java.util.Date;

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

public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse responce) {
        // TODO Auto-generated method stub
        try {
            responce.getWriter().println("

Hello Servlet!

"); responce.getWriter().println(new Date().toLocaleString()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
  • 配置web.xml:
    • 首先在j2ee下创建目录web
    • 接着再创建目录web/WEB-INF
    • 然后创建web.xml文件
    • web.xml提供路径与servlet的映射关系,把/hello这个路径,映射
    • 我少写了一个/, 导致Tomcat启动失败,花了好长时间,找到这个Bug


 
    
        HelloServlet
        HelloServlet
    
 
    
        HelloServlet
        /hello
    
 

  • 指定项目输出到classes目录

    • 首先在WEB-INF下创建classes目录
    • 步骤:项目右键->properties->Java Build Path->Source->右下角的Browse->指定位置j2ee/web/WEB-INF/classes
    • 为什么要有这一步:eclipse默认字节码文件输出到bin,但是tomcat默认是WEB-INF/classes,所以必须调整Eclipse的输出目录,这样才能和tomcat兼容
  • 配置tomcat的server.xml中的context

    • 打开tomcat/conf/server.xml

    • image.png
    • path="/"就表示直接通过http://127.0.0.1/hello就可以访问
  • 删除tomcat webapps下的ROOT目录

    • 在上一步context path配置为/,与webapps下的ROOT目录冲突了
    • 所以要删除ROOT目录,如果没有就不用删除了
  • 重启tomcat,访问http://127.0.0.1/hello

    • 大功告成,每一次刷新,都能看到时间的改变
Servlet入门_第1张图片
image.png

我是怎么找到那个少写"/"的NUG

  • 首先我的Tomcat原本是可以启动的,这就证明我的Tomcat是完好无损的
  • 然后我替换了整个j2ee项目,发现Tomcat可以启动了,证明问题出在我的j2ee上
  • 逐一检查我的j2ee文件,替换HelloServlet类,Tomcat依然无法启动,证明问题必然出在web.xml
  • 仔细查看web.xml,没找到问题
  • 最后借助于diffmerge,终于发现少写了"/"
    Servlet入门_第2张图片
    image.png

你可能感兴趣的:(Servlet入门)