案例-03下载
需求分析
页面显示超链接
点击超链接后弹出下载提示框
完成图片文件下载
分析在前端页面点击标签通过href进行获取链接指向的来源。
超链接指向的资源如果能够被浏览器解析,则直接在浏览器中展示
如果不能解析,则弹出下载框
弹出下载框需要设置content-disposition:
1content-disposition:attachment;filename=xxx
步骤
定义页面,编辑超链接href属性,指向servlet,传递资源名称filename
书写servlet
获取文件名称
使用字节输入流加载文件进内存
指定response的响应头:
1content-disposition:attachment;filename=xxx
4. 将数据写出到response输出流
代码下载页面download.html12345678910111213141516<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
案例-02验证码(html,servlet,Response对象)
需求分析
本质上是图片,用来防止恶意表单注册。
通过img标签,src为servlet的 路径
步骤
书写静态页面login.html
img标签,src为servlet路径。再写一个a标签。两者都绑定点击事件,点击后图片进行刷新。
书写servlet
通过ImageIO将写好的img输出到页面流里面去(response.getOutPutStream)
12//将图片写入到浏览器页面上去ImageIO.write(img,"jpg",response.getOutputStream());
代码登录页面login.html1234567891011121314151617181920212223242526<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注册</title> <script> window.on ...
案例-01登录(mysql,druid连接池技术、JDBCTemplate、servlet)
需求分析
编写login.html登录页面
username & password 两个输入框
使用Druid数据库连接池技术,操作mysql中的user表
使用JdbcTemplate技术封装JDBC
登录成功跳转到SuccessServlet
展示:登录成功!用户名,欢迎您xxx用户
登录失败跳转到FailServlet
展示:登录失败,用户名或者密码错误
步骤
导入数据库驱动包,Druid数据库连接池包,JdbcTemplate一系列包
编写登录页面login.html
定义User实体类
定义UserDao数据库连接对象
编写处理登录servlet以及展示页面成功和失败的servlet
代码项目目录
登录页面login.html123456789101112131415<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录</title ...
Tomcat&Servlet快速入门
web概念
软件架构
C/S:客户端/服务器端
B/s:浏览器/服务器端
资源分类
静态资源
所有用户访问后得到的结果是一样的,即被称为静态资源,比如html、css、javascript
动态资源
每个用户访问后得到的结果是不一样的,被称为动态资源。动态资源访问后需要转换为静态资源返回给浏览器端。比如:servlet、jsp、asp
网络通信三要素
IP
电子设备在网络中的唯一标识
端口
应用程序在计算机中的唯一标识
网络协议
规定了数据传输的规则
tcp:安全协议,三次握手。HTTP、FTP、SMTP、POP3
udp:不安全协议,速度快。DHCP、DNS、RIP、SNTP
web服务器软件
服务器
安装了服务器软件的计算机
服务器软件
接受用户请求、处理用户请求、做出响应
web服务器软件
接受用户请求、处理用户请求、做出响应。在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目。
Tomcat就是一种web服务器软件。
Tomcat使用
部署项目
直接放在webapps目 ...
Pandas快速入门
概述概念开源的数据挖掘库
用于数据探索
封装了matplotlib,numpy
案例知识点pd.DataFrame(ndarray)–创建DataFrame
pd.date_range()–创建日期
参数: start–开始日期
end–结束日期
perios–时间跨度
freq –统计时间方式
123456stock_change=np.random.normal(0,1,(10,5))stock_changestock_code=["第{}股票".format(i+1) for i in range(stock_change.shape[0])]stock_time=pd.date_range(start="20210103",periods=stock_change.shape[1])stock_c=pd.DataFrame(stock_change,index=stock_code, columns=stock_time)stock_c
DataFrame1234567对象.shap ...
Numpy 快速入门
一 Numpy概述1.定义 开源的python科学计算库
用于快速处理任意维度的数组
Numpy中存储对象ndarray
2.创建np.array
3.优势内存块风格,一体化存储
支持并行化运算
效率高与纯python–底层使用了c
二 N维数组 ndarray1.ndarray的属性属性名字 属性解释
ndarray.shape 数组维度元组
ndarray.ndim 数组维度
ndarray.size 数组中元素数量
ndarray.itemsize 一个数组元素的长度
ndarray.dtype 数组元素的类型
2.ndarray的类型
bool
int
float
str
注意:若不指定,整数默认int64,float64
三 基本操作1.生成数组的方法 生成0,1的方法
np.ones()
np.ones_like()
np.zeros()
1.2 从现有的数组中生成np.array–深拷贝
np.asarray–浅拷贝
1.3生成固定范围的数组
np.linspace()
生成等 ...
XML要点总结
XML可扩展标记语言1.概述1.概念XML(Extensible Markup Language可拓展标记语言)
2.功能存储数据,一般用于做配置文件,或者在网络中传输(通常用json文件)
3.XML和HTML区别
xml标签是自定义的,所以需要有约束文件。
xml的语法严格,html语法松散
xml主要用于存储数据,html展示数据
4.语法
文档后缀名xml
第一行<?xml version='1.0' encoding='utf8'?> 是文档声明
xml中有且仅有一个根标签
属性值要用(单双)引号引起来
区分大小写
5.快速入门123456789101112131415<?xml version='1.0' ?> <users> <user id='1'> <name>zhangsan</name> <age>23</age> <gender>male</ge ...
Tomcat端口80被占用
使用Tomcat端口80被System占用解决方法-关闭IIS服务问题描述在使用Tomcat的时候,在浏览器中想要直接通过ip地址,不输入端口,使用默认端口80访问Tomcat。配置Tomcat的端口号为80后,发现浏览器不能访问Tomcat,通过查看日志文件发现80端口被占用,如下
为了解决这个问题,首先的想法就是杀死占用80端口的进程。
寻找问题参看占用80端口的进程PID在cmd窗口输入一下命令
1netstat -ano
发现PID为4的进程占用了端口,然后去任务管理器查看PID为4的进程,发现是System进程
发现是System进程占用了该端口,但是该进程不能直接关闭,我们猜测是系统的某个服务占用了该端口。我们查看系统的http服务命令如下
1netsh http show servicestate
发现是DefaltAPPPool这个东西占用了80端口,它的PID是4640。我们任务管理器找到该进程,通过右键转到服务
看到图中的服务,这里原因也就找到了,IIS的World Wid Web Publishing Service 万维网服务的问题。
解决方 ...
JAVA常见IO模型 BIO、NIO、AIO总结
BIOBlocking IO 同步阻塞型IO。当系统进行IO读写的时候,会阻塞,直到IO读写完毕。比如调用系统Read后,需要将内核空间的数据读取到用户空间。需要等待内核空间 数据准备,数据就绪,拷贝数据,线程一直处于阻塞状态,直到拷贝数据完成。如下图:BIO这种方式是一个连接对应着一个线程,会造成线程阻塞。当连接数目少的时候还能支撑住,当连接数一多会导致阻塞时间过程,影响系统的性能。因此阻塞型IO只是用于少量连接的情况。为了使用大量连接的情况,又设计了非阻塞型IO-NIO模型。
NIONIO同步非阻塞型IO,系统在进行读写的过程中不会阻塞,系统性能更高。非阻塞型IO采用了多路复用的原理,将多个连接注册到一个selector上,通过一个线程就能管理多个连接。通过selector轮询的方式看那个连接上有请求,对该请求分配一个线程。这样就大大提高的效率。
非阻塞型IO特别适用于连接数目多,且连接时间较短的常用,比如聊天服务器。
AIOAIO为异步IO。异步IO是基于事件和回调机制来实现的。当应用程序发起IO请求后,立马返回,可以进行其他操作。当系统IO完成后,会通知该线程,该线程继续 ...
JDBC初识
概述JDBC(java database connectivity)是java访问数据库的操作规范,实质上就是一个接口,具体的实现类(数据库驱动)由各个具体的数据库厂商实现。
JDBC核心API
接口或者类
作用
DriverManager类
管理和注册数据库驱动(DriverManager.registerDriver)、获取数据库连接对象(DriverManager.getConnection)
Connection接口
连接对象,可以创建Statement和PreparedStatement对象(con.createStatement)
Statement接口
SQL语句对象,将SQL语句发送给数据库服务器
PreparedStatement接口
SQL语句对象,是Statement子接口,预编译对象,可以防止SQL注入
ResultSet接口
用于封装数据库查询的结果集,返回给客户端的java服务器。用next方法是游标。用getXxx方法获取该行不同字段结果
快速入门导入驱动Jar包新建文件夹lib,然后将Jar包放在该文件夹下,右键选 ...