第三方控件

1. Fileitem接口

FileItem是一个接口,处理表单内容以及文件内容的的方法。在应用过程中,每一个表单中的单个字段袁术,都会被封装成一个FileItme类的对象,通过调用FileItem对象的相关方法可以得到相关表单字段元素的数据。

FileItem常用接口

 

方法  返回类型    说明
getFieldName()String返回表单字段元素NAME属性值
isFormField()boolean

判断FileItem封装的数据是属于普通表单字段还是文件表单字段

普通字段:true;

文件表单字段:false;

getName()String返回上传文件字段中的文件名,文件名通常是不含路径信息的,取决于浏览器
write(File file)void将FileItem对象中的恶内容保存到指定的文件中
getString(String encoding)String按照指定编码格式将内容转换成字符串返回

 

 

 

 

 

 

 

2.FileIteFactory接口与DiskFileItemFactory类

FileItemFactroy是一个接口,用于构建FileItem实例工厂。

DiskFileItemFactroy类是FileItemFactory接口的实现类,在使用过程中,可以使用DiskFileItemFactory构造一个FileItemFactory接口类型实例:

FileItemFactory factory =new DiskFileItemFactory();

3.ServletFileUpload类

 ServletFileUpload类是Apache文件上传组件中,用于处理文件上传的一个核心类。它的作用是以List形式返回每一个被封装成FileItem类型的表单元素集合。

ServletFileUpload类的构造语法:

public ServletFileUpload(FileItemFactory fileitemFactory)

ServletFileUpload 常用方法                                                    

 方法返回类型 说明
isMultpartContent(HttpServletRequest request) boolean静态方法 ,用去判断请求数据中的内容是否multipart/from-data
parseRequest(HttpServletRequest request)List将请求数据中的每一个字段,单独封装成FileItem对象,并以集合方式返回

 1.复制Commons-io-2.4.jar,commons-fileupload-1.2.2.jar两个包到WEB-INT/lib下,Buil path引用两个包。

表单<From>标签中

action="<%request.getcontextpath() %>jsp/adimn/daAdd.jsp" method="post" enctype="multype/form-data"
//action提交地址...enctype="multipart/form-data"表示明确表单提交时采用二进制进行数据传输,简单说就是表单提交时可以多部分内容进行提交,可能是普通表单,也可能是包含文件表单

设置上传文件标签

<input type="file" name="picpath" value=""/>

 

 

 

//导入相关的包

<%@page import="java.io.*,java.util.*,org.apache.commons.fileupload.*" %>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>

boolean bRet = false;
boolean bUpload = false;
String uploadFileName = "";
String fieldName = "";
News news = new News();//实例化封装属性的News对象
news.setCreatedate(new Date());//新闻创建时间
//读取request请求,判断是否 是多部分表达提交(二进制进行数据传输,可能是普通表单,也可能是包含文件表单)
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
//获得文件夹的位置(上传的图片保存在该文件夹中)
String uploadFilePath = request.getSession().getServletContext().getRealPath("/upload/" ); if (isMultipart == true) { //创建FileItemFactory实例 FileItemFactory factory = new DiskFileItemFactory(); //创建ServletFileUpload实例 ServletFileUpload upload = new ServletFileUpload(factory); try { //解析Request请求中的数据(返回一个集合)获取客户端提交过来的所有表单元素 List<FileItem> items = upload.parseRequest(request); for(FileItem item:items){ //判断表单元素类型,true为普通表单元素,false为文件 if (item.isFormField()){ //获取表单元素名字 fieldName = item.getFieldName(); //如果表单元素名字为title(判断元素 名称 与表单元素的对应关系) if (fieldName.equals("title")){ //设置编码为UTF-8 news.setTitle(item.getString("UTF-8")); }else if(fieldName.equals("id")){ String id = item.getString(); if (id != null && !id.equals("")){ //转换为Int类型  news.setId(Integer.parseInt(id)); } }else if (fieldName.equals("categoryId")){ news.setCateforyId(Integer.parseInt(item.getString())); }else if (fieldName.equals("summary")){ news.setSummary(item.getString("UTF-8")); }else if (fieldName.equals("newscontent")){ news.setContent(item.getString("UTF-8")); }else if(fieldName.equals("author")){ news.setAuthor(item.getString("UTF-8")); } }else{ //读取文件元素的名称 String fileName = item.getName(); if (fileName != null && !fileName.equals("")) { //获取上传文件的名称,并通过名称创建一个新File实例 File fullFile = new File(item.getName()); //从路径中提取文件本身名称,并构建一个新的file实例 File saveFile = new File(uploadFilePath, fullFile.getName()); //写入文件,开始 上传  item.write(saveFile); //获取上传文件名称 uploadFileName = fullFile.getName(); //新闻对象中保存上传文件名称  news.setPicpath(uploadFileName); //上传图片 bUpload = true; } } } } catch (Exception e) { // TODO Auto-generated catch block  e.printStackTrace(); } } System.out.println("上传成功后的文件名是::"+news.getPicpath()); //调用后台方法,将新闻信息插入数据库 bRet=newsService.addNews(news); %> <% if (bRet) { //新闻添加成功跳转新闻列表页 response.sendRedirect("newsDetailList.jsp"); } else { //失败跳转到新闻添加的页面 response.sendRedirect("newsDetailCreate.jsp"); } %>

 

转载于:https://www.cnblogs.com/lgxstudy/p/4265764.html

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

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

相关文章

如何使用 SSH 控制连接 Windows 服务器

服务器远程连接/ssh方式连接教程&#xff08;windows云主机远程登录&#xff09; 如何使用 SSH 控制连接 Windows 服务器

CDHtmlDialog 与 网页交互技巧

From: http://blog.csdn.net/catxl313/article/details/2204541 CDHtmlDialog可以方便的将网页嵌入对话框&#xff0c;使得在程序设计中人机界面&#xff08;DHTML网页&#xff09;与控制逻辑&#xff08;CDialog&#xff09;可以很好的分离&#xff0c;下面是一些实用技术与技…

查看NTFS文件系统版本号

fsutil fsinfo ntfsinfo c:转载于:https://blog.51cto.com/liushen/269304

java 盘符 系统_001-Java再回首开篇-入门基础

来我们一起了解下java背景突然想着&#xff0c; 整理一套从基础开始的文章吧&#xff0c;对自己来讲是回顾基础和复习&#xff0c;对他人来讲&#xff0c;能有一点点绵薄的帮助&#xff0c;我也是很欣慰了呢&#xff0c;希望能帮你少走点弯路。自己整理的&#xff0c;如有勘误&…

[react] react的虚拟DOM和vue的虚拟DOM有什么区别?

[react] react的虚拟DOM和vue的虚拟DOM有什么区别&#xff1f; React 是数据先生成 vdom&#xff0c;然后对比 vdom&#xff08;实现上并非先后顺序&#xff0c;两棵树边遍历边生成新的树&#xff09;&#xff0c;最后通过新的 DOM 树渲染。 Vue 是数据先进性对比&#xff0c;先…

( 设计高效算法 ) 年龄排序 Age Sort Uva 11462

( 设计高效算法 ) 年龄排序 Age Sort Uva 11462 可以使用整数排序法, 内存太小无法堆排序. #include <cstdio> #include <cstring> using namespace std;int main(){unsigned int age[101];int n,temp;while (scanf("%d", &n) 1 && n){mems…

js 如何去除字符两端的引号

通过js 提供的substring()就可以直接去除引号。&#xff08;注意是小写&#xff0c;和java不同&#xff09; var str JSON.stringify("sasasa"); console.log(str); var str str.substring(1,str.length-1); console.log(str);

如何在string.Format方法中输出大括号({})

C#(a.cs) using System;public class Test {public void Middle(string start, string end){string pat1 string.Format("(?<{0}).*(?{1})", start, end);Console.WriteLine(pat1);string pat2 string.Format("(?<{{0}}).*(?{{1}})", start, e…

Linux source用法(转)

source命令用法&#xff1a; source FileName作用:在当前bash环境下读取并执行FileName中的命令。注&#xff1a;该命令通常用命令“.”来替代。如&#xff1a;source .bash_rc 与 . .bash_rc 是等效的。source命令(从 C Shell 而来)是bash shell的内置命令。点命令&#xff0c…

[react] 解释下react中component和pureComponent两者的区别是什么?

[react] 解释下react中component和pureComponent两者的区别是什么&#xff1f; 组件的state或者props更新都会触发render(),同时也会导致子组件render()重新渲染&#xff1b; 当我们不想子组件更新时&#xff0c;需要手动在shouldUpdateComponent当中返回false; pureComponent帮…

asic面试题目 英伟达_免笔试!不限量!全球可编程图形处理技术领袖英伟达2021校园招聘火热进行中!...

关注并标星大同学吧每周1次&#xff0c;打卡阅读快速获取行业最新资讯秋意浓&#xff0c;渐微凉校招逐渐收尾不少同学陆陆续续开始签约还在观望决意不定的同学英伟达还没结束&#xff01;筹谋已久的英伟达2021校园招聘终于来啦&#xff01;拥有全世界最酷的AI计算机发明主办最顶…

Linux 重命名文件和文件夹

linux下重命名文件或文件夹的命令mv既可以重命名&#xff0c;又可以移动文件或文件夹. 例子&#xff1a;将目录A重命名为B mv A B 例子&#xff1a;将/a目录移动到/b下&#xff0c;并重命名为c mv /a /b/c转载于:https://www.cnblogs.com/sallet/p/4268858.html

将HTMLDOM对象转换成字符串

将HTMLDOM对象转换成字符串 js实现文字播放

C++真的能够王者归来吗?

From: http://blog.csdn.net/adwu73/article/details/7230048 C真的能够王者归来吗&#xff1f; 吴穹Adam 我个人认为不太可能&#xff01;因为不能光看C改进了什么&#xff0c;有什么优点&#xff1f;而要看环境&#xff0c;看对手&#xff01; 这篇博客不想写太长&#xff0c…

JTA的含义及应用简介

2019独角兽企业重金招聘Python工程师标准>>> Java Transaction API&#xff08;Java事务API&#xff09; (JTA)Java Transaction API(Application Programming Interface) 什么是JTA Transaction&#xff1f;它有怎样的特点呢&#xff1f;JTA Transaction是指由J2EE…

电脑表格日期怎么修改原有日期_为何电脑系统时间常出错或无法修改?怎么解决?...

简介电脑系统出现的问题可谓层出不穷&#xff0c;千奇百怪。这不&#xff0c;有朋友就遇到电脑系统时间无法修改或者修改后很快就出错的问题&#xff0c;而且有时候在修改时会出现“没有权限&#xff0c;无法更改”的类似信息。这是怎么回事呢&#xff1f;首先我们得知道问题产…

JS实现数组、对象去重的几种常用方式

JS实现数组、对象去重的几种常用方式

DOM--5 动态修改样式和层叠样式表

W3C DOM2 样式规范 CSSStyleSheet对象 表示所有css样式表&#xff0c;包括外部link和嵌入style的;通过document.styleSheets属性可以获得文档中CSSStyleSheet对象的列表&#xff1b;其中每个CSSStyleSheet都具有以下属性&#xff1a; type: 值始终是text/css;disabled: 布尔值&…

VC++ 深入详解 学习笔记(5) -- 修改窗口样式续

From: http://elton.iteye.com/blog/301503 之前说过&#xff0c; 修改窗口大小&#xff0c;窗口样式的方法。 这里说明一下修改窗口的图标&#xff0c;光标和背景的方法。 修改窗口大小&#xff0c;样式是在创建窗口的时候进行的&#xff0c;而修改图标&#xff0c;光标和背…

×××常见问题原因与解决

服务器什么地方可能出现故障当客户端与某个ISP建立连接时&#xff08;这种连接使用连接中的点对点协议--PPP--部分&#xff09;&#xff0c;ISP将为客户端分配一个IP地址、一个DNS服务器地址以及一个缺省网关。当客户端发起一个PPTP连接时&#xff0c;这项操作将创建第二个TCP/…