Tomcat和Servlet基础知识学习(一)

笔者对于Tomcat也是初学,写这篇文章的主要目的是方便自己去理解Tomcat的相关内容,所以有些描述并不是那么专业和全面,请多多包涵。

一、Tomcat概述

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
来源:Tomcat

Tomcat就是一个web服务器,我们在开发web项目时,需要将项目部署到web服务器上,而Tomcat是一个非常友好的服务器,很适合开发使用。对于为什么要把web项目部署到服务器上,这里不做讨论。

二、Tomcat的安装与配置

具体见博客win10 IDEA配置tomcat遇到的问题和解决方法

三、在web项目里面使用Tomcat

在上面的安装与配置里面实际已生成了一个web项目,这个项目的结构如下:
在这里插入图片描述
和一般的项目相比,主要是多了一个web文件夹。另外在web的目录下有一个index.jsp文件,其完整代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

  <head>
    <title>$Title$</title>
  </head>
  
  <body>
  $END$
  </body>

</html>

这里涉及到了jsp,关于jsp的说明如下:

JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。
JSP文件后缀名为 *.jsp 。
JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。

我们直接理解成一种格式就好了。现在来看上面的代码,第一行很明显,就是一些配置之类的,不用细究。如果之前了解过HTML,很容易发现下面的代码就是一个完整的HTML程序。这里我们重点关注body部分:

  <body>
  $END$
  </body>

我们都知道在HTML里面,body里面的内容就是网页的主体内容,这时候启动程序,程序会自动打开浏览器弹出网页
在这里插入图片描述
网页的内容刚好就是body里面的内容。此时再看看IDEA的的log
在这里插入图片描述
这说明Tomcat已成功配置,且这个web项目也成功部署到Tomcat中去了。

对于Tomcat,只是个服务器而已,所以重点是知道如何部署web项目到Tomcat中去,其中的细节初学者不必过多纠结。

四、Servlet概述

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

  • 性能明显更好。
  • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
  • Servlet 是独立于平台的,因为它们是用 Java 编写的。
  • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
  • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互

来源:Servlet 简介

所以Servlet就是可以运行在服务器(当然包括Tomcat)上面的程序。那么为什么要用Servlet呢?

这里所谓的Servlet不单单是指程序,就像Java不是仅仅指一门高级语言,它们都包括了一些技术(简单理解就是库、接口、方法)、平台之类的东西。Servlet作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层,那么我们编写有关Servlet的代码不就是很好地完成了客户端与服务器之间地数据处理嘛?所以要使用Servlet。

五、Servlet的使用

前面提到过Servlet包括很多东西,使用Servlet肯定就离不开使用它的一些包,主要是使用javax.servletjavax.servlet.http(从名字就可以看出来,Servlet是包含在Java里面的)。

实现Servlet就是通过javax.servlet和javax.servlet.http包生成相应的Servlet类。主要有以下三种方法:

  • 实现 Servlet 接口
  • 继承 GenericServlet 类
  • 继承 HttpServlet 方法

用的最多的是继承 HttpServlet 方法,这也是用IDEA默认的生成方式。具体操作:右击项目的src目录,然后
在这里插入图片描述
名字的话就看自己意愿。
生成的代码如下:

@WebServlet(name = "GenerateServlet") 
public class GenerateServlet extends HttpServlet {
    @Override protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    }

    @Override protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    }
}

这里面应该关注的是

@WebServlet(name = "GenerateServlet") 

这一段代码,这是注解,可以简单理解为通过这个将web端与我们实现的Servlet类联系起来(为方便理解)。
另外我们所生成的类实现了==doPost()、doGet()==这两个方法,其中doGet是处理客户端发来的Get请求,doPost是处理客户端发来的Post请求,对于两者请求的区别,详见

doGet是处理客户端发来的Get请求,doPost是处理客户端发来的Post请求,它们的区别可以从以下7个方面来说明:
1、客户端(一般指浏览器)生成的方式
get:form中method属性为get时;或者直接在URL地址栏中输入URL,需要传递参数时,直接在URL后面拼接“?name=张三&age=18”这样的查询参数字符串;
post:form中method属性为post。
2、客户端数据传送方式
get:表单数据存放在URL地址后面。所有get方式提交时HTTP中没有消息体;
post:表单数据存放在HTTP协议的消息体中以实体的方式传送到服务器。
3、服务器获取数据方式
get:服务器采用Servlet中的doGet来获取变量的值;
post:服务器采用Servlet中的doPost来获取数据。
4、传输的数据量
get:数据量长度有限制,一般不超过2kb。因为是参数传递,且在地址栏中,故数据量有限制;
post:适合大规模的数据传送。因为是以实体的方式传送的。
5、安全性
get:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低;
post:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。

来源:Servlet中doGet与doPost的区别

六、总结

Tomcat是一种web服务器,在开发web项目时要把项目部署到服务器(Tomcat)上才可正常运行。
Servlet是客户端和服务器之间的中间层,通过它可以连接客户端和服务器,一般使用继承 HttpServlet 方法实现Servlet。

在这里插入图片描述
2019.12.10

发布了52 篇原创文章 · 获赞 59 · 访问量 6837

猜你喜欢

转载自blog.csdn.net/ataraxy_/article/details/103481339
今日推荐