网络推广员是什么工作/整站优化 mail
目录:
- 验证码 和 文件的“上传”与“下载”
- 1.验证码
- 1.1在JSP上开发验证码
- 2.“文件上传” 和 “文件下载”
- 2.1“文件上传 ”
- 2.2“文件下载”
验证码 和 文件的“上传”与“下载”
1.验证码
- 验证码:就是由服务器生成的一串随机数字或符号形成一幅图片,图片应该传给客户端,为了防止客户端用一些程序进行自动识别,在图片中通常需要添加一些干扰因素,由用户用肉眼来识别。
- 验证码在网络投票、交友论坛、网上商城等业务经常用来防止恶意客户侵入、恶意灌水、刷票。
1.1在JSP上开发验证码
loginForm.jsp
<%@ page language="java" pageEncoding="gb2312" %> <html> <head><title>第十三章 loginForm.jsp</title> </head> <body> 欢迎登录本系统<br> <form action="/com/servlets/ValidateServlet" method="post">请输入你的账号: <input type="text" name="account"/><br>请输入你的密码: <input type="password" name="password"/><br>验证码: <input type="text" name="code" size="10"/><br><!-- 当验证码当做图片处理 --><img src="validate.jsp" border=0><input type="submit" value="登录"> </form> </body> </html>
web.xml
<?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"><!-- 访问到ValidateServlet.java类 --> <servlet><servlet-name>validateServlet</servlet-name><servlet-class>com.servlets.ValidateServlet</servlet-class> </servlet><servlet-mapping><servlet-name>validateServlet</servlet-name><url-pattern>/com/servlets/ValidateServlet</url-pattern> </servlet-mapping> </web-app>
ValidateServlet.class
/* 验证输入的验证码是否正确 */ public class ValidateServlet extends HttpServlet { //用来验证表单登录的servletprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//得到提交的验证码String code = request.getParameter("code");//获取session中的验证码HttpSession session = request.getSession();String randomStr = (String)session.getAttribute("randomStr"); //获取存储在session中的验证码response.setCharacterEncoding("gb2312");PrintWriter out = response.getWriter();//判断输入的验证码和生成的验证码是否相等if (!code.equals(randomStr)) {out.println("验证码错误!"); //在页面上显示} else {out.println("验证码正确!跳转到LoginServlet...");}} }
validate.jsp
<%@ page import="java.awt.image.BufferedImage" %> <%@ page import="java.awt.*" %> <%@ page import="java.util.Random" %> <%@ page import="javax.imageio.ImageIO" %> <%@ page contentType="text/html;charset=gb2312" language="java" %> <html> <head><title>第十三章 validate.jsp</title> </head> <body> <%response.setHeader("Cache-Control","no-cache");int width = 60;int height = 20;//1.实例化cBufferImage 对象BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//2.从BufferImage中获取画笔Graphics类对象Graphics g = image.getGraphics();//设置画笔的属性g.setColor(new Color(200,200,200)); //设置颜色 / 设置背景颜色g.fillRect(0, 0, width, height); //设置生成的图片为长方形//3.生成随机数(4位数字)Random random = new Random();//这个随机数没有“种子”,用默认种子int randomNum = random.nextInt(8999) +100; //左闭右开//转换为字符串String randomStr = String.valueOf(randomNum);//存入Session中session.setAttribute("randomStr",randomStr);//将验证码显示在图像中//用画笔画出干扰线和干扰电g.setColor(Color.black);g.setFont(new Font("", Font.PLAIN, 20));g.drawString(randomStr,10,17);//产生干扰点for (int i = 0; i < 100; i++) {int x = random.nextInt(width);int y = random.nextInt(height);g.drawOval(x,y,1,1);//干扰点为一个一个圆}//输出图像到页面response.setContentType("image/jpeg");ImageIO.write(image, "JPEG", response.getOutputStream());out.clear();out = pageContext.pushBody(); %> </body> </html>
loginForm_refresh.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>第十三章: loginForm_refresh.jsp</title> </head> <body> <%-- 具有刷新验证码功能的loginForm页面 --%> <%-- 重新刷新验证码--%> <script>function refresh() {//当点击验证码图片时就重新刷新img标签中的url//让url后面带一个随机数参数,来让每次访问的路径不一样,得到的验证码也不一样loginForm.imgValidate.src = "validate.jsp?id=" + Math.random() +";"} </script> 欢迎登录本系统<br> <%-- action中访问的为web.xml 中servlet标签中的 url --%> <form name="loginForm" action="/com/servlets/ValidateServlet" method="post">请输入你的账号: <input type="text" name="account"/><br>请输入你的密码: <input type="password" name="password"/><br>验证码: <input type="text" name="code" size="10"/><br><!-- 当验证码当做图片处理 ,为该img标签添加"点击事件",让它被点击时,刷牙验证码--><img name = "imgValidate" src="validate.jsp" οnclick="refresh()" border=0><input type="submit" value="登录"> </form> </body> </html>
2.“文件上传” 和 “文件下载”
2.1“文件上传 ”
- 在Java Web应用开发中,文件的上传是必不可少的,如上传简历、上传图片、上传资源代码等。
- 要实现文件上传,要导入 : jspsmart文件上传包。
fileTest.jsp :
<%@ page language="java" import="java.util.*" pageEncoding="gb2312" %> <html> <head><title>第十三章 文件上传: fileTest.jsp</title> </head> <body> <form method="post" name="upload"> 请你选择一个文件进行上传:<input type="file" name="myFile"><br><input type="submit" value="上传"><br> </form> </body> </html>
web.xml
<?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>uploadServlet</servlet-name><servlet-class>com.servlets.UploadServlet</servlet-class> </servlet><servlet-mapping><servlet-name>uploadServlet</servlet-name><url-pattern>/UploadServlet</url-pattern> </servlet-mapping> </web-app>
UploadServlet.java
public class UploadServlet extends HttpServlet { //关于文件上传的Servlet类@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建SmartUpload对象,其负责文件的上传SmartUpload smartUpload = new SmartUpload();//初始化SmartUpload对象//获得ServletConfig对象ServletConfig config = this.getServletConfig();smartUpload.initialize(config, request, response);try {//上传文件--调用.upload()方法上传文件smartUpload.upload();//获得上传的文件File file = smartUpload.getFiles().getFile(0);//保存文件file.saveAs("/S:/aaa/"+file.getFileName(),smartUpload.SAVE_PHYSICAL); //这个是存储在S盘中(物理路径存储)//file.saveAs("/img/"+file.getFileName(),smartUpload.SAVE_VIRTUAL);} catch (SmartUploadException e) {e.printStackTrace();}//上传成功了,保存成功上传的信息String msg = "Upload Success!";request.setAttribute("msg", msg);RequestDispatcher rd = request.getRequestDispatcher("/upload/第十三章/文件上传/uploadForm.jsp"); //上传完之后又回来点击内容进行上传的页面rd.forward(request, response);} }
2.2“文件下载”
download2.jsp
<%@ page language="java" pageEncoding="GB2312" import="java.util.*" %> <html> <head> <title>第十三章 文件下载: download2.jsp</title> </head> <body> 文件下载 <hr> <a href="/第十三章/文件下载/download.jsp?filename=java.jpg">下载</a> </body> </html>
download.jsp
<%@ page language="java" pageEncoding="gb2312" import="java.util.*" %> <html> <head><title>文件下载: download.jsp</title> </head> <body> <%String filename = request.getParameter("filename"); //获得url传参传递过来的参数//告诉客户端出现下载框,并指定下载框中的文件名response.setHeader("Content-Disposition","attachment;filename="+filename);//指定文件的类型response.setContentType("image/jpeg"); //jpeg//指定文件RequestDispatcher rd = request.getRequestDispatcher("/S:/aaa/"+filename);//rd.forward(request,response); %> </body> </html>
此处给出常见文件对应的contentType类型,主要包括以下几种:
bmp : “application/x-bmp”;
doc: “application/msword”;
exe: “application/x-msdownload" ;
jpg: “image/jpeg" ;
mdb: “application/ msaccess”;
mp3: " audio/mp3”
pdf:”application/pdf";
ppt:”application/ vnd. ms-powerpoint";
rm:”application/vnd. rn- realmedia";
rmvb: “application/vnd. rn-realmedia-vbr”;
swf: “application/ x-shockwave-flash”;
xIs: “application/vnd. ms-excel”。
相关文章:

JavaWeb | 验证码 、 文件的“上传”与“下载”
目录: 验证码 和 文件的“上传”与“下载”1.验证码1.1在JSP上开发验证码 2.“文件上传” 和 “文件下载”2.1“文件上传 ”2.2“文件下载” 验证码 和 文件的“上传”与“下载” 1.验证码 验证码:就是由服务器生成的一串随机数字或符号形成一幅图片&am…...

服务器感染了.halo勒索病毒,如何确保数据文件完整恢复?
导言: 随着科技的不断发展,网络安全问题日益突出,而.halo勒索病毒正是这个数字时代的一大威胁。本文将深入介绍.halo勒索病毒的特点,解释在受到攻击后如何有效恢复被加密的数据文件,并提供一些建议以预防未来可能的威…...

docker安装elasticsearch8.5.0和kibana
服务器环境,centos7 一、安装elasticsearch 1. 创建一个es和kibana通用的网络 docker network create es-net 2. 拉取es镜像,这里选择8.5.0版本 docker pull elasticsearch:8.5.03. 创建挂载目录,并授权 mkdir /usr/local/install/ela…...

如何使用内网穿透工具实现公网访问GeoServe Web管理界面
文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址6. 结语 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除…...

koa2项目中封装log4js日志输出
1.日志输出到控制台 npm i log4js -D 封装log4js文件: 注意:每次都要重新获取log4js.getLogger(debug)级别才能生效 const log4js require("log4js");const levels {trace: log4js.levels.TRACE,debug: log4js.levels.DEBUG,info: log4js.…...

C# WPF上位机开发(抽奖软件)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 每到年末或者是尾牙的时候,很多公司都会办一些年终的清楚活动,感谢员工过去一年辛苦的付出。这个时候,作为年会…...

搭建部署Hadoop2.x和3.x的区别
文章目录 2.x 和 3.x 的区别Java最小支持版本常用的端口号配置文件Classpath隔离NodeManager重连 进入官网自行查阅 2.x 和 3.x 的区别 Java最小支持版本 Hadoop 2.x:2.7 版本需要 Java 7,2.6 以及更早期版本支持 Java 6Hadoop 3.x:最低要求…...

Java爬虫攻略:应对JavaScript登录表单
问题背景 在进行网络抓取数据时,经常会遇到需要登录的网站,特别是使用JavaScript动态生成登录表单的情况。传统的爬虫工具可能无法直接处理这种情况,因此需要一种能够模拟用户行为登录的情况解决方案。 在实际项目中,我们可能需要…...

基于单片机的电子密码锁设计
1.设计任务 利用AT89C51单片机为核心控制元件,设计一个简易的电子密码锁,可设置四位密码,输入错误三次,报警灯亮起(红灯亮起),输入正确,绿灯闪烁三次。可通过LCD显示屏查看密码&…...

ChatGPT学习笔记
1 ChatGPT架构图 (ChatGPT_Diagram.svg来自于【OpenA | Introducing ChatGPT】) 2 模型训练 ChatGPT在训练时使用了PPO方法;...

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记
One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记 Abstract 一对一(o2o)标签分配对基于变换器的端到端检测起着关键作用,最近已经被引入到全卷积检测器中,用于端到端密集检测。然而,o2o可能因为…...

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)
项目场景: 最近需要使用Neo4j图数据库,因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像,执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…...

【数据分析 | Numpy】Numpy模块系列指南(一),从设计架构说起
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...

多人聊天室
多人聊天包 由于要先创建服务面板,接收客户端连接的信息,此代码使用顺序为先启动服务端,在启动客户端,服务端不用关,不然会报错。多运行几次客户端,实现单人聊天 1.创建服务面板 package yiduiy;import j…...

智慧园区可视化综合管理平台建设方案,智能化、数字化才是关键
园区作为城市的基本单元,是经济发展的重要载体。随着我国经济的快速发展,各类工业园区、办公园区等园区的规划建设也越来越多。伴随着互联网新兴技术的发展和应用,智慧园区已成为当今城市规划和社会发展的关注焦点,今天我们来介绍…...

kepler.gl部署在线说明文档
1 概述 1.1 介绍 1、Kepler.gl 是一个强大的开源地理空间分析工具,用于大规模数据集的可视化。它由 Uber 的数据可视化团队开发,并且是基于 Web 技术构建的。Kepler.gl 涉及到以下几个主要技术领域: WebGL: Kepler.gl 通过 WebGL 进行渲染…...

Java程序员,你掌握了多线程吗?
文章目录 01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写作末尾 摘要:互联网的每一个角落,无论是大型电商平台的秒杀活动,社交平台的实时消息推送,还是在线视频平台的流…...

Android 11.0 长按按键切换SIM卡默认移动数据
Android 11.0 长按按键切换SIM卡默认移动数据 近来收到客户需求想要通过长按按键实现切换SIM卡默认移动数据的功能,该功能主要通过长按按键发送广播来实现,具体修改参照如下: 首先创建广播,具体修改参照如下: /vend…...

Kafka集群调优+能力探底
一、前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐;4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另外,一般…...

netcore swagger 错误 Failed to load API definition
后端接口报错如下: 前端nswag报错如下: 根据网上查询到的资料说明,说一般swagger这种错误都是控制器里有接口代码异常造成的,通常是接口没有加属性Attribute, 比如[HttpPost("Delete")]、[HttpGet("Del…...

UDP Socket API 的讲解,以及回显服务器客户端的实现
文章目录 UDPDatagramSocktet APIDatagramPacket API UDP 客户端服务器实现 UDP 先来认识一下 UDP 的 socket api,两个核心的类:DatagramSocket、DatagramPacket. DatagramSocktet API 是一个 socket 对象。 什么是 socket? 操作系统&…...

数据结构与算法-D7栈实现及应用
顺序栈 具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top完成操作 sqstack.h stack_creat stack_push stack_empty stack_full 1、判断栈是否为空 2、top--,取:data[top1] stack_top stack_clear stack_fre…...

蓝桥杯真题:分巧克力(二分法)-Java版
由题目可知,该题的最终结果具有单调性,边长越大,可分蛋糕越少 可以用二分模板的向右找: 整数二分 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int n,k; //n个块蛋糕,k个学生static int N 10…...

c++面试题
1.static的使用 1)修饰局部变量:在函数内部使用static修饰局部变量,会使它成为静态局部变量。静态局部变量只会被初始化一次,且只有在第一次调用该函数时才会被初始化,之后每次调用该函数时都会保留上一次的值.从原来…...

高精度加法,减法,乘法,除法(上)(C语言)
前言 加,减,乘,除这些运算我们自然信手捏来,就拿加法来说,我们要用c语言编程算ab的和,只需让sum ab即可,可是这是局限的,我们都知道int的表示的最大值为2147483647(32位…...

C++新经典模板与泛型编程:SFINAE特性的信息萃取
用成员函数重载实现is_default_constructible 首先介绍一个C标准库提供的可变参类模板std::is_default_constructible。这个类模板的主要功能是判断一个类的对象是否能被默认构造(所谓默认构造,就是构造一个类对象时,不需要给该类的构造函数…...

java单人聊天
服务端 package 单人聊天;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import…...

nodejs环境安装
node安装 wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v20.8.0/node-v20.8.0-linux-x64.tar.gz tar xf node-v20.8.0-linux-x64.tar.xz -C /usr/local/ ln -s node-v20.8.0-linux-x64 nodevim /etc/profile.d/node.sh export PATH$PATH:/usr/local/node/binnp…...

R语言进行正态分布检验
查了很多资料,还是比较模糊 Kolmogorov-Smirnov检验(K-S检验)广泛用于正态性检验和其他分布的拟合检验。适用于中等到大样本。 Lilliefors检验是K-S检验的一种变体,专门为小样本设计。其通过使用更准确的临界值来提高对小样本的适…...

什么是SPA(Single Page Application)?它的优点和缺点是什么?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...