热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaServlet初学者快速入门指南(注解)

在本Java教程中,我将帮助您使用WebServlet注释从头开始开发Javaservlet,以及如何在Tomcat服务器上部署、运行和测试servle



在本 Java 教程中,我将帮助您使用@WebServlet注释从头开始开发 Java servlet,以及如何在 Tomcat 服务器上部署、运行和测试 servlet。

本教程与Java servlet 初学者快速入门指南 (XML)类似,不同之处在于 servlet 配置和映射是通过注解而不是在web.xml文件中完成的。没有使用 XML 的东西。

表中的内容:

  1. servlet注解快速介绍
  2. 创建目录结构
  3. 编写带注释的 servlet 类
  4. 编写 JSP 页面
  5. 编译servlet
  6. 创建 WAR 文件
  7. 部署和测试 Web 应用程序

  

1. servlet注解快速介绍

Servlet API 3.0 引入了一个名为javax.servlet.annotation的新包,它提供了可用于注释 servlet 类的注释类型。注释可以替换 Web 部署描述符文件 ( web.xml ) 中的等效 XML 配置,例如 servlet 声明和 servlet 映射。Servlet 容器将在部署时处理带注释的类。

Servlet 3.0 中引入的注解类型有:

  • @HandlesTypes
  • @ServletSecurity、@HttpMethodConstraint 和 @HttpConstraint
  • @MultipartConfig
  • @WebFilter
  • @WebInitParam
  • @WebListener
  • @WebServlet

注解@WebServlet用于声明一个servlet 类(该类仍然必须从HttpServlet类扩展)并为其配置映射。以下是使用@WebServlet注解的一些示例:

  • 声明 servlet 的最简单方法:
    1
    2
    3
    4
    @WebServlet("/Submit")
    public class QuickServlet extends HttpServlet {
        // servlet code here...
    }

    这里 servlet QuickServlet 映射到 URL 模式:/Submit。 

  • 声明一个带有附加信息的 servlet:
    1
    2
    3
    4
    5
    6
    7
    8
    @WebServlet(
        name = "AnnotatedServlet",
        description = "A sample annotated servlet",
        urlPatterns = {"/QuickServlet"}
    )
    public class QuickServlet extends HttpServlet {
        // servlet code here...
    }
    此处的 servlet 声明了附加信息,例如名称和描述。

  • 声明一个具有多个 URL 模式的 servlet:
    1
    2
    3
    4
    5
    6
    @WebServlet(
        urlPatterns = {"/foo""/bar""/cool"}
    )
    public class QuickServlet extends HttpServlet {
        // servlet code here...
    }

    此处 servlet 使用三种不同的 URL 模式进行映射:/foo/bar/cool

     
     

现在让我们构建一个简单的 Java Web 应用程序,它有一个使用@WebServlet注释配置的 servlet。假设您的计算机上安装了JDK 1.7和Tomcat 7.0 。当然,您可以使用较新的版本。

 

2.创建目录结构

由于我们不使用任何 IDE,因此创建以下目录结构:

并假设当前工作目录是QuickServlet目录。


3.编写带注释的servlet类

在src\net\code\java\servlet目录下创建名为QuickServlet.java的 servlet 类。粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package net.codejava.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.annotation.WebServlet;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet(
    name = "AnnotatedServlet",
    description = "A sample annotated servlet",
    urlPatterns = {"/QuickServlet"}
)
public class QuickServlet extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
 
        PrintWriter writer = response.getWriter();
        writer.println("Hello, I am a Java servlet!");
        writer.flush();
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        String paramWidth = request.getParameter("width");
        int width = Integer.parseInt(paramWidth);
 
        String paramHeight = request.getParameter("height");
        int height = Integer.parseInt(paramHeight);
 
        long area = width * height;
 
        PrintWriter writer = response.getWriter();
        writer.println("Area of the rectangle is: " + area + "");
        writer.flush();
 
    }
}

 

4.编写JSP页面

WebContent目录下,使用以下代码创建一个名为index.jsp的 JSP 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
    <title>Quick Servlet Demotitle>
head>
<body>
    <a href&#61;"/QuickServlet">Click here to send GET requesta>
     
    <br/><br/>
     
    <form action&#61;"QuickServlet" method&#61;"post">
        Width: <input type&#61;"text" size&#61;"5" name&#61;"width"/>
          
        Height <input type&#61;"text" size&#61;"5" name&#61;"height"/>
          
        <input type&#61;"submit" value&#61;"Calculate" />
    form>
body>
html>

 

5. 编译servlet

键入以下命令来编译 servlet 类&#xff1a;

javac -cp TOMCAT_HOME \lib\servlet-api.jar" -d CLASS_DIR SRC_DIR \QuickServlet.java

代替&#xff1a;

  • TOMCAT_HOME &#61; C:\Program Files\Apache Software Foundation\Tomcat 7.0
  • CLASS_DIR &#61;WebContent \ WEB-INF \ 类
  • SRC_DIR &#61;src\net\codejava\servlet


6. 创建WAR文件

键入以下命令&#xff0c;将WebContent目录打包为 WAR 文件&#xff08;注意末尾有一个点&#xff09;&#xff1a;

jar cfv deploy\QuickServletApp.war -C WebContent 。

请注意&#xff0c;没有web.xml文件&#xff0c;因为我们使用了&#64;WebServlet注解来声明和映射 servlet。


7. 部署和测试 Java servlet

请参阅教程&#xff1a;Java servlet 初学者快速入门指南 (XML)以部署和测试应用程序。

 


推荐阅读
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • R语言中向量(Vector)数据类型的元素索引与访问:利用中括号[]和赋值操作符在向量末尾追加数据以扩展其长度
    在R语言中,向量(Vector)数据类型的元素可以通过中括号 `[]` 进行索引和访问。此外,利用中括号和赋值操作符,可以在向量的末尾追加新数据,从而动态地扩展向量的长度。这种方法不仅简洁高效,还能灵活地管理向量中的数据。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
author-avatar
手机用户2502913137
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有