使用Servlet和Bootstrap上传Ajax文件

介绍

在本教程中,我们将检查Ajax文件上传如何与Servlet一起使用。 同样,我们将用Bootstrap装饰表单并通过jQuery Ajax上传ajaxify文件。

实作

基本的servlet实现是相同的。 因此,我们需要做的第一件事是更新我们的web.xml文件并为我们的应用程序指定servlet。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>DemoFileUploadServlet</display-name><welcome-file-list><welcome-file>home.jsp</welcome-file></welcome-file-list><servlet><description></description><display-name>DemoFileUploadServlet</display-name><servlet-name>demo</servlet-name><servlet-class>com.jcombat.sample.DemoFileUploadServlet</servlet-class></servlet><servlet-mapping><servlet-name>demo</servlet-name><url-pattern>/demo</url-pattern></servlet-mapping>
</web-app>

请注意,指定的欢迎页面为home.jsp 。 因此,当我们运行servlet应用程序时,该应用程序应该找到欢迎页面jsp和servlet类,即DemoFileUploadServlet

home.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>File Upload Example in JSP and Servlet - Java web application</title>
<link rel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<scriptsrc="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>$(document).ready(function() {function bs_input_file() {$(".input-file").before(function() {if ( ! $(this).prev().hasClass('input-ghost') ) {var element = $("<input type='file' class='input-ghost' style='visibility:hidden; height:0'>");element.attr("name",$(this).attr("name"));element.change(function(){element.next(element).find('input').val((element.val()).split('\\').pop());});$(this).find("button.btn-choose").click(function(){element.click();});$(this).find("button.btn-reset").click(function(){element.val(null);$(this).parents(".input-file").find('input').val('');});$(this).find('input').css("cursor","pointer");$(this).find('input').mousedown(function() {$(this).parents('.input-file').prev().click();return false;});return element;}});}bs_input_file();$("#uploadBtn").on("click", function() {var url = "demo";var form = $("#sampleUploadFrm")[0];var data = new FormData(form);/* var data = {};data['key1'] = 'value1';data['key2'] = 'value2'; */$.ajax({type : "POST",encType : "multipart/form-data",url : url,cache : false,processData : false,contentType : false,data : data,success : function(msg) {var response = JSON.parse(msg);var status = response.status;if (status == 1) {alert("File has been uploaded successfully");} else {alert("Couldn't upload file");}},error : function(msg) {alert("Couldn't upload file");}});});});
</script>
</head><body><div class="container"><div class="col-md-8 col-md-offset-2"><h3>File Upload Example Using Servlet, Bootstrap and Ajax - jCombat</h3><form id="sampleUploadFrm" method="POST" action="#" enctype="multipart/form-data"><!-- COMPONENT START --><div class="form-group"><div class="input-group input-file" name="file"><span class="input-group-btn"><button class="btn btn-default btn-choose" type="button">Choose</button></span> <input type="text" class="form-control"placeholder='Choose a file...' /> <span class="input-group-btn"><button class="btn btn-warning btn-reset" type="button">Reset</button></span></div></div><!-- COMPONENT END --><div class="form-group"><button type="button" class="btn btn-primary pull-right" id="uploadBtn">Submit</button><button type="reset" class="btn btn-danger">Reset</button></div></form></div></div>
</body>
</html>

home.jsp中,我们具有用于文件上传HTML表单,该表单使用Bootstrap。 我们还在顶部添加了<script>标记,该标记具有jquery代码以使表单提交操作无效。

接下来让我们创建servlet类–

DemoFileUploadServlet.java

package com.jcombat.sample;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class DemoFileUploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public DemoFileUploadServlet() {super();}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {final String UPLOAD_DIRECTORY = "C:/uploads";if(ServletFileUpload.isMultipartContent(request)){try {List multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);for(FileItem item : multiparts){if(!item.isFormField()){File fileSaveDir = new File(UPLOAD_DIRECTORY);if (!fileSaveDir.exists()) {fileSaveDir.mkdir();}String name = new File(item.getName()).getName();item.write( new File(UPLOAD_DIRECTORY + File.separator + name));}}} catch (Exception e) {// exception handling}PrintWriter out = response.getWriter();out.print("{\"status\":1}");}}}

确保pom.xml文件添加了以下依赖项。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jcombat.sample</groupId><artifactId>ServletFileUploadDemo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>Servlet with Maven Demo</name><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3</version></dependency></dependencies><build><sourceDirectory>src</sourceDirectory><plugins><plugin><artifactId>maven-war-plugin</artifactId><version>2.4</version><configuration><warSourceDirectory>WebContent</warSourceDirectory><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build>
</project>

执行应用程序

当执行应用程序时,我们将看到以下HTML表单。

引导程序

选择文件,然后单击Submit 。 成功上传文件后,我们会收到一条警告,提示“文件已成功上传”。

引导程序

下载源代码

下载源代码

翻译自: https://www.javacodegeeks.com/2018/09/ajax-file-upload-servlet-bootstrap.html

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

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

相关文章

linux文件系统dentry_Linux文件系统(四)---三大缓冲区之inode缓冲区 (内存inode映像 )...

在文件系统中&#xff0c;有三大缓冲为了提升效率&#xff1a;inode缓冲区、dentry缓冲区、块缓冲。(内核&#xff1a;2.4.37)一、inode缓冲区为了加快对索引节点的索引&#xff0c;引入inode缓冲区&#xff0c;下面我们看Linux/fs/inode.c代码。inode缓冲区代码1、一些数据结构…

java 快死了_如果Java快死了,那么它肯定看起来非常健康

java 快死了Java快要死了的奇怪但流行的断言只能在没有证据的情况下提出&#xff0c;而不是因为它。 在酷孩子闲逛的论坛&#xff08;Hacker News&#xff0c;Reddit等&#xff09;中反复出现的偏见与Java语言背道而驰。 人们常常反复感叹 Java冗长而流行。 虽然我接受第一个描…

python函数调用时所提供的参数可以是变量吗_Python函数一章,关于变量参数调用(何时使用*)记录,pytho,章节,可变,的,什么,时候...

关于可变参数调用def bmi(*person):for list_person in person:for item in list_person:…这个&#xff0c;调用时&#xff0c;不需要带*bmi(list1,list2…)def bmi(*person):for item in person:…这个调用时&#xff0c;需要带*bmi(*list1&#xff0c;*list2)注&#xff1a;…

使用这些先进的GC技术提高应用程序性能

应用程序性能是我们的首要考虑因素&#xff0c;垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集&#xff08;与JIT HotSpot编译器一起&#xff09;是JVM中最先进&#xff0c;最有价值的组件之一&#xff0c;但是许多开发人员和工程师对垃圾收集&#xff08;GC&a…

2mysql_2.Mysql常用命令行大全

7.1 一个建库和建表的实例1drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER(id int(3) auto_increment not null primary key,name char(10) not null,address…

JDK 11的一般可用性

按照计划&#xff0c; 今天宣布将发布 JDK 11 &#xff0c;以实现一般可用性 。 本周初&#xff0c;Iris Clark宣布了“ JSR 384&#xff08;Java SE 11&#xff09;最终发行版 ”&#xff0c;并且在同一封邮件中引用了JSR 384的最终发行版&#xff0c;并引用了“ Java SE 11&a…

mysql中lead_SqlServer2012中LEAD函数简单分析_MySQL

LEAD函数简单点说&#xff0c;就是把下一行的某列数据提取到当前行来显示&#xff0c;看示例更能解释清楚&#xff0c;先看测试用脚本DECLARE TestData TABLE(ID INT IDENTITY(1,1),Department VARCHAR(20),LastName VARCHAR(20),Rate FLOAT)INSERT INTO TestData(Department,L…

堆栈溢出回答了我们不知道的Java首要问题

您不应该错过的堆栈溢出问题集合&#xff1a; 这不是秘密&#xff1b; 我们都使用堆栈溢出。 它掌握了生命&#xff0c;宇宙以及几乎所有与代码相关的内容的答案。 该平台为开发人员&#xff0c;工程师和其他人员提供了一个找到他们所面临问题的答案的地方&#xff0c;或者至少…

sequelize连接mysql_node.js通过Sequelize 连接MySQL

node.js通过Sequelize 连接MySQL一.通过koa2脚手架构建项目1.1 安装koa-generator在终端输入&#xff1a;$ npm install -g koa-generator11.2 使用koa-generator生成koa2项目$ koa2 HelloKoa21成功创建项目后&#xff0c;进入项目目录&#xff0c;并执行npm install命令$ cd H…

杀java_java怎么杀掉java进程

展开全部java中有调用外部程序的e69da5e887aa62616964757a686964616f31333337623431类&#xff0c;Runtime.getRuntime().exec("./**.exe");此函数返回的是一个Process 对象&#xff0c;该对象在创建后&#xff0c;可以对它进行 destroy () 杀掉子进程、 waitFor () …

高级java开发_我最喜欢的Java高级开发人员书籍

高级java开发我上一篇博客文章 &#xff08;我对高级Java开发人员的十个最喜欢的在线资源&#xff09;的想法&#xff0c;是由Xiaoran Wang发表的“面向高级Java开发人员的十大网站”的启发。 Wang还写了一篇名为“面向Java高级开发人员的十大书籍”的文章。 就像关于高级Java开…

Optional.isEmpty()在JDK 11 EA构建中可用

我最近发布的问题“ Optional.isEmpty&#xff08;&#xff09;即将加入Java吗&#xff1f; ”是由名为“ RFR&#xff1a;8184693 &#xff1a;&#xff08;选择&#xff09;添加Optional.isEmpty ”的core-libs-dev邮件列表帖子提示的。 当前的JDK 11 Early Access构建 &…

camera.swf java_java调用摄像头保存图片上传功能

在项目中要用到jsp页面实现网页采集摄像头图像&#xff0c;并实现上传的功能&#xff0c;页面主要js调用的&#xff0c;所以可以使用多种语言php,asp等都可以使用&#xff0c;而且是跨浏览器的。可以整合的到SSH项目中和struts1或者struts2项目中使用方法1&#xff1a;下载 pri…

java list 字段去重_如何实现java8 list按照元素的某个字段去重

list 按照元素的某个字段去重DataAllArgsConstructorNoArgsConstructorpublic class Student {private Integer age;private String name;}测试数据List studentList Lists.newArrayList();studentList.add(new Student(28, "river"));studentList.add(new Student(…

cassandra使用心得_使用Cassandra和Nutch爬网

cassandra使用心得因此&#xff0c;您想从互联网上收集大量数据吗&#xff1f; 有什么比Cassandra更好的存储机制&#xff1f; 使用Nutch可以轻松做到这一点。 人们经常在Nutch后面使用Hbase。 这可行&#xff0c;但是如果您是&#xff08;或想成为&#xff09;Cassandra商店&…

java 北理工 教材_北理工《Java技术与应用》在线作业

北理工《Java技术与应用》在线作业可以代做所有奥鹏平台的作业、小论文、毕业论文、离线作业、考核作业、在线作业、在线测试&#xff0c;有需要的请联系本人一、单选题(共 20 道试题&#xff0c;共 40 分。)V1. Socket对象中____函数获取远程端口。A. getPort( )B. getLocalPo…

占用内存的Enum.values()方法

我是Java 枚举的忠实拥护者 。 似乎我们一直在等待获得它&#xff0c;但是当我们最终获得它&#xff08; J2SE 5 &#xff09;时&#xff0c;该枚举比C和C 提供的枚举要好得多&#xff0c;在我看来&#xff0c;这“ 值得等待” 。 与Java enum一样好&#xff0c;它也不是没有问…

Apache Spark Job的剖析

Apache Spark是通用的大规模数据处理框架。 了解spark如何执行作业对于获取大部分作业非常重要。 关于Spark评估范式的简短回顾&#xff1a;Spark使用的是惰性评估范式&#xff0c;在该范式中&#xff0c;Spark应用程序在驱动程序调用“ Action”之前不会执行任何操作。 惰性…

scala本地调试_如何编写自己的Java / Scala调试器

scala本地调试在本文中&#xff0c;我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其功能&#xff0c;以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层&#xff0c;它提…

java content()_Java contentEquals() 方法

全屏Java contentEquals() 方法contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较。语法public boolean contentEquals(StringBuffer sb)参数sb -- 要与字符串比较的 StringBuffer。返回值如字符串与指定 StringBuffer 表示相同的字符序列&#xff0c;则返回 tr…