java servlet示例

时间:2020-02-23 14:37:15  来源:igfitidea点击:

在本教程中,将介绍如何创建servlet并在Apache Tomcat8中部署它们

什么是servlet?

servlet是几乎所有javaweb应用程序的构建块。它们提供了接受HTTP请求和向用户返回HTTP响应的核心功能。即使我们使用JSP构建web页面,JSP文件最终也会由应用服务器或者web容器(如Glassfish或者Tomcat)编译为servlet。servlet对于web容器来说是必不可少的,它提供GET、POST、HEAD、PUT、DELETE、OPTIONS和TRACE请求,并向web客户端返回响应。我们可能最熟悉GET和POST请求。我强烈建议我们花点时间阅读上面列出的其他类型的请求。如果你还不认识他们,现在就去读这篇文章https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html .

Servlet项目结构

在我们的第一个示例中,我们将构建一个简单的Servlet,在浏览器中打印消息“Hello world”–这是多么微不足道,不是吗。我们将使用Maven来构建这个项目。我们将创建一个Servlet类和一个

web.xml

文件。这个

web.xml

文件(也称为部署描述符)向web容器提供如何处理servlet的信息。把它看作一个配置文件。

项目POM文件

建造maven

pom.xml

Servlet项目的文件如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>net.theitroad.tutorials</groupId>
	<artifactId>SimpleServlet</artifactId>
	<version>1</version>
	<packaging>war</packaging>

	<name>SimpleServlet</name>
	<url>https://theitroad.local</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<build>
		<sourceDirectory>src/main/java</sourceDirectory>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<warSourceDirectory>src/main/webapp</warSourceDirectory>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

让我们拆掉

pom

归档并查看重要内容:

我们需要将包装设置为

war

. Tomcat中的Web应用程序被打包成WAR文件(Web档案),其中封装了应用程序的所有数据。WAR文件的名称是基于

arifactId

以及

version

在maven pom文件中设置的参数。我们的战争档案的名字是

SimpleServlet-1.war

我们需要创建servlet的依赖关系是

javax.servlet-api

. 我们将范围设置为“provided”,因为Tomcat已经内置了所需的所有库。

我们需要Maven WAR插件来创建WAR文件

在WAR插件集1.8的编译器部分。这意味着这些类将用Java8编译

简单的Servlet示例

让我们看看一个非常基本的servlet的源代码,它打印消息“helloworld!”在web浏览器中

package net.theitroad.tutorials;

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 SimpleServlet extends HttpServlet {

	private static final long serialVersionUID = -4751096228274971485L;

	@Override
	protected void doGet(HttpServletRequest reqest, HttpServletResponse response) 
			throws ServletException, IOException {
		response.getWriter().println("Hello World!");
	}

	@Override
	public void init() throws ServletException {
		System.out.println("Servlet " + this.getServletName() + " has started");
	}

	@Override
	public void destroy() {
		System.out.println("Servlet " + this.getServletName() + " has stopped");
	}

}

所有servlet都需要扩展抽象类HttpServlet。HttpServlet提供了构建HTTP响应的所有方法—我们在这里所做的是重写一些方法来放置我们自己的逻辑。

doGet方法在客户端(浏览器)向servlet发出GET请求时执行。在我们的示例中,它将返回文本响应“Hello World!”。

init()方法在web容器第一次启动servlet时调用一次。这发生在应用程序部署或者第一次调用该servlet时。init方法可用于设置数据库连接或者其他耗时的初始化操作。

destroy()方法在web容器终止servlet时调用。我们可以使用此方法关闭与数据库或者其他开放资源的连接。

创建web.xml文件配置描述符

这个

web.xml

文件用于告诉web容器如何处理web应用程序中的文件。把它看作一个配置文件。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">

	<display-name>Simple Servlet Application</display-name>

	<servlet>
		<servlet-name>simpleServlet</servlet-name>
		<servlet-class>net.theitroad.tutorials.SimpleServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>simpleServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>

</web-app>

显示名称应用程序将在Tomcat管理器中以该名称列出。阅读本教程以了解如何配置tomcatmanager以及如何使用tomcatmanager部署应用程序。

<servlet>标记保存servlet的配置。 <servlet name>是我们的servlet的别名,它用于在

web.xml

文件。<servlet class>是指向servlet的路径。 <load on startup>1</load on startup>表示在Tomcat启动时,servlet将被加载到web容器中。如果项目中有其他servlet,我们可以设置启动时加载的值,如2、3、100等。值最低的servlet具有更高的优先级,并将首先加载。

<servlet mapping>用于给servlet一个URL。在我们的示例中,我们将模式/hello指定给servlet,这意味着访问本地服务器上servlet的完整URL将是http://localhost:8080/SimpleServlet/你好

构建并部署示例

在构建源代码之后,我们将准备部署WAR文件。WAR将包含编译的servlet类和部署描述符文件

web.xml