Servlet还不会?那就看这篇文章吧

news2025/2/1 6:57:47

一. Servlet是什么?

Servlet是Server Applet的简称,也就是服务程序。当然,杨哥习惯称它为"服务连接器"。

像上面这么说,大家可能会有所疑惑:什么是服务程序?可能有些人对这个还是不太懂,那么接下来杨哥就带大家认识下这个服务器程序。Servlet是运行在服务器上的一个小程序,用来处理服务器请求,主要就是通过在浏览器中输入网络地址进行访问来实现的。在这整个访问过程中,我们通过浏览器发送访问请求,服务器接收请求,服务器完成后端的一些处理操作,最后服务器将信息反馈(响应)给浏览器。这种处理模式,也就是我们常说的B/S软件结构,即浏览器和服务器端的交互模式。

杨哥给大家总结一下:Servlet是对请求作出处理的一种组件。它运行在服务器之上,当然这个服务器能够支持Java。

我们来张图片看,会更容易理解一些。

二. Servlet开发后端服务程序

接下来,杨哥会带领大家进入Servlet的开发流程。

2.1 创建Maven项目

我们先创建一个Maven项目,杨哥在idea中给大家进行创建。

这里文末要选择一个servlet的jar包。

2.2 配置自己的maven本地仓库

此处,杨哥以自己的本地地址仓库为例,在File--->Settings 里面设置。

三. 编码实现

有些同学在编码时会觉得很懵圈,我明明和杨哥的代码一样,为啥我的servlet就不能运行呢?其实这还是不细心导致的!我们在写代码时应该全神贯注、仔细认真!杨哥给大家总结出一个开发Servlet的流程,"一类,二配,三编,四运行"!

3.1 一类

所谓的”一类“,就是要自定义一个Java类,继承自HttpServlet,并重写doGet和doPost方法。

package com.qf.servletdemo;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author 高圆圆
 * @date 2022/10/17 19:37
 */
public class MyFirstServlet  extends HttpServlet {

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

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

杨哥提醒:doGet方法会接收前端的get请求,doPost方法会接收前端的post请求。这两个方法在接收前端传递过来的参数时,处理方式是一样的,所以doGet或者doPost方法中都可以去调用对方。

3.2 二配

所谓的”二配“,就是在项目下的web.xml 文件中配置Servlet。

我们需要配置servlet-name,建议和当前类名相同即可。还有servlet-mapping进行映射配置,里面的servlet名称和上面一致;url-pattern以"/"开头,一般要做到见名知意,就是服务器的后端地址。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    
    <servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>com.qf.servletdemo.MyFirstServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>MyFirstServlet</servlet-name>
        <url-pattern>/first</url-pattern>
    </servlet-mapping>
</web-app>

3.3 三编

所谓的”三编“,就是要在代码中处理前端发来的请求,编写相关代码。此处杨哥仅仅是做一个简单的测试案例,实际开发时,代码可能会比较复杂。

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

    //解决服务器响应的中文乱码
    resp.setContentType("text/html;charset=utf-8");
    //处理前端的相关操作
    //...
    
    System.out.println("hello,Servlet") ;
    //响应给浏览器信息
    resp.getWriter().write("hello,这是我第一个Servlet");
}

3.4 四运行

所谓的”四运行“,就是在创建项目时,生成我们项目的上下文路径。杨哥以这个项目为例:

http://localhost:8080/servlet_demo_war_exploded/

启动服务器之后,在这个url地址后面,跟上我们的后端地址,通过浏览器直接请求服务器,服务器会给我们返回响应:"hello,这是我第一个Servlet"

控制台会打印信息如下:

四. Servlet应用

刚才是使用xml实现的Servlet配置,但在实际应用中,我们还可以使用@WebServlet注解进行配置开发。

4.1 登录页面

这里的action就是我们请求后端的地址。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="/servlet_demo_war_exploded/login" method="get">
  <input type="text" name="username" placeholder="请输入用户名" /><br/>
  <input  type="password" name="password" placeholder="请输入密码" /><br/>
  <input type="submit" value="登录"/>
</form>
</body>
</html>

4.2 编写后端程序Servlet

杨哥提醒:此时我们使用@WebServlet注解的方式,代码量会更少,但xml配置是能够体现最原理性的东西,注解方式只是进行了优化。

@WebServlet("/login")
public class LoginServlet  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接收前端的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //测试
        System.out.println(username+"---"+password);
    }
    
}

4.3 启动运行,访问前端登录页面

用户输入用户名和密码,请求后端地址后,会在控制台输出用户名和密码。我们就可以通过用户名和密码去连接访问数据库,来获取用户的信息。此处,具体的业务操作杨哥就不举例了。

好吧,大家可能又有疑惑了,杨哥代码中的用户名为啥写的是高圆圆?这个......大家自己去猜吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我国汽车配件行业需求空间较大 国产品牌配件市场份额逐渐提升

根据观研报告网发布的《2022年中国汽车配件行业分析报告-行业全景调研与发展战略咨询》显示&#xff0c;根据Markline全球汽车信息平台统计&#xff0c;2020年&#xff0c;全球整车市场产量规模约为7769.80万辆。对于整车厂而言&#xff0c;在委托上游制造商按照要求供应零部件…

软文营销对企业品牌推广的好处有哪些?

众所周知&#xff0c;互联网改变了我们的生活&#xff0c;他的横空出世一度改变我们的工作模式&#xff0c;又跟我们生活息息相关。如今&#xff0c;随着网络的深入发展&#xff0c;网络对企业的营销模式也产生了巨大的改变。其中网络软文营销成为了当下众多企业的主要营销手段…

Web漏洞扫描-Appscan安装配置及扫描

软件介绍 AppScan 是一种 Web 应用程序安全扫描工具&#xff0c;可帮助组织识别和修复其 Web 应用程序中的漏洞。它结合使用自动和手动测试技术来识别漏洞&#xff0c;例如跨站点脚本 (XSS)、SQL 注入和不安全的文件上传等。 AppScan 可用于在开发生命周期的不同阶段扫描 Web…

Unity 摄像机

摄像机分为两种 &#xff08;1&#xff09;透视摄像机 &#xff08;2&#xff09; 正交摄像机 一般3D游戏使用的透视多一点&#xff0c;2D游戏使用正交多一点。 相机参数 清除标记&#xff1a; &#xff08;1&#xff09;天空盒 &#xff08;2&#xff09;仅深度&#xff…

Problem J. Prime Game(数学 贡献)[2018-2019 ACM-ICPC, Asia Nanjing Regional Contest]

题目如下&#xff1a; 题解 or 思路 我们可以发现暴力去求解是无法完成的 O(n2)O(n^2)O(n2) 我们可以从贡献出发&#xff0c;计算每一个位置上的质因子所做的贡献 我们可以先通过分解质因子&#xff0c;记录每一个质因子的位置&#xff0c;在这里使用 vectorvectorvector 容器…

力扣(LeetCode)1760. 袋子里最少数目的球(C++/C)

二分查找 直观思维是对每个袋子进行分球操作&#xff0c;这样枚举似乎无从下手。逆向思维&#xff0c;从 111 开始&#xff0c;枚举袋子里球的最大数量&#xff0c;可以计算划分每个袋子需要的最小次数&#xff0c;通过最小次数之和&#xff0c;判断方案是否可行。由于从小到大…

python3安装PIL库的经历

前提&#xff1a;我是在电脑上同时装了python2和python3 两个环境。详见 Windows环境同时安装多个版本的Python解释器&#xff08;python2和python3&#xff09;&#xff08;超详细&#xff09;_落墨画雪的博客-CSDN博客_安装多个版本python 首先&#xff0c;PIL官方版不支持py…

程序员能干到退休吗?写了40年代码的「骨灰级码农」给出了15条建议

寒冬、裁员、降薪、996、秃头、最近几年这些词汇不断在各位码农的周围盘旋。 很多程序员对自己目前的状态干到困惑和焦虑&#xff0c;而且这好像是国内外程序们都会遇到的问题。 最近&#xff0c;在Reddit上&#xff0c;一位干了40年程序员的网友发表了对这一问题的看法&#x…

辛二酰苯胺异羟肟酸/葛根素/黄芩苷β-环糊精(β-CD)环糊精包合物/β环糊精二棕榈脂质体制备

这里给大家分享的科研内容是辛二酰苯胺异羟肟酸/葛根素/黄芩苷β-环糊精(β-CD)环糊精包合物/β环糊精二棕榈脂质体的制备&#xff0c;和小编一起来看&#xff01; 黄芩苷β-环糊精(β-CD)环糊精包合物脂质体制备方法&#xff1a; 采用傅里叶红外变换光谱法(FTIR)确认了黄芩苷…

工控CTF之协议分析4——MQTT

协议分析 流量分析 主要以工控流量和恶意流量为主&#xff0c;难度较低的题目主要考察Wireshark使用和找规律&#xff0c;难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律&#xff0c;难可以难得五花八门 常见的工控协议有&#xff1a;Modbus、MMS、IEC60870、…

Appium基础 — Chrome Inspect定位工具

1、Chrome Inspect介绍 Chrome Inspect定位工具是用来抓取app中Webview页面的。 为了项目的需求&#xff0c;为了更好的保证效果和布局跨平台&#xff0c;Android&H5混合开发一般是我们不错的选择。Google浏览器中的Chrome Inspect定位工具&#xff0c;提供了一个移动端W…

(六)docker容器数据卷的理解和使用

目录 一、容器数据卷是什么 二、容器数据卷能干吗 三、宿主vs容器之间映射添加容器卷 四、读写规则映射添加说明 五、卷的继承和共享 一、容器数据卷是什么 Docker将运行的环境打包形成容器运行&#xff0c; Docker容器产生的数据&#xff0c;如果不通过docker commit生成…

【软件测试】快速迭代的敏捷项目?测试怎么做?测试人怎么提升自我价值......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 提到敏捷项目时&…

【嵌入式】Linux开发工具arm-linux-gcc安装及使用

知识架构及层次 — 程序编译及调试 嵌入式交叉编译器安装配置 宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统&#xff08;平台&#xff09;相同的环境下运行的目标代码&#xff0c…

【2023 海光 笔试题】~ 题目及参考答案

文章目录1. 前言2. 题目 & 答案第1题第2题3. 回忆杀4. 关于存储芯片声明1. 前言 今天分享的是海光的关于IC验证的笔试部分题目&#xff01;&#xff01;&#xff01;名称如标题所示&#xff0c;希望大家正确食用&#xff08;点赞转发评论&#xff09; 本次笔试题一共三部分…

l2逐笔接口如何如何查询委托明细?

l2逐笔接口进出行查询逐笔委托明细目前只支持电脑端&#xff0c;需要在登录进页面后在个股分时页面的右边需要双击或回车操作&#xff0c;找到行情资讯单元&#xff0c;再选择Level2单元。并且l2逐笔接口对A股的数据调用就是利用api结构来验证和存储数据&#xff0c;相当于一个…

leetcode.1760 袋子里最少数目的球 - 反向二分(二分答案)

1760. 袋子里最少数目的球 思路&#xff1a; 你的开销是单个袋子里球数目的 最大值 &#xff0c;你想要 最小化 开销。 题目出现&#xff1a;最大值最小&#xff0c;最小值最大 则是二分题 已知开销值y越大&#xff0c;操作数越小&#xff0c;则问题具有单调性&#xff0c;可以…

微信小程序 | 小程序的事件处理

&#x1f5a5;️ 微信小程序 专栏&#xff1a;小程序的事件处理 &#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; ✨ 个人主页&#xff1a;CoderHing的个人主页 &#x1f340; 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

怎么智能配音?推荐几个比较实用的配音方法给你

现在我们的生活变得越来越便捷化&#xff0c;越来越多的新鲜事物出现在我们的眼前&#xff0c;比如配音。随着短视频的火爆&#xff0c;相信屏幕前的你也剪辑过视频吧。给视频剪辑的过程中&#xff0c;为视频中的文字内容进行配音是一个必不可少的剪辑步骤&#xff0c;这样可以…

数字孪生智慧场馆项目应用场景展示

近年来,发展"数字经济"和建设"数字孪生城市"相继被提升为国家发展战略, 如何运用数字孪生技术活化体育场馆运用场景成了场馆智慧化建设道路上需要思考的问题。 数字孪生智慧场馆项目 北京智汇云舟科技有限公司成立于2012年&#xff0c;专注于创新性的“视…