Java servlet后端开发超详细教程
作者:练习时长六年半的Programmer 发布时间:2022-11-01 06:13:50
java后端介绍
今天我正式开始了一个新话题,那就是 Web。目前我主要会介绍后端。作为后端的老大哥 java,也有很多后端框架,比如大家耳熟能详的 spring 等。今天来带大家入门 servlet,不管是学生,刚毕业或是已经工作自学编程的人群都能看懂。
准备工作
目前我们使用的服务器是 Tomcat,大家可以先安装 Tomcat,这一步网上有很多教程,我不再说了。然后还需要下载 idea,配置 Tomcat 和 jdk,这些网上都有,如果配置遇到问题可以私信我。
Servlet项目创建
大家先用idea 创建 web 项目,创建好后应是这样。
现在在你的 src 目录下创建一个package,并命名为 com.xxxx.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 右上角运行图标
然后 idea 会打开 http://localhost:8080/servlet_war_exploded/
但是你看不到任何内容,因为你没有访问你刚才设置的路径。
访问 http://localhost:8080/servlet_war_exploded/servlet01
你会看到
这就成功了
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


猜你喜欢
- C#生成指定范围内的不重复随机数// Number随机数个数// minNum随机数下限// maxNum随机数上限public int[]
- C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作1.调用打印机设置如果你想在打印前设置打印机属性(或者切换打印机),请务必添
- 想要在IntelliJ IDEA编辑器里面修改,新建Class文件或者jsp文件或者js文件时候文件头自带的Created by {User
- 默认格式public class MyClass implements Serializable{...}序列化:ObjectOutputS
- 这个功能,大家也都可以去百度以下,千篇一律都自己写的(抄的)封装好的公共类,此处还是得膜拜下原创的大佬,可以花时间去搞这个,我看着都头皮发麻
- 本文实例为大家分享了Android颜色渐变动画效果的实现代码,供大家参考,具体内容如下前言案例效果的实现比较简单,利用Android自带的颜
- 在之前文章的铺垫下,再为大家分享一篇:Android手势密码,附源码下载,不要错过。源码下载:http://xiazai.jb51.net/
- 引言mysql 和 oracle 插入的时候有一个很大的区别是:oracle 支持序列做 id;mysql 本身有一个列可以做自增长字段。m
- 本文实例讲述了C#自定义签名章实现方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Coll
- 普通的excel列表,easyexcel读取是没有什么问题的。但是,如果有合并单元格,那么它读取的时候,能获取数
- 本文实例分析了C#中float的取值范围和精度。分享给大家供大家参考。具体分析如下:float类型的表现形式:默认情况下,赋值运算符右侧的实
- 第9版《Java核心技术卷Ⅰ》的第607页介绍了一个方法:Collections类中的sort方法可以对实现了List接口的集合进行排序。这
- 前言在引入 fl_chart 绘制图表的时候,看到插件有下面这样的动效,随机散乱的圆点最后组合成了 Flutter 的 Logo,挺酷炫的。
- 近日,开发者头条上分享了一篇“小米java第二轮面经”,有很多的java程序员表示非常有兴趣。下面就和各位分享小米java第二轮面经:0、谈
- 现在很多app的首页都有一个倒计时控件,比如说3秒或者5秒自动跳转界面,或者点击控件直接跳过首先,自定义控件CircleProgressba
- Java中 获取指定字符串在另一个字符串中出现的次数,供大家参考,具体内容如下/** * @param args */ public s
- 在AndroidManifest.xml中加入下面这段话后,<provider android
- 前言:上午写代码时还好好的,下午不知道怎么回事突然就不显示logcat日志了,觉得很奇怪,于是开始找各种解决办法!现象如图所示,logcat
- 比如有海量的文本文件,如订单,页面点击事件的记录,量特别大,很难搞定。那么我们该怎样解决海量数据的计算?1、获取总行数2、计算每个文件中存多
- 序列化和反序列化Java是面向对象的语言,与其他语言进行交互(比如与前端js进行http通信),需要把对象转化成一种通用的格式比如json(