入门JavaWeb之 Response 验证码和重定向
Response 写验证码:
package com.demo.response;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.IOException;
import java.nio.IntBuffer;
import java.util.Random;public class Image extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//浏览器5s刷新resp.setHeader("refresh","5");//在内存中创建一个图片,设置宽高颜色BufferedImage bufferedImage = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);//得到图片 Graphics 是一支笔Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics();//设置图片的背景颜色graphics.setColor(Color.black);graphics.fillRect(0,0,80,20); //填充//给图片写数据graphics.setColor(Color.white);graphics.setFont(new Font(null,Font.ITALIC,20));graphics.drawString(num(),0,20);//告诉浏览器,这个请求用图片的方式打开resp.setContentType("image/jpg");//网站存在缓存,不让浏览器缓存resp.setDateHeader("expores",-1);resp.setHeader("Cache-Control","no-cache");resp.setHeader("Pragma","no-cache");//把图片写给浏览器ImageIO.write(bufferedImage,"jpg",resp.getOutputStream());}//生成随机数private String num(){Random random = new Random();String num = random.nextInt(9999)+"";StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < 4-num.length(); i++) {stringBuffer.append("0"); //不足用0填充数字}return stringBuffer.toString() + num;}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
记得先注册后运行
<servlet><servlet-name>img</servlet-name><servlet-class>com.demo.response.Image</servlet-class></servlet><servlet-mapping><servlet-name>img</servlet-name><url-pattern>/img</url-pattern></servlet-mapping>
Response 重定向:
一个 web 资源接收到客户端的请求后,它会通知客户端去访问另一个 web 资源,这个过程叫做重定向
sendRedirect 重定向
public class Redirect extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//resp.sendRedirect("/response/index.jsp");resp.sendRedirect("/response/img"); //重定向}
注意路径前要加自己命名的路径
web.xml 注册:
<servlet><servlet-name>re</servlet-name><servlet-class>com.demo.response.Redirect</servlet-class></servlet><servlet-mapping><servlet-name>re</servlet-name><url-pattern>/re</url-pattern></servlet-mapping>
浏览器输入后缀,将会跳转到另一个页面,地址栏改变,实现重定向
实现原理:
resp.setHeader("Location","/response/img");
resp.setStatus(302); //302重定向
一个响应头 Location、一个状态码 302

重定向和转发的区别:
相同点:页面都会实现跳转
不同点:
1.请求转发的时候,url 不会变化
2.重定向时,url 地址栏会发生变化
写个简单的提交重定向
修改 index.jsp
<%-- ${pageContext.request.contextPath}代表当前的项目 --%>
<form action = "${pageContext.request.contextPath}/login" method = "get">username: <input type = "text" name = "username"> <br>password: <input type = "password" name = "password"> <br><input type = "submit">
</form>
代码如下:
package com.demo.response;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class Request extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理请求String username = req.getParameter("username");String password = req.getParameter("password");resp.sendRedirect("/response/success.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
再写个跳转的 success.jsp
web.xml 注册:
<servlet><servlet-name>login</servlet-name><servlet-class>com.demo.response.Request</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>
注意 <url-pattern> 的路径名与 index.jsp 里的 ${pageContext.request.contextPath} 保持一致
运行,提交后进入 success 页面
相关文章:
入门JavaWeb之 Response 验证码和重定向
Response 写验证码: package com.demo.response;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse…...
2024-06-26 问AI: 在大数据模型中,deep speed 是什么?
文心一言 在大数据模型中,DeepSpeed是一个由微软开发并维护的开源深度学习优化库。其主要目的是提高大规模模型训练的效率和可扩展性,帮助开发者更有效率地管理及优化大模型的训练、部署任务。以下是DeepSpeed的主要特点和功能: 提高效率和…...
mobaxterm x11 转发Ubuntu mac
目录 royal tsx —— 一款Mac平台MobaXterm平替工具 mobaxterm x11 转发Ubuntu 软件 royal tsx —— 一款Mac平台MobaXterm平替工具 Royal Apps Termius Mac mobaxterm x11 转发Ubuntu 软件 所以直接在 ssh 的时候加上 - X 就可以了 ssh -X -p xxx usernameIP 运行 xclock …...
python数据分析实训任务三(‘职业’)
import pandas as pd import matplotlib.pyplot as plt data pd.read_csv(rC:\Users\XXGC\Desktop\职业2.csv,\ encodinggb2312) # 创建 DataFrame df pd.DataFrame(data) # 分析年龄和工资的关系 plt.scatter(df[年龄], df[工资]) plt.xlabel(年龄) pl…...
vscode连接SSH
1、安装Remote-SSH插件 2、点击左下角,选择SSH 3、点击连接到主机后,添加新的SSH主机,示例ssh 用户ip 4、点击服务器,输入密码登录服务器 5、可在远程资源管理器选项卡中查看 6、可以在ssh设置中打开ssh配置文件 config中的文件…...
金融科技行业创新人才培养与引进的重要性及挑战
金融科技行业作为金融与科技的深度融合产物,正以前所未有的速度改变着传统金融业的格局。在这一变革中创新人才的培养与引进成为了行业发展的核心驱动力。然而,尽管其重要性不言而喻,但在实际操作中却面临着诸多挑战。 一、创新人才培养与引进…...
【C++题解】1714. 输出满足条件的整数4
问题:1714. 输出满足条件的整数4 类型:简单循环 题目描述: 输出 1∼n 中含有数字 3 或者含有数字 5 ,且因数有 2 (即能被 2 整除)的所有整数。(n<1000) 输入: 从键盘输入一个…...
如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 先决条件 本教程假设您已经在Debian 7或类似的Linux发行版(如Ubuntu)上设置了您的droplet(VPS&#…...
Graphwalker基于模型的自动化测试
Graphwalker 基于模型的自动化测试 基于模型的自动化测试(Model-Based Testing,MBT)作为一种创新的测试方法,正逐渐受到广泛关注。Graphwalker 作为一款强大的基于模型的自动化测试工具,为我们提供了一种高效、全面的…...
Macbook M1 Fusion安装Debian/Linux
背景 本人主力工作电脑已经迁移到苹果芯片m1的macbook上,曾经尝试使用Fusion安装CentOS、OpenEuler、Ubuntu的一些版本,都没有安装成功。最近开始研究Linux/Unix系统编程,迫切需要通过VMware Fusion安装一台Linux操作系统的虚拟机。 Linux安…...
ERP收费模式是怎样的?SAP ERP是如何收费的?
一、购置SAP ERP系统的费用组成 1、软件费用 传统的ERP系统大多为许可式,即企业在购买ERP服务时付清所有费用,将ERP系统部署于自己的服务器中。根据所购买ERP系统品牌的不同,价格上也有一定的差异。采购ERP系统许可后,后续维护、…...
如何实现免交互
如何实现免交互 一、免交互 交互:我们发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应 免交互:间接的通过第三方的方式把指令传送给程序,不用直接的下达指令 Here Document免交互:这是命…...
浏览器userAgent大全及JS判断当前APP
文章目录 userAgent 检测PC/Mobile 浏览器 userAgent 大全Mobile APP userAgent 大全JS 判断当前 APP userAgent 检测 https://useragent.buyaocha.com/ PC/Mobile 浏览器 userAgent 大全 系统浏览器User-Agent字符串MacChromeMozilla/5.0 (Macintosh; Intel Mac OS X 10_12…...
11.异常(java版)
异常的概念 在日常开发时 代码在程序运行过程中 难免会出现一些其奇奇怪怪的问题 有时通过代码很难去控制 比如:数据格式不对、网络不流畅、内存报警等 在Java中 将程序执行过程中发生的不正常行为称为异常 比如我们之前写代码时经常会遇到的: 1.算术…...
单片机学习记录
一,单片机及开发板介绍 1,基本介绍 单片机,英文Micro Controller Unit,简称MCU内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(…...
flask的基本使用1
【 一 】Flask介绍 python 界的web框架 -Django:大而全,使用率较高 :https://github.com/django/django -FastAPI:新项目选择使用它:https://github.com/tiangolo/fastapi -flask:公司一些小项目使用它&a…...
如何编写时区源文件
0、背景 ① 修改TZ环境变量改变时区不能立即生效。要求设置时区后立即生效,只能用修改/etc/localtime方式。 ② 原文作者 Bill Seymour,想要查看原文,点击官网地址https://www.iana.org/time-zones下载 zic 源码,源码目录中的 tz…...
植物大战僵尸杂交版v2.1最新整合版,附PC端+安卓端+iOS端安装包+修改器+安装教程!
嘿,大家好,我是阿星,今天要跟大家聊聊一款游戏,它不是那种让人眼花缭乱的大制作,也不是那种能让人回味无穷的艺术作品,但它在阿星心里,绝对是神作中的佼佼者。没错,它就是《植物大战…...
【5G射频基本架构】
平台框架 平台演进及搭配 5G NR频谱 NSA/SA/ENDC...
4.任务调度
1.基本知识 2.任务的状态 FreeRTOS中任务共存在4种状态:Running 运行态 当任务处于实际运行状态称之为运行态,即CPU的使用权被这个任务占用(同一时间仅一个任务处于运行态)。Ready 就绪态 处于就绪态的任务是指那些能够运行&…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
