Servlet详解(上)

简介: Servlet详解

一. Servlet介绍


1.1 概念

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app,使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页;


2.2 Servlet架构

a3588119a47947b790013ee4f784b607.png


二. 创建一个Servlet程序

一般创建一个简单的 Servlet 程序需要一下几个步骤:


2.1 创建一个Maven项目

8d1b747fa39242c89bb794f76cec4332.png


2.2 引入 jar 包

打开创建好的Maven工程,点击pro.xml文件,我们需要去中央仓库去引入相对应的依赖,可以去官网复制相应的代码,点击这个网址直接跳转到中央仓库:


https://mvnrepository.com/

https://mvnrepository.com/

f288488494de48d2920db43dcab64639.png


97ce97c0143d4376a4773f160785492b.png

注意:这里要选择3.1.0的版本,因为这个版本是和 Tomcat8.5 相匹配的,不同的Servlet就要对应不同的Tomcat;


<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

7f99003627214279a74b05b71ed1ff85.png

把这段代码复制粘贴到Maven工程的pro.xml文件里就OK了,这里需要新增一个<dependencies>标签,这样IDEA就会自动识别并且下载相对应的jar包了;


2.3 创建目录

在main的目录下创建一个webapp的目录,在此目录下创建一个WEB-INF目录,在WEB-INF目录下创建web.xml文件,这里的文件目录和文件名字要保证正确;创建好之后在web.xml中写入相应的代码,这里代码给出了,直接用即可:


<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

7e0d97850c5c454e83737e89d4bc5fb6.png

2.4 编写代码


@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    // 这里的rep是HTTP请求,resp是HTTP响应
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf8");
        resp.getWriter().write("hello world");
        resp.getWriter().write("你好 世界");
    }
}

2.5 打包程序

打包做的事情有:

  1. 检查代码中是否存在一些依赖,依赖是否下载好;
  2. 把代码进行编译,生成.class文件;
  3. 把这些.class文件或者.xml文件按照一定格式进行打包;

这里我们双击package,同时我们要在pom.xml文件中插入相应代码,来调整打包生成的格式,如果双击package打出来的包就是jar包,但是我们需要的war包;


// 指定打包格式
<packaging>war</packaging>
    <build>
// 生成包的名字
        <finalName>helloServlet</finalName>
    </build>

e4372d6366f14429b312557668f2dc9b.png

这里我们看见就打包成功了;


2.6 部署程序

我们需要把打好的war包移到 tomcat 的webapp目录下

601a3243ca344f9195542eab15723b46.png


ec2d216b6324449c9b80ade09b4d5efd.png


2.7 验证程序

这里我们需要再IDEA上安装一个Smart Tomcat,安装的过程就不细说了,安装完成后,点击运行,在浏览器输入url,localhost:8080/servlet/hello,就可以看到你想显示的东西了;

3870ed705e294c0684108037c6e253de.png

但是要正确启动一个servlet程序,还需要注意一下路径的问题,否则就会启动失败:

8110413d6dff49a2ae4efa929c8774bd.png


目录
相关文章
|
存储 Java 索引
【面试题精讲】ArrayList 和 Array(数组)的区别?
【面试题精讲】ArrayList 和 Array(数组)的区别?
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
249 4
|
12月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
448 6
|
12月前
|
运维 监控 网络安全
自动化运维的魔法:如何用Python简化日常任务
【10月更文挑战第9天】在数字时代的浪潮中,运维人员面临着日益增长的挑战。本文将揭示如何通过Python脚本实现自动化运维,从而提高效率、减少错误,并让运维工作变得更具创造性。我们将探索一些实用的代码示例,这些示例将展示如何自动化处理文件、监控系统性能以及管理服务器配置等常见运维任务。准备好让你的运维工作升级换代了吗?让我们开始吧!
|
C# Android开发 开发者
Uno Platform 高级定制秘籍:深度解析与实践样式和模板应用,助你打造统一且高效的跨平台UI设计
【9月更文挑战第7天】Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 创建跨平台 UI 应用,覆盖 Windows、iOS、Android、macOS 和 WebAssembly。本文介绍 Uno Platform 中样式和模板的应用,助力开发者提升界面一致性与开发效率。样式定义控件外观,如颜色和字体;模板则详细定制控件布局。通过 XAML 定义样式和模板,并可在资源字典中全局应用或嵌套扩展。合理利用样式和模板能简化代码、保持设计一致性和提高维护性,帮助开发者构建美观高效的跨平台应用。
313 1
|
存储 JavaScript 前端开发
探索React状态管理:Redux的严格与功能、MobX的简洁与直观、Context API的原生与易用——详细对比及应用案例分析
【8月更文挑战第31天】在React开发中,状态管理对于构建大型应用至关重要。本文将探讨三种主流状态管理方案:Redux、MobX和Context API。Redux采用单一存储模型,提供预测性状态更新;MobX利用装饰器语法,使状态修改更直观;Context API则允许跨组件状态共享,无需第三方库。每种方案各具特色,适用于不同场景,选择合适的工具能让React应用更加高效有序。
268 0
|
安全 IDE 开发工具
Python——记录pip问题(解决下载慢、升级失败问题)
Python——记录pip问题(解决下载慢、升级失败问题)
622 1
|
存储 SQL 数据管理
基于阿里云数据库 SelectDB 版内核 Apache Doris 全新分区策略 Auto Partition 应用场景与功能详解
自动分区的出现进一步简化了复杂场景下的 DDL 和分区表的维护工作,许多用户已经使用该功能简化了工作流程,并且极大的便利了从其他数据库系统迁移到 Doris 的工作,自动分区已成为处理大规模数据和应对高并发场景的理想选择。
465 0
|
JavaScript
解释 Vue 的事件总线和 emits 属性。
解释 Vue 的事件总线和 emits 属性。
196 3