编写基础的Servlet应用程序

1 Servlet

使用Servlet需要在pom.xml中引入以下依赖:

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

Servlet接口定义了以下5个方法

public void init(ServletConfig config) throws ServletException;public ServletConfig getServletConfig();public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;public String getServletInfo();public void destroy();

init、service和destroy方法属于servlet生命周期方法。servlet根据以下原则调用这三个方法:

  • init:第一次请求Servlet时,Servlet容器就会调用这个方法。在后续的请求中,将不会再调用该方法。可以利用这个方法来编写一些应用程序初始化相关的代码。在调用这个方法时,Servlet容器会传递一个ServletConfig。
  • service:每次请求Servlet时,Servlet容器都会调用这个方法。必须在这里编写要Servlet完成的相应代码。第一次请求Servlet时,Servlet容器会调用init和service,之后每次请求,不会再调用init,只会调用service方法。
  • destroy:要销毁Servlet时,Servlet容器就会调用这个方法。它通常发生在卸载应用程序,或者关闭Servlet容器的时候,一般来说,可以在这个方法中编写一些资源清理相关的代码。

Servlet中的另外两个方法是非生命周期方法:getServletInfo和getServletConfig。必须注意的一点是线程安全性。一个应用程序中的所有用户将共用一个Servlet实例。

2 编写Servlet示例

确保在pom.xml文件中已经引入servlet-api依赖包。项目目录结构如下:

package com.servlet.demo;import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet(name = "MyServlet", urlPatterns = {"/my"})
public class MyServlet implements Servlet {private transient ServletConfig servletConfig;@Overridepublic void init(ServletConfig config) throws ServletException {this.servletConfig = config;}@Overridepublic ServletConfig getServletConfig() {return servletConfig;}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {String servletName = servletConfig.getServletName();res.setContentType("text/html");PrintWriter writer = res.getWriter();writer.print("<html><head></head><body>Hello from " + servletName + "</body></html>");}@Overridepublic String getServletInfo() {return "My Servlet";}@Overridepublic void destroy() {}
}

上述使用了@WebServlet注解,所以需要在web.xml中配置允许使用注解,web.xml 的顶层标签 中有一个属性:metadata-complete,该属性用于指定当前 web.xml 是否是完全的。若该属性设置为 true,则容器在部署时将只依赖 web.xml,忽略所有的注解。若不配置该属性,或者将其设置为 false,则表示启用注解支持。配置如下所示:

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0" metadata-complete="false"><!-- metadata-complete取值为true,表示关闭注解支持 --><!-- metadata-complete取值为false,表示启用注解支持 --><display-name>Archetype Created Web Application</display-name>
</web-app>

现在,就可以运行Servlet项目了。

3 配置Servlet容器

  • 点击Add Configuration
  • 点击 add new
  • tomcat选择local
  • 选择Application Server
  • 选择本地的tomcat目录
  • 更改如下两个端口号(如果没有被占用可以不用更改)
  • 配置Deployment

  • 更改一下application context

    然后点击ok。

运行项目

依次按照下图顺序点击运行:

运行成功后如下图所示,有一个对钩

然后浏览器中输入如下所示:

【Java后台】从零开始的Java后台开发(二)
【Java后台】从零开始的Java后台开发(一)

【Java后台】从零开始的Java后台开发(三)相关推荐

  1. 写给java初学者,从零开始学习java开发的完整学习路线

    要问编程王者是谁?自然是非java莫属!发展了20多年,学习java的人络绎不绝.不管是有计算机基础还是没有基础,都想学习这门前途无量的技术.这时候有人担心了,零基础该怎么学java呢?会不会困难重重 ...

  2. windows java eclipse_从零开始学 Java - Windows 下安装 Eclipse

    三观是什么鬼 当我们在讨论「三观一致」的时候是在讨论些什么? 我认为这个世界上本没有「三观」这一说法,说的人多了,也就有了「三观」这个词,当我们讨论「三观一致」其实并不是真的在说世界观.价值观.人生观 ...

  3. java ejb3开发_月光软件站 - 编程文档 - Java - 使用EJB3.O简化EJB开发(三)

    简化持久化容器管理 CMP实体bean将成为EJB3.0使得开发人员强制使用的一个主要的检查方式.持久化框架象如开源的已经成为不像实体bean本质上的复杂和重量级的开发J2EE持久化框架应用的被大家喜 ...

  4. quartz java spring_从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  5. Java Web 后台中餐饮业报表系统开发实例

    本期葡萄城公开课,我们诚邀石家庄品智技术有限公司,高级软件工程师--刘永政先生,为大家在线分享餐饮业报表系统设计模式,以及在 HTML5 报表浏览器.Java 架构中跨平台使用ActiveReport ...

  6. java+bizx文件_14.Teambiz后台开发规范

    IBM GDC DL Teambiz后台开发规范 (2012年3月9日修订版) 撰写:何杨 2012年3月9日 1. 包的命名 包名应全由小写单词组成,如com.dalpha.common.gui,c ...

  7. 从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...

    http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...

  8. java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...

    http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...

  9. JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构 ...

最新文章

  1. 2020年班级管理html,2020年七年级班主任工作计划
  2. supervisor 守护多个进程_supervisor守护进程管理实操笔记
  3. 在Ubuntu上通过VNC Viewer连接Jetson nano桌面
  4. 会议邀请 | 中国中文信息学会暑期学校《前沿技术讲习班》
  5. chromiumwebbrowser 使用_用Tchromium替换webbrowser
  6. BZOJ 1199: [HNOI2005]汤姆的游戏 计算几何暴力
  7. iphone固件降级_手机资讯:降级必备:Phone5如何下载备份SHSH文件
  8. bzoj4173:数学
  9. Python初学者(零基础学习Python入门)书籍、视频、资料分享
  10. 基因编辑最新研究进展(2022年3月)
  11. CF 1324-F Maximum White Subtree //树形换根dp
  12. 《非计算机毕业生2015互联网校招求职之路》2014-10-15
  13. 【问题记录】ABP框架模板页面样式加载不完全
  14. 高等数学(第七版)同济大学 习题12-1 个人解答
  15. 梦幻新开服务器维护,梦幻西游12月新开服务器
  16. java tailer apache_工具类commons-io的Tailer用来监控文件
  17. Linux下对MySQL数据库的操作
  18. java获取小程序中用户的unionId的三种方式
  19. 微软应用商店_对手变战友!苹果iCloud正式登陆微软官方应用商店
  20. win11关闭用户账户控制方法

热门文章

  1. 数据结构选择题汇总(附答案)
  2. 单例模式的原理/懒汉模式/饿汉模式以及不同版本的单例模式程序
  3. 华为荣耀9的android版本号,携安卓P版本首发 华为EMUI9.0系统解析
  4. 搭建自己的SpringBoot initializer构建服务器最后执行mvn clean install -Pfull报错
  5. React整合FullCalendar笔记(一)
  6. 电脑上的小白系统没内存怎么办?
  7. 计算机视觉 特征检测与匹配 图像分割
  8. 消费者追捧iPhone,在于它的性价比超越国产手机
  9. 浅谈分布式全闪存储自动化测试平台设计
  10. numpy的nonzero()和logical_and/or/not()