命令行开发第一个Servlet程序并简要介绍Tomcat工作流程

来源:互联网 发布:提升搜狗关键词优化 编辑:程序博客网 时间:2024/05/21 18:39

一.Servlet介绍

  • Servlet是一段运行于WEB容器中的程序,对不同的请求进行分类处理,底层的网络连接实现由WEB容器实现不加以考虑。
  • 一个合理的服务器处理程序,自然应当包括它处理的请求地址和请求的逻辑。Servlet要求开发者将其需要处理的逻辑写在service()方法中,而处理的请求以xml文件配置的方式显示声明。
  • 一个Servlet是一个接口,其方法由web容器实现一部分,由程序员实现一部分,而我们现在利用的是Servlet的一个实现类HttpServlet。

二.第一个Servlet

我们知道tomcat的应用放在其下面的webapps文件下,因此我们再webapps新建一个first文件夹作为本次项目的根文件夹,接着我们在first文件下新建一个文件夹叫WEB-INF,然后再WEB-INF文件下再建立两个文件夹,一个classes,一个叫lib,截图在下面,注意看详细地址,
这里写图片描述,最后新建一个xml文件叫web.xml,项目的配置就算结束了,最后截图应该是这个样子的,
这里写图片描述
敲黑板:我简要介绍下每个文件夹的作用,最外层的first文件夹是项目的根路径,一个项目总归还是要一个根文件夹的。然后,WEB-INF文件夹,根据名称也可以知道是web信息文件夹,这里面存放的是web工程的除静态文件外的所有工程文件,主要包括项目的处理代码,项目的依赖,项目的配置文件,还有一些不想暴露在外的静态数据等。在WEB-INF里的文件是不可以直接通过浏览器访问到的,在其外部的文件可以通过写文件夹地址的方式在浏览器找到下面的classes里面存放的是编译过后的Java程序,而lib中存放的是项目所依赖的jar包,最后的web.xml是整个项目的配置文件
有的小伙伴会问了,为什么这个项目路径是这样的,我不这样写行吗。答案是不这样写还真不行,tomcat在启动时就会默认去找WEB-INF文件夹去找classes,去找web.xml,不信的话,去tomcat根路径下的conf目录看一看web.xml和server.xml
下面在classes中新建一个Java文件,叫HelloWorld.java,然后将下面这段代码写进去。

//Source Code for HelloWorld Example import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet {    protected void service(HttpServletRequest request, HttpServletResponse response)    throws IOException, ServletException    {        //默认格式text/plain超文本不进行处理        response.setContentType("text/html");        PrintWriter out = response.getWriter();        out.println("<html>");        out.println("<head>");        out.println("<title>Hello World!</title>");        out.println("</head>");        out.println("<body>");        out.println("<h1>Hello World!</h1>");        out.println("</body>");        out.println("</html>");    }}

这段代码就是一个servlet程序,在service中写的就是我们想要做的事情,接着就是编译了。
肯定有机智的小伙伴发现了,这段程序需要javax包,然而我们默认的jdk中是没有这个包的,那么这个包在哪了呐?自然tomcat为我们提供了这个包了,我们去tomcat/lib中找到servlet-api.jar,复制一份,备份到自己目录下的lib包中,我们就用这个包编译Java程序。
首先,用win+r键打开,在里面敲入cmd这里写图片描述
回车进入,然后进入项目的classes目录中,这里写图片描述
最后再利用我们刚才的jar包来编译Java类,这里写图片描述
(好了,你们忽略我手残打错的那俩)
(命令都给你们, javac -classpath ..\lib\servlet-api.jar HelloWorld.java)
这样就编译好了,下面我们还需要啥?
当然是为这段程序提供一个它处理的请求地址。配置信息在哪写?当然是web.xml中,把下面这段代码放入web.xml中

<?xml version="1.0" encoding="utf-8" ?><!-- 部署描述文件--><web-app>   <!--配置servlet类,servlet-name为这个类起一个别名-->   <servlet>     <servlet-name>a1</servlet-name>     <servlet-class>HelloWorld</servlet-class>     <init-param>        <param-name>port</param-name>        <param-value>8080</param-value>     </init-param>   </servlet>   <!--为servlet配置一个处理的地址,当前类对应地址为/hello-->   <servlet-mapping>      <servlet-name>a1</servlet-name>      <url-pattern>/hello</url-pattern>   </servlet-mapping></web-app>

下面是最紧张刺激的,打开tomcat,找到tomcat根路径/bin/startup.bat,启动。
这里写图片描述
坠坠紧张刺激的来了,打开浏览器,输入http://localhost:8080/first/hello
如果你显示的是这个,
这里写图片描述
恭喜你啦,成功了。

三.Tomcat工作流程

敲黑板,这是最简单的流程了,tomcat启动时候会进去每个项目文件下去找WEB-INF文件,这个文件夹下的目录是不能直接访问的,直接访问啥意思,好了直接试试就知道了啊,在first目录下,写一个test.txt,里面随便写点啥,重启tom瞄,在浏览器输入http://localhost:8080/first/123.txt,就能直接看到123.txt中内容,这不是我们重点了啊。
找完了WEB-INF后,它会找web.xml根据其中的配置,找到对应的servlet类。配置相应请求。当浏览器请求时候,就会找到对应的地址处理的类,调用其中的service()方法。
在servlet最新版本中,有了对web.xml复杂的配置有改进的地方,就是利用注解的形式,tom瞄的处理方式大同小异啦,在启动时候会扫描一遍classes文件夹下,找到对应的注解。

四.附录说明

哇,老铁们,我真的不想写那种eclipse和idea配置的月经贴了,我直接转两个不错的来好吧……

原创粉丝点击