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

编写基础的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;

    @Override
    public void init(ServletConfig config) throws ServletException {
        this.servletConfig = config;
    }

    @Override
    public ServletConfig getServletConfig() {
        return servletConfig;
    }

    @Override
    public 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>");
    }

    @Override
    public String getServletInfo() {
        return "My Servlet";
    }

    @Override
    public 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-app
        xmlns: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后台开发(一)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值