Apache Struts

JAVA WEB项目文件夹上传下载方法

风格不统一 提交于 2020-04-23 12:57:40
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所有浏览器。 支持文件批量上传 支持文件夹上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W。 支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传。文件大小要求能够支持到50个G。 支持自动加载本地文件,要求能够自动加载指定的本地文件。 支持文件批量下载,要求不要在服务器打包。因为50G的文件在服务器打包时间比较长。 支持文件夹下载,要求不要在服务器打包,下载到本地后要求保留层级结构 文件列表面板支持路径导航,新建文件夹 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。 一、开发环境搭建

mybatis递归,一对多代码示例

你离开我真会死。 提交于 2020-04-20 16:00:21
今天需要做一个功能,根据专业,有不同的章节,章节下面有对应的习题, 由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合。 虽然实现了,感觉毕竟,太low。 有同事跟我说可以使用mybatis的递归实现,就学习了下。 对应的bean里面需要有对应的list<bean> lists的引用。 直接上代码 对应的sql语句 CREATE TABLE `goods_category` ( `goodscateid` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` varchar ( 255 ) DEFAULT NULL , `parentid` int ( 11 ) DEFAULT NULL , `description` varchar ( 255 ) DEFAULT NULL , `displayorder` int ( 11 ) DEFAULT NULL , `commissionrate` double DEFAULT NULL , `enabled` int ( 11 ) DEFAULT NULL , PRIMARY KEY (`goodscateid`) ) ENGINE = InnoDB AUTO_INCREMENT = 11 DEFAULT CHARSET = utf8; /* Data

Java反射面试题(2020)

家住魔仙堡 提交于 2020-04-14 17:34:10
【推荐阅读】微服务还能火多久?>>> 反射 1.什么是反射? 反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息 以及动态调用对象的方法的功能称为 Java 语言的反射机制。 2.什么是 Java 序列化? 什么情况下需要序列化? Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态 再读出来。 以下情况需要使用 Java 序列化: 想把的内存中的对象状态保存到一个文件中或者数据库中时候; 想用套接字在网络上传送对象的时候; 想通过 RMI(远程方法调用)传输对象的时候。 3.动态代理是什么?有哪些应用? 动态代理是运行时动态生成代理类。 动态代理的应用有 spring aop、hibernate 数据查询、测试框架的后端 mock、rpc, Java 注解对象获取等。 4.怎么实现动态代理? JDK 原生动态代理和 cglib 动态代理。JDK 原生动态代理是基于接口实现的,而 cglib 是基于继承当前类的子类实现的。 5.为什么要使用克隆? 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是 初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆 方法了。 对象拷贝 6.如何实现对象克隆? 实现 Cloneable

Spring、Hibernate、Struts2框架整合

五迷三道 提交于 2020-04-14 01:46:58
【今日推荐】:为什么一到面试就懵逼!>>> SSH框架整合、分页查询案例 Spring、Hibernate、Struts2框架虽然现在已经不是很流行,但是在一写公司的老项目中仍然在使用,多学一种技术总没有坏处,所以如果大家刚学完了Spring、Struts、Hibernate框架,那么这个项目将教会你如何对这三大框架进行整合。 关于项目 项目环境 框架: 后端:spring + struts2 + hibernate5.x 前端:bootstrap + Fontawesome图标集 环境:IDEA + maven + mysql5.7 + Tomcat8 项目功能 1. 用户登录 2. 客户信息的增、删、改、查 3. 客户信息的列表展示和分页查询功能 项目源码请点击 SSH框架整合 进入我的GitHub。 项目结构 jar依赖 因为本项目使用了maven,如果你对maven项目不了解,可以查看我这篇博文: maven起步 <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

刚下飞机——项目系统设计与数据库设计

六月ゝ 毕业季﹏ 提交于 2020-04-13 11:13:10
【今日推荐】:为什么一到面试就懵逼!>>> 软件工程第四次团队作业 这个作业属于哪个课程 2020春丨w班 这个作业要求在哪里 作业要求 团队名称 刚下飞机 这个作业的目标 项目系统设计与数据库设计 作业正文 如下 其他参考文献 软件工程国家标准文档 deadline:2020-04-10 23:00 一.整体计划安排 整体计划安排 时间 前端 第9周 用户部分完成:登录、注册、修改个人信息、发布问题、查看问题 第10周 用户部分完成:发布回答、查看回答、采纳回答、置顶回答 第11周(Alpha版本演示) 用户部分完成:发布评论、发布回复、细节完善、整体测试 第12周 用户部分完成:修改密码、修改绑定邮箱 第13周 用户部分完成:收藏问题、支持回答、反对回答、查看收藏问题;管理员部分完成:登录 第14周 用户部分完成:举报问题、举报回答、举报评论、举报回复;管理员部分完成:用户管理 第15周 用户部分完成:认证、用户动态 第16周(Beta版本演示) 补充 第7周:讨论并确定项目系统设计方案 第11周:前后端交互完成后,交由测试人员测试,测试完成后发布Alpha版本 第16周:前后端交互完成后,交由测试人员测试,测试完成后发布Beta版本 二.预期开发计划分工安排 学号 工作内容 221701317 后端 221701328 前端页面设计,前后端交互 221701337

Web上传大文件的三种解决方案

为君一笑 提交于 2020-04-12 18:31:10
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = null; String fileAddre = "/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取系统当前路径 File file1 = new File(filePath);//添加了自动创建目录的功能 ((File)file1).mkdir(); newfileName = System.currentTimeMillis() + file.getFileName().substring( file.getFileName().lastIndexOf('.')); ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + newfileName); newpathname = filePath + "/" +

JAVA编程不得不看的一本经典书籍:《Java web项目开发案例精髓》

ε祈祈猫儿з 提交于 2020-04-12 15:58:29
写在前面 目前市面上关于JavaWeb开发的书籍非常多,但是这些书的侧重点都是JavaWeb的基础知识,读者根本无法了解真正的企业级开发。为了让更多的JavaWeb开发爱好者能够快速而又轻松地学会Java Web开发,笔者总结了大量的开发心得,并结合多年项目开发的经验,编写了这本JavaWeb项目精粹。 资料获取方法 本书的内容 本书共20章,每章都将介绍一个功能完善的项目,在介绍项目前先进行需求分析,然后再进行功能分析、数据库分析和设计,最后介绍公共类设计和项目模块开发。本书的案例讲解丰富,多样性强,针对市场上的不同需求,进行相应的案例讲解。本书讲解的项目都来源于真实的企业级项目。通过本书的学习,读者不但可以了解各行业的特点,并针对该行业进行项目开发,还可以通过本书中提供的项目源代码进行二次开发,从而减少项目开发所需时间。 本书的特点 本书精选了20个项目案例,内容主要涉及到各行业的管理系统、门户网站、商场购物等方面。各案例力求功能齐全,注重实际应用。并且在案例程序中,介绍了很多的Java Web框架,如Struts框架、Struts 2框架、Hibernate 框架和Spring框架等。在前端界面开发方面介绍了许多的框架,如jQuery、Ext JS以及JFreeChart. 目录截图 部分内容截图 企业日常事务管理系统 投票系统 博客网站系统 来源: oschina 链接:

Spring入门案例 idea创建Spring项目

二次信任 提交于 2020-04-11 19:57:37
spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原形衍生而来。它是为了解决企业级开发的复杂性而创建的。Spring使用基本的javaBaen来完成以前只可能由EJB完成的事情,然而Spring的用途不仅限于服务器端的开发,从简单性、可测试性、低耦合的角度而言任何java应用都可以在spring中受益。 简单的来说Spring就是轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。 Spring的好处 方便解耦,简化开发 Spring就是一个大工厂,专门负责生成Bean,可将所有对象,和依赖关系维护由Spring管理。 AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行拦截、运行监控等功能。 声明事务的支持 只需要通过配置就可以对事务进行管理,而无需手动编程。 方便程序的测试 Spring对junit支持,可以通过注解方便的测试Spring程序。 方便集成各种优秀框架 Spring不排斥各种优秀的框架,其内部提供了对各种优秀框架的支持,比如Struts2、Hibernate、MyBatis等。

2020年九大Java开发框架都有什么?

早过忘川 提交于 2020-04-10 09:41:22
2020年九大java开发框架,小编主要介绍Spring框架、Hibernate框架、Struts框架、Play框架、GoogleWebToolkit框架、Grails框架、Blade框架、JavaServerFaces框架、Vaadin框架九大框架,希望您可以多java框架有更多的认识。 一、Spring框架   Spring框架框架排名首位,具有开发复杂Web应用程序的出色能力,这些应用程序因性能突出而广受赞誉。使Java开发人员能够轻松地创建企业级应用程序。Web应用程序开发人员可以证明Spring框架的能力。是Spring成为Java开发人员最爱的原因。 在开发人员的选择中,SpringMVC和SpringBoot远远领先于其他Java技术。对于开发人员来说,这里的一大优势是他们可以不受其他模块约束而专注于一个模块,因为Spring利用了控制反转(IoC)。其他优点是一个全面的配置模型,支持传统数据库和现代数据库(如NoSQL),并通过支持面向方面编程来支持内聚开发。提供一些模块如SpringMVC、SpringCore、SpringBoot、SpringTransaction等。 二、Hibernate框架   作为一个对象关系映射(ORM)数据库,改变了我们以前查看数据库的方式。尽管不是一个全栈框架,但可以极其轻松地为多个数据库转换数据。支持多个数据库的能力使很容易扩展

java 异常链

╄→гoц情女王★ 提交于 2020-04-09 05:52:45
在设计模式中有一个叫做责任链模式,该模式是将多个对象链接成一条链,客户端的请求沿着这条链传递直到被接收、处理。同样 Java 异常机制也提供了这样一条链:异常链。 我们知道每遇到一个异常信息,我们都需要进行 try…catch,一个还好,如果出现多个异常呢?分类处理肯定会比较麻烦,那就一个 Exception 解决所有的异常吧。这样确实是可以,但是这样处理势必会导致后面的维护难度增加。最好的办法就是将这些异常信息封装,然后捕获我们的封装类即可。 诚然在应用程序中,我们有时候不仅仅只需要封装异常,更需要传递。怎么传递?throws!!但是如果仅仅只用 throws 抛出异常,那么你的封装类,怎么办?? 我们有两种方式处理异常,一是 throws 抛出交给上级处理,二是 try…catch 做具体处理。但是这个与上面有什么关联呢?try…catch 的 catch 块我们可以不需要做任何处理,仅仅只用 throw 这个关键字将我们封装异常信息主动抛出来。然后在通过关键字 throws 继续抛出该方法异常。它的上层也可以做这样的处理,以此类推就会产生一条由异常构成的异常链。 通过使用异常链,我们可以提高代码的可理解性、系统的可维护性和友好性。 同理,我们有时候在捕获一个异常后抛出另一个异常信息,并且希望将原始的异常信息也保持起来,这个时候也需要使用异常链。 在异常链的使用中,throw