使用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、一些数据结构…

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

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

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

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

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

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

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…

通过这5个简单的技巧减少GC开销

编写代码的五种简单方法&#xff0c;可提高内存效率&#xff0c;而无需花费更多时间或降低代码可读性 垃圾回收会为您的应用程序增加多少开销&#xff1f; 您可能不知道确切的数字&#xff0c;但您确实知道总有改进的余地。 尽管自动GC是最有效的过程&#xff0c;但是如果它过…

内部简单二进制编码(SBE)

SBE是用于金融行业的非常快速的序列化库&#xff0c;在本博客中&#xff0c;我将介绍一些使其快速发展的设计选择。 序列化的全部目的是对消息进行编码和解码&#xff0c;并且有很多可用的选项&#xff0c;从XML&#xff0c;JSON&#xff0c;Protobufer&#xff0c;Thrift&…

mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64

1、MinGW 的全称是&#xff1a;Minimalist GNU on Windows 。打开网址&#xff1a;http://www.mingw-w64.org/doku.php/download &#xff0c;选择 MingW-W64-builds。如图1图12、下载包名&#xff1a;mingw-w64-install.exe。安装时报错&#xff1a;Cannot download repositor…

java实现layui分页_layui如何实现数据分页功能

我们先来看下官网的演示画面。具体代码&#xff1a;页面引入layui.css、 layui.js前台jsvar limitcount 10;var curnum 1;//列表查询方法function productsearch(productGroupId,start,limitsize) {layui.use([table,laypage,laydate], function(){var table layui.table,la…

java 合并到一行_mysql中将多行数据合并成一行数据

一个字段可能对应多条数据&#xff0c;用mysql实现将多行数据合并成一行数据例如&#xff1a;一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句&#xff1a;1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId m.modelId5…

容器化Spring Data Cassandra应用程序

我正在继续学习Docker的旅程。 在这一点上&#xff0c;我仍然保持简单。 这次&#xff0c;我将解决将Spring和Cassandra应用程序转换为使用容器而不是在主机上本地运行的问题。 更准确地说&#xff0c;使用Spring Data Cassandra整理应用程序。 我希望我前几天看过进行此更改。…

使用React和Spring Boot构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 React的设计使创建交互式UI变得轻松自如。 它的状态管理非常有效&#xff0c;并且仅在…

使用CUBA进行开发–是Spring的重大转变吗?

阅读另一个供内部公司使用的Web项目的要求时&#xff0c;您&#xff08;至少是我自己&#xff09;通常会看到一个很普通的集合&#xff1a;定义明确的数据存储结构&#xff08;或有时是现有的旧式DB&#xff09;&#xff0c;大量的数据输入形式&#xff0c;非常复杂的业务逻辑&…