JavaWeb学习记录 JspSmartUpload应用
JspSmartUpload应用
jspSmartUp是一种早期流行的使用框架,适合于上传小型的文件,具有灵活性简单高效。
使用方法很简单
File
File类 包装上传文件的所有信息。通过 File类
可 获取/设置 文件的相关信息
常用方法
返回 | 方法 | 说明 |
---|---|---|
boolean | isMissing() | 判断文件是否对应表单的 |
void | saveAs(String url, int type) | 将文件进行保存 |
String | getFieldName() | 获取 文件的表单name属性值 |
String | getFileName() | 获取 上传文件名称 |
String | getFilePathName() | 获取 文件全名 |
long | getSize() | 获取 文件长度(字节) |
String | getFileExt() | 获取 文件扩展名 |
void | setCharset(String charset) | 设置 编码字符集 |
Files
Files类表示所有上传文件的集合
常用方法
返回 | 方法 | 说明 |
---|---|---|
void | addFile(File newFile) | 添加 新文件进集合 |
int | getCount() | 获取 上传文件的个数 |
long | getSize() | 获取 上传文件大小(字节) |
File | getFile(int index) | 获取 指定文件 |
Request
Request类表示文件上传表单,request对象
无法获得表单中的name属性值,必须通过依赖包里的 com.jspsmart.upload.Request对象
来获取name属性值
常用方法
返回 | 方法 | 说明 |
---|---|---|
String | getParameter(String name) | 获取 指定表单name属性值的value值 |
String[] | getParameterValues(String name) | 获取 指定表单name属性值的多个value值 |
SmartUpload
常用方法
返回 | 方法 | 说明 |
---|---|---|
void | initialize() | 上传和下载的初始化配置 |
void | upload() | 上传操作,在初始化配置后执行 |
int | save(String pathName) | 上传保存后,返回保存文件数 |
void | setContentDisposition(string contentdisposition) |
提示文件是否添加额外信息contentdisposition参数: Content-Disposition、attachment == null (效果一样) |
void | downloadFile(String url) | 指定下载路径的文件 |
Files | getFiles() | 获取 上传的所有文件 |
Request | getRequest() | 获取 上传表单请求数据 |
void | setMaxFileSize(long filesize) | 设置 单个文件大小 (字节) |
void | setTotalMaxFileSize(long allfilesize) | 设置 总文件大小 (字节) |
void | setAllowedFilesList(String form) | 设置 限制文件类型(多个类型分号分割) |
文件上传
实现步骤:
导入依赖包
实例
SmartUpload对象
(用于创建上传对象)初始化配置上传文件 方式/限制 ,
SmartUpload.initialize()方法
进行初始化配置进行上传文件 ,
SmartUpload.upload()方法
上传文件通过
com.jspsmart.upload.File对象
得到文件,通过以下方式获取名称//····· Files files = smartUpload.getFiles(); File file = files.getFile(0); String fileName = file.getFileName();
对文件进行保存,
File.saveAs()方法
上传保存的位置
保存类型、目录位置是否存在!
注意:
form表单
提交类型为post
form表单
必须添加属性:enctype="multipart/form-data"
服务端 提取表单数据方式:
SmartUpload.getRequest().getParameter("name属性值");
SmartUpload sup = new SmartUpload(); //初始化配置。。。。 String uname = sup.getRequest().getParameter("username");
快速初始化配置
SmartUpload sup = new SmartUpload();
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this,req,resp,null,false,1024,true);
sup.initialize(pageContext);
JspFactory.getPageContext()方法说明
public abstract PageContext getPageContext(Servlet servlet, ServletRequest req, ServletResponse resp, String errorPageURL, boolean needsSession, int buffer boolean autoflush)
参数 | 说明 |
---|---|
servlet | 请求的servlet,在servlet中传this即可 |
req | servlet上挂起的当前请求 |
resp | servlet上挂起的当前响应 |
errorPageURL | 请求JSP的错误页面的URL,或null |
needsSession | 是否需要session |
buffer | 以字节为单位的缓冲区大小 |
autoflush | 缓冲区溢出时是否 自动刷新到输出流 |
文件下载
实现步骤:
方式1
导入依赖包
实例
SmartUpload对象
(用于创建上传对象)初始化配置文件 方式/限制 ,
SmartUpload.initialize()方法
进行初始化配置设置 禁止浏览器自动打开,
SmartUpload.setContentDisposition(null)
获取指定文件路径,和请求中的文件名
//假设:web/test/image.png 、name = image.png String name = req.getParameter("file"); String url = "test/"+name;
下载指定路径文件
SmartUpload.downloadFile(url)
方式2
导入依赖包
获取下载的文件,在请求参数中获取
文件名
设置 响应内容,调用
HttpServletResponse.setContentType()方法
,将响应内容设置为通用的二进制流resp.setContentType("application/octet-stream");
添加响应头,调用
HttpServletResponse.addHeader()方法
设置响应头//...... //配置名称设置编码集 name = URLEncoder.encode(name, StandardCharsets.UTF_8); resp.addHeader("Content-Disposition","attachment;filename="+name);
响应转送下载
//假设路径:web/test/image.png 、name = image.png String url = "test/image.png"+name; req.getRequestDispatcher(url).forward(req,resp);
清空缓存
resp.flushBuffer()
代码实例
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>$Title$</title>
</head>
<body>
<h1>上传</h1>
<form action="upload" method="post" enctype="multipart/form-data">name: <input type="text" name="userName"> <br>age: <input type="text" name="userAge"> <br>image: <input type="file" name="image"> <br><input type="submit" value="上传信息">
</form>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><h1>接收Test</h1><p>userName: ${userName}</p><p>userAge: ${userAge}</p><p>image: <a href="download?file=${fileName}">${fileName}</a>(点击下载)</p><img src="test/${fileName}">
</body>
</html>
Upload类(上传服务端)
package servlet;import com.jspsmart.upload.*;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;/*** @Author: 柏竹* @Description: 一个简洁主义...* @Date_Created_in: 2021-04-29 16:49* @Modified_By: Sans* @Project: 上传服务端*/
@WebServlet(urlPatterns = "/upload")
public class Upload extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException {doPost(req , resp);}@Overrideprotected void doPost(HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException {try {//实例SmartUploadSmartUpload upload = new SmartUpload();//初始化配置SmartUploadupload.initialize(this.getServletConfig(), req, resp);upload.setCharset("utf-8");upload.setAllowedFilesList("jpg,png");upload.setMaxFileSize(2 * 1024 * 1024);upload.setAllowedFilesList("jpg,png");//上传upload.upload();//获取文件信息Files files = upload.getFiles();File file = files.getFile(0);String fileName = file.getFileName();String url = "test/"+fileName;//保存上传指定目录file.saveAs(url,1);//获取表单数据并存储Request request = upload.getRequest();req.setAttribute("userName",request.getParameter("userName"));req.setAttribute("userAge",request.getParameter("userAge"));req.setAttribute("fileName",fileName);req.getRequestDispatcher("success.jsp").forward(req,resp);} catch (SmartUploadException e) {e.printStackTrace();}}
}
Download类(下载服务端)
package servlet;import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;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;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;/*** @Author: 柏竹* @Description: 一个简洁主义...* @Date_Created_in: 2021-04-29 17:13* @Modified_By: Sans* @Project: 下载服务端*/
@WebServlet(urlPatterns = "/download")
public class Download extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException {doPost(req , resp);}@Overrideprotected void doPost(HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException {String name = req.getParameter("file");String url = "test/"+name;System.out.println(url);//方式1SmartUpload sup = new SmartUpload();sup.initialize(this.getServletConfig(), req, resp);// 设定contentDisposition为null以禁止浏览器自动打开文件// 保证单击链接后下载文件sup.setContentDisposition(null);//指定下载的文件try {sup.downloadFile(url);} catch (SmartUploadException e) {e.printStackTrace();}//方式2/*//将响应内容设置为通用的二进制流resp.setContentType("application/octet-stream");//attachment 告诉浏览器附件的方式为 下载文件(弹出下载框)name = URLEncoder.encode(name, StandardCharsets.UTF_8);resp.addHeader("Content-Disposition","attachment;filename="+name);req.getRequestDispatcher(url).forward(req,resp);//清空缓存: 将服务端缓冲区的文件内容,立即权并不传递给客户端resp.flushBuffer();*/}
}
点击个人实例项目(包含jar)
JavaWeb学习记录 JspSmartUpload应用相关推荐
- javaweb学习记录-qqzone项目-结构分析
回顾下之前学习的水果项目的mvc各层设计 qqzone项目结构 几个问题及分析 3. 系统启动时,我们访问的页面是: http://localhost:8080/pro23/page.do?opera ...
- javaWeb学习记录:学生信息管理系统
初始版 初始版是没有加分页的.因为没怎么学过前端,界面很丑陋.主要技术:JSP,JavaBean,servlet,JDBC主要页面如下: 登录页面 主页 添加学生 查看所有学生 查询学生 工程目录 数 ...
- JavaWeb学习记录(二十五)——权限管理总结
一.面向对象思想简化数据库操作 public List<Role> getObjectsByIds(List<AdminRole> adminRoles) { ...
- 黑马程序员最新版JavaWeb基础教程最后的案例学习记录
黑马程序员最新版JavaWeb基础教程最后的案例学习记录这里写自定义目录标题 调试中我遇到的问题 调试中我遇到的问题 若db1报错: 则 改成自己的数据库名称 web.xml报错:则用这一段代码 &l ...
- java raw_GitHub - Braw115/JavaWEB: JavaWEB学习之中的一些Demo
#该仓库主要记录学习javaWEB中一些Demo 1.SSM-Demo 使用maven整合的Spring,SpringMVC,Mybatis的案例,数据库使用mysql,数据源为druid,可以直接拿 ...
- gRPC学习记录(六)--客户端连接池
对于客户端来说建立一个channel是昂贵的,因为创建channel需要连接,但是建立一个stub是很简单的,就像创建一个普通对象,因此Channel就需要复用,也就是说需要实现一个连接池应用.本文使 ...
- javaweb学习6——自定义标签
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...
- B站狂神说JavaWeb学习笔记
JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...
- 【javaweb学习笔记】servlet-api,filter和Listener
javaweb学习笔记 1. servlet-api 1.1 servlet初始化 1.2 ServletContext和context-param 2. 什么是业务层 3. IOC 3.1 耦合/依 ...
最新文章
- 51单片机c语言运算符,51单片机表达式语句的用法解析
- apche 虚拟主机设置
- ceph编译_Ceph编译:L版本及其之后的版本
- 这里有一份面筋请查收(五)
- 前端学习(2740):重读vue电商网站50之Element-UI 组件按需加载
- 《程序设计技术》第四章例程
- JSON Web Token实际应用
- Ubuntu18.04下小米、TPLink、腾达USB无线网卡跳坑记录
- 智能会议系统集成解决方案
- 【产品】业务流程+任务流程+页面流程绘制指南
- Photoshop抠图--使用图层蒙版抠图
- Caught FileNotFoundError in DataLoader worker process 0.
- java 支付宝帐单_支付宝单笔提现转账到个人用户,java代码实现
- python编程案例看电影_转利用python实现电影推荐
- ArcGIS JS之 identify接口之 exceededTransferLimit属性
- 我国正式实施不安全食品召回制度(转)
- 浅谈中国电信出口网络的链路情况(什么是 ChinaNet,CN2,GT,GIA)
- 碰撞、子弹路径、参考
- 蛋花花谈大学生如何在互联网上赚钱
- flask框架----跨域