Java servlet后端开发超详细教程

作者:练习时长六年半的Programmer 时间:2022-11-01 06:13:50 

java后端介绍

今天我正式开始了一个新话题,那就是 Web。目前我主要会介绍后端。作为后端的老大哥 java,也有很多后端框架,比如大家耳熟能详的 spring 等。今天来带大家入门 servlet,不管是学生,刚毕业或是已经工作自学编程的人群都能看懂。

准备工作

目前我们使用的服务器是 Tomcat,大家可以先安装 Tomcat,这一步网上有很多教程,我不再说了。然后还需要下载 idea,配置 Tomcat 和 jdk,这些网上都有,如果配置遇到问题可以私信我。

Servlet项目创建

大家先用idea 创建 web 项目,创建好后应是这样。

Java servlet后端开发超详细教程

现在在你的 src 目录下创建一个package,并命名为 com.xxxx.servlet。

Java servlet后端开发超详细教程

然后在这个包下面创建一个 java类,名叫 servlet(你也可以自己起名字)

Servlet的基础使用

导入包

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

主要是导入了 servlet 的基本方法。

创建 java 类,并继承自HttpServlet 类

因为我们后面还要重写 HttpServlet 类中的方法,所以要继承这个类。

public class servlet extends HttpServlet{
}

重写service方法

因为我们要处理请求,所以要重写服务类来处理请求,否则处理不了请求。

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   }

设置访问路径

@WebServlet("/servlet01")

这行代码加在类前面,这样我们就可以通过 /servlet01 路径来访问。

内容

这里我们在控制台(idea下面)和网页(浏览器访问)里分别打印一句话 "Hello Servlet!"

System.out.println("Hello Servlet");
//通过流输出内容
resp.getWriter().write("Hello Servlet");

实例完整代码

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
* 实现 Servlet
* 1.创建 web 项目,配置 Servlet 和 Tomcat
* 2.创建普通 Java 类
* 3.继承 HttpServlet 类
* 4.重写 service 方法(处理请求,Ctrl+o,选择倒数第二个钥匙的)
* 5.处理请求
* 6.设置注解,指定访问路径
* 7.配置,见https://blog.csdn.net/Samzz33/article/details/116311106
* */
@WebServlet("/servlet01")
public class servlet extends HttpServlet{
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.service(req, resp);
       //打印内容在控制台
       System.out.println("Hello Servlet");
       //通过流输出内容
       resp.getWriter().write("Hello Servlet");
   }
}

运行

点击 idea 右上角运行图标

Java servlet后端开发超详细教程

然后 idea 会打开 http://localhost:8080/servlet_war_exploded/

但是你看不到任何内容,因为你没有访问你刚才设置的路径。

访问 http://localhost:8080/servlet_war_exploded/servlet01

你会看到

Java servlet后端开发超详细教程

这就成功了

servlet的生命周期

类加载->实例化->服务->销毁

类加载

类加载在服务器启动时就执行,一次一个生命周期只执行一次。

实例化

开始生命周期时,服务器判断有没有实例化,如果没有则实例化。

写一个函数 init(),在实例化时执行。

@Override
   public void init() throws ServletException {
       System.out.println("Servlet被创建");
   }

当实例化是,会在控制台输出文字。

服务

当收到请求就开始服务,一个生命周期执行多次。

@Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       System.out.println("Servlet被调用");
   }

销毁

一个生命周期执行一次,在服务器停止时执行,也就是你停止运行程序时。

@Override
   public void destroy() {
       System.out.println("Servlet被销毁");
   }

完整代码

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
* Servlet生命周期: 类加载->实例化->服务->销毁
* */
@WebServlet("/servlet02")
public class servlet02 extends HttpServlet{
   /*
   * 一个生命周期只执行一次,服务器判断是否存在,不存在则创建实例,自动调用
   * */
   @Override
   public void init() throws ServletException {
       System.out.println("Servlet被创建");
   }
   /*
   * 服务方法,自动调用,当接收到请求就会调用该方法,可以被多次调用
   * */
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       System.out.println("Servlet被调用");
   }
   /*
    * 一个生命周期只执行一次,服务器停止时运行该方法
    * */
   @Override
   public void destroy() {
       System.out.println("Servlet被销毁");
   }
}

来源:https://blog.csdn.net/m0_64036070/article/details/128728914

标签:Java,servlet
0
投稿

猜你喜欢

  • 2022编程语言需求排名出炉:第一不是Python,也不是Java

    2023-10-11 19:09:17
  • java操作mongodb示例分享

    2023-09-07 19:00:02
  • Android仿微信键盘切换效果

    2022-05-01 08:06:41
  • Spring mvc拦截器实现原理解析

    2023-06-06 15:26:33
  • Java main 方法面试题的详细整理

    2023-11-24 23:53:30
  • c# 实例——绘制波浪线(附源码)

    2023-03-02 12:53:54
  • 浅谈 java中ArrayList、Vector、LinkedList的区别联系

    2022-04-25 23:26:54
  • Android仿微信联系人字母排序效果

    2021-10-01 16:06:25
  • 解决Android Studio 3.0 butterknife:7.0.1配置的问题

    2021-08-20 09:23:05
  • Java实现贪吃蛇游戏(1小时学会)

    2023-06-29 00:54:02
  • 使用java的HttpClient实现多线程并发

    2022-09-19 20:35:55
  • 如何获取Android设备挂载的所有存储器

    2023-08-16 12:44:41
  • C#多线程中的互斥锁Mutex

    2022-04-26 06:11:55
  • Maven的生命周期与自定义插件实现方法

    2022-04-06 20:13:48
  • C# Winform消息通知之系统本地通知local toast notification

    2023-02-01 04:14:02
  • springmvc实现json交互-requestBody和responseBody

    2023-02-26 17:10:45
  • Android 三种实现定时器详解及实现方法

    2021-11-18 21:53:42
  • Android NDK开发简单程序分享(Hello Word!)

    2021-05-29 19:46:22
  • Android的ListView多选删除操作实现代码

    2023-06-25 22:24:38
  • 【java 多线程】守护线程与非守护线程的详解

    2023-11-29 01:35:29
  • asp之家 软件编程 m.aspxhome.com