精华内容
下载资源
问答
  • JAVA项目实例源码》

    2018-03-30 10:20:56
    JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码JAVA项目实例源码
  • maven java项目实例

    2018-09-12 15:02:34
    maven java项目实例,maven profile动态选择配置文件.txt
  • java项目实例_远程控制Java源码
  • 主要介绍了使用maven编译Java项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
  • java项目实例 单例通常会延迟实例化自己,有时,如果对象足够重,则可以延迟实例化类字段。 通常,当走惰性路线时,getter方法(或accessor )必须具有一段代码,该代码块在返回对象之前检查是否已实例化该对象(如果...
    java项目实例

    java项目实例

    单例通常会延迟实例化自己,有时,如果对象足够重,则可以延迟实例化类字段。

    通常,当走惰性路线时,getter方法(或accessor )必须具有一段代码,该代码块在返回对象之前检查是否已实例化该对象(如果不是,则需要实例化)。 一旦实例化了对象,该检查就没有意义。 它只会减慢已经(通常)使用同步或锁定进行阻塞的方法的速度。 让我们看一下删除该代码的方法,对吧?

    免责声明

    我没有想到这个。 我是从Venkat Subramaniam的Java函数编程中获得的。 我强烈推荐这本书和作者。 Venkat所阅读的所有内容都做得很好,而且易于学习。

    它是如何工作的?

    基本思想是:

    1. 将延迟实例化的字段替换为所需类型的供应商。
    2. 供应商实例化对象(但尚未返回)
    3. 然后将字段设置为新的Supplier,该供应商仅返回实例化的对象
    4. 返回实例

    因此,让我们看看实际情况。 我们将有一个名为Holder的类,该类要延迟实例化Heavy类型的对象。 此代码直接从Venkat的书中编译而成:

    public class Holder
    {
       private Supplier heavy = () -> createAndCacheHeavy();
     
       public Heavy getHeavy()
       {
          return heavy.get();
       }
     
       private synchronized Heavy createAndCacheHeavy()
       {
          class HeavyFactory implements Supplier
          {
             private final Heavy heavyInstance = new Heavy();
     
             public Heavy get()
             {
                return heavyInstance;
             }
          }
         
          if(!HeavyFactory.class.isInstance(heavy))
          {
             heavy = new HeavyFactory();
          }
     
          return heavy.get();
       }
    }

    现在,此代码可以正常工作,但是我发现createAndCacheHeavy的实现不必要地令人困惑。 第一次看到此代码时,我花了很长时间才弄清楚它在做什么。

    因此,让我们对其进行一些修改,对吧? 我们将使它看起来像是按照我之前列出的步骤进行操作。

    private Heavy createAndCacheHeavy()
    {
       Heavy instance = new Heavy();
       heavy = () -> instance;
       return instance;
    }

    那不是更好吗? 在我看来,这比以前更简单,更干净。 而且仍然有效! 好吧,这里有一个小警告:为了使代码具有线程安全性,您需要同步getInstance()方法而不是createAndCacheHeavy方法。 与Venkat的代码相比,此更改将使代码的速度稍慢一些,因为一旦HeavyFactory就绪,他的代码就不会使用同步。 但是它仍然比每次都需要同步和有条件检查的旧方法快。

    因此,这是一些有用的代码,但是您是否想在每次懒惰地实例化某些东西时都键入该代码? 我不这么认为。 因此,让我们创建一个可重用的类,使我们的生活更轻松。

    但是首先,只是为了向您展示它变得更容易使用,让我向您展示它的使用。

    Supplier<Heavy> heavy = LazilyInstantiate.using(() -> new Heavy());

    而已! 让我们更仔细地看一下它,并深入研究它,然后再进行研究。

    该行的声明位与以前相同; 一家名为Heavy的重型供应商。 但是随后我们调用了LazilyInstantiate的静态方法,该方法原来是返回工厂实现Supplier的LazilyInstantiate对象的静态工厂方法。 传递给该方法的参数是在那里的“重型供应商”,因此用户可以为实例化器提供正确的代码以实例化对象。

    那么,您是否对它的工作方式感到好奇? 好吧,这是LazilyInstantiate的代码:

    public class LazilyInstantiate implements Supplier
    {
       public static  LazilyInstantiate using(Supplier supplier)
       {
          return new LazilyInstantiate<>(supplier);
       }
         
       public synchronized T get()
       {
          return current.get();
       }
         
       private LazilyInstantiate(Supplier supplier)
       {
          this.supplier = supplier;
          this.current = () -> swapper();
       }
         
       private final Supplier supplier;
       private Supplier current;
         
       private T swapper()
       {
          T obj = supplier.get();
          current = () -> obj;
          return obj;
       }
    }

    您可能会发现我的方法的顺序与通常的方法有所不同。 我更喜欢先拥有公共资源,然后拥有私有和受保护的软件包,然后拥有私有资源。 在这些块中,我执行静态字段,然后构造函数,然后是静态方法,然后是普通字段,然后是普通方法。 通常,这似乎按用户阅读我的代码的最重要到最不重要的顺序对事物进行了排序。

    您可以随意将代码复制到任何地方,也可以在github上查看我的Functional-java库,该具有此类的完整文档版本(func.java.lazy.LazilyInstantiate)和许多其他有用的函数类。

    翻译自: https://www.javacodegeeks.com/2015/01/java-8-functional-programming-lazy-instantiation.html

    java项目实例

    展开全文
  • Java项目实例.pdf

    2018-10-01 16:58:00
    总计十八章,介绍Java基础组件以及项目中的使用法则,包含应用程序,小程序,网络程序等类型
  • Java项目实例开发

    2014-11-30 04:07:13
    实例讲解进销存管理系统,附有源码,手把手讲解项目开发流程。
  • 综述本文演示了用Maven编译Java项目需要时间:15分钟文本编辑器或者IDEJDK 6 或者更高版本创建项目本例主要为了展示Maven,所以Java的项目力求简单。创建项目结构 选择一个项目目录,在 *nix系统上使用下面语句mkdir...

    综述

    本文演示了用Maven编译Java项目

    需要

    时间:15分钟

    文本编辑器或者IDE

    JDK 6 或者更高版本

    创建项目

    本例主要为了展示Maven,所以Java的项目力求简单。

    创建项目结构 选

    择一个项目目录,在 *nix系统上使用下面语句

    mkdir -p src/main/java/hello

    window下使用命令

    mkdir src\main\java\hello

    创建如下结构:

    └── src

    └── main

    └── java

    └── hello

    在src/main/java/hello目录下创建Java文件HelloWorld.java和 Greeter.java

    src/main/java/hello/HelloWorld.java

    package hello;

    public class HelloWorld {

    public static void main(String[] args) {

    Greeter greeter = new Greeter();

    System.out.println(greeter.sayHello());

    }

    }

    src/main/java/hello/Greeter.java

    package hello;

    public class Greeter {

    public String sayHello() {

    return "Hello world!";

    }

    }

    现在项目完成,可以用Maven编译了。有关Maven的安装,可以参考Apache Maven 3.1.0 安装、部署、使用

    定义简单的Maven编译

    首先,在项目的根目录下创建一个Maven项目定义文件pom.xml,该文件主要是说明项目的名称、版本和依赖库

    pom.xml

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    4.0.0

    org.springframework

    gs-maven

    jar

    0.1.0

    org.apache.maven.plugins

    maven-shade-plugin

    2.1

    package

    shade

    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

    hello.HelloWorld

    除了 元素可选外,其他的元素是构成pom.xml 文件的最基本的元素了。它包括以下几个项目的配置:

    :POM 模块版本(通常是4.0.0).

    :项目所属的组织编号,通常用域名

    项目的名称(比如,JAR或者WAR的名称)

    项目编译的版本号

    项目打包形式,jar或者war

    编译Java代码

    运行下面语句编译

    mvn compile

    编译完成的.class文件将会出现在target/classes目录下.如下图

    d64a14543357b3884d7744b214d99909.png

    a9938c97d5b18aedba2f186c8eec2e63.png

    运行项目:

    mvn exec:java -Dexec.mainClass="hello.HelloWorld"

    输出如下:

    1050d8b20f62eff3dff8a838b282ef26.png

    如果不想直接运行.class文件,可以将其打包:

    mvn package

    打包完成后,会在target目录下生成一个JAR文件,文件名由 和 组成。比如本例,将会根据pom.xml生成gs-maven-0.1.0.jar

    0b491d3f25055e1ec247f6eb4e5ba2ce.png

    d9ada6de3b10b62e925a7907f2a96b30.png

    如果你想安装您的项目的JAR文件到本地Maven仓库,那么你应该调用下面语句:

    mvn installmvn install

    此时,你的项目代码将会经过编译、测试、打包并拷贝到本地依赖库,提供给其他项目引用。

    以上例子源码的地址https://github.com/waylau/maven-demo中的demo1

    说到项目依赖,下面说下声明依赖

    声明依赖

    上面的例子比较简单,没有用到其他库。但是真实的项目可能会引用(依赖)到很多其他库。

    下面例子,依赖了Joda Time的库。

    修改src/main/java/hello/HelloWorld.java

    package hello;

    import org.joda.time.LocalTime;

    public class HelloWorld {

    public static void main(String[] args) {

    LocalTime currentTime = new LocalTime();

    System.out.println("The current local time is: " + currentTime);

    Greeter greeter = new Greeter();

    System.out.println(greeter.sayHello());

    }

    }

    现在运行mvn compile将会报错,因为没有声明依赖。在 节点下插入如下:

    joda-time

    joda-time

    2.2

    58af59ca56c995430ea453a81cf22e1b.png

    这段内容就声明了项目的依赖。每个依赖节点都由三个子节点组成:

    : 该依赖库所属的组织名称

    : 依赖的库名

    : 依赖的库版本

    在POM 4中, 中还引入了 ,它主要管理依赖的部署。目前 可以使用5个值:

    compile,缺省值,适用于所有阶段,会随着项目一起发布。

    provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

    runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

    test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

    system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

    现在你运行mvn compile或者mvn package,Maven会自动下载相关依赖。

    完整的pom.xml

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    4.0.0

    org.springframework

    gs-maven

    jar

    0.1.0

    joda-time

    joda-time

    2.2

    org.apache.maven.plugins

    maven-shade-plugin

    2.1

    package

    shade

    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

    hello.HelloWorld

    运行项目:

    mvn exec:java -Dexec.mainClass="hello.HelloWorld"

    输出如下:

    ff8ac298d43c519b62729bd371a23933.png

    以上例子源码的地址https://github.com/waylau/maven-demo中的demo2

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

    展开全文
  • java项目实例图片上传

    万次阅读 2017-09-15 11:01:53
    java项目的图片上传

                                             使用 Spring中MultipartHttpServletRequest实现文件上传

    一、上传对表单的要求

    1) 表单的提交方式 :"method=post"

    2) 表单的类型 :enctype="multipart/form-data"

    3) 上传表单的文件项:<input type="file" name="xx" /> //其中名字是必须要的


    二.上传的一般步骤

    1.将request转化为MultipartHttpServletRequest multipartRequest= (MultipartHttpServletRequest)(request);

    原理是:使用spring的CommosMultipartResolver 配置MultipartResolver 用于文件上传,DispatcherServlet 将调用 MultipartResolver 的 isMultipart(request) 方法检查当前 Web 请求是否为 multipart类型。如果是,DispatcherServlet 将调用 MultipartResolver 的 resolveMultipart(request) 方法,对原始 request 进行装饰,并返回一个 MultipartHttpServletRequest 供后继处理流程使用(最初的 HttpServletRequest 被偷梁换柱成了 MultipartHttpServletRequest),否则,直接返回最初的 HttpServletRequest。

    获取文件 

             MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request; //将request转化为MultipartHttpServletRequest

     MultipartFile multipartFile = multipartRequest.getFile("upload");//获取文件

             InputStream  is = multipartFile.getInputStream();//获取图片的文件流
            String uploadContentType = multipartFile.getOriginalFilename();//获取文件的格式

    2.判断文件的格式(必须为.jpg/.gif/.bmp/.png文件))

    3.对图片进行处理(压缩图片),并输出到指定目录

    4.在数据库中保存图片的路径名imgDir+imgName

    jsp页面代码

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@include file="/include.jsp"%>
    <%@page import="java.util.Date"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <link href="<ph:root/>/s/css/style.css" type="text/css" rel="stylesheet" />
    <link href="<ph:root/>/s/css/gh-buttons.css" type="text/css"
    	rel="stylesheet" />
    <link href="<ph:root/>/s/css/selectinput.css" type="text/css"
    	rel="stylesheet" />
    <link href="<ph:root/>/s/js/ueditor/themes/default/css/ueditor.css"
    	type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="<ph:root/>/s/js/jquery.min.js"></script>
    <script type="text/javascript" src="<ph:root/>/s/js/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="<ph:root/>/s/js/jquery.form.js"></script>
    <script type="text/javascript" src="<ph:root/>/s/js/common.js"></script>
    <script type="text/javascript" src="<ph:root/>/s/js/checkForm.js"></script>
    
    <script type="text/javascript">
    	$(document).ready(function() {
    		//$("textarea[name='content']").ckeditor();
    		var uEditor = UE.getEditor("content1", {
    			initialFrameWidth : 800,
    			initialFrameHeight : 400,
    			autoHeightEnabled : false,
    			contextMenu : []
    		});
    		/* uEditor.onblur = function(){
    			if(uEditor.getContent()){
    				uEditor.commands.autotypeset.execCommand();
    			}
    		} */
    
    	});
    
    	function tolist() {
    		window.location.href = "<ph:root/>/m/periodicals/list";
    	}
    
    	function submitForm() {
    		if (!checkForm("form1")) {
    			return false;
    		}
    		if (confirm("确认保存?")) {
    			openLoad("正在处理,请稍后。。。");
    			//防止重复提交
    			$("#submit_btn").attr("disabled", true);
    			$("#form1").ajaxSubmit({
    				url : '<ph:root/>/m/periodicals/addContentDo',
    				type : 'post',
    				dataType : 'json',
    				success : function(result) {
    					closeLoad();
    					$("#submit_btn").attr("disabled", false);
    					if (result.resultCode == 0) {
    						alert("提交成功");
    						tolist();
    						return true;
    					} else {
    						alert(result.resultMsg);
    						return false;
    					}
    				}
    			});
    		}
    	}
    	
    	function showPreviewImg(){
    		$("#imgTr").show();
    	}
    	
    	//图片预览
    	function setImagePreview(id,oldId,localImageId) {
    	    var docObj=document.getElementById(id);
    	    var imgObjPreview=document.getElementById(oldId);
    	    var allowExtention = ".jpg,.bmp,.gif,.png";
    	    $("#"+oldId).show();
    	    var extention = docObj.value.substring(docObj.value.lastIndexOf(".") + 1).toLowerCase(); //获取当前上传文件的扩展名
    	    if(allowExtention.indexOf(extention) == -1){
    	    	alert("请选择.jpg,.bmp,.gif,.png文件");
    	    	return false;
    	    } 
    
    
    	    if(docObj.files && docObj.files[0]){
    	    	if (window.FileReader) {
    	        	var reader = new FileReader();
    	            reader.onload = function(e) {
    	                document.getElementById(oldId).setAttribute("src", e.target.result);
    	            }
    	            reader.readAsDataURL(docObj.files[0]);
    	        } else if (browserVersion.indexOf("SAFARI") > -1) {
    	            alert("不支持Safari浏览器6.0以下版本的图片预览!");
    	        } else {
    	            alert("不支持您当前使用的浏览器的图片预览!");
    	        }
    	    }else{
    	        //IE下,使用滤镜
    	        docObj.select();
    	        window.parent.document.body.focus();
    	        var imgSrc = document.selection.createRange().text;
    	        var localImagId = document.getElementById(localImageId);
    	        //必须设置初始大小
    	        localImagId.style.width = "100px";
    	        localImagId.style.height = "100px";
    	        //图片异常的捕捉,防止用户修改后缀来伪造图片
    			try{
    	            localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
    	            localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
    	        }catch(e){
    	            alert("您上传的图片格式不正确,请重新选择!");
    	            return false;
    	        }
    	       imgObjPreview.style.display = 'none';
    	       //$("#"+oldId).hide();
    	        document.selection.empty();
    	        
    	    }
    	    return true;
    	}
    </script>
    </head>
    <body>
    	<jsp:include page="../head.jsp"></jsp:include>
    	<div id="content">
    		<jsp:include page="../left.jsp"></jsp:include>
    		<div class="right">
    			<div class="titlebar">
    				<span>当前功能:<a href="#"></a>期刊章节管理  >  <b>新增电子院报章节</b>
    				</span>
    				<div class="user-1"></div>
    			</div>
    			<div class="frame" id="frame">
    				<div class="guntx_z">
    					<div class="guntx_z1">
    						<div id="bj3">
    							<sf:form modelAttribute="periodicalsChapter" action="addDo"
    								method="post" id="form1" name="form1"
    								enctype="multipart/form-data">
    								<input type="hidden" name="parentId" checkItems="N" value="${id}" />
    								<%-- 1 图文新闻 --%>
    								<div>
    									<div class="titlebar1">
    										<div class="tab_font1">
    											<span style="margin-left: 30px; color: red">带 *
    												号为必填项</span>
    										</div>
    									</div>
    
    									<div class="titlebar2">
    											<table width="97%" style="border:1px solid #ccc">
    												<tr>
    												  
    													<td width="20%" align="right" bgcolor="#ffffff"><span
    														class="fontts"> * </span>标题:</td>
    													<td width="80%" align="left" bgcolor="#FFFFFF"
    														style="padding-left: 20px;"><sf:input path="title"
    															checkItems="N" style="width:300px;height:30px;"
    															maxlength="50" placeholder="请输入期刊名" /></td>
    												</tr>
    												<tr>
    							         <td align="right" bgcolor="#ffffff">封面图片:</td>
    							       <td bgcolor="#FFFFFF" style="vertical-align: top;padding-left: 20px;">
    								     <input id="upload" name="upload" type="file" style="width:367px;height:30px;" οnchange="showPreviewImg();setImagePreview('upload','imgView','divNewPreview')"/> 
    								   <span class="fonttsDef" id="thumbUrlRightId" style="text-align: right"> 
    									尺寸:520*320 px 文件大小:100KB以内,文件格式:jpg,jpeg,gif,bmp,png 
    								   </span>
    							     </td>
    
    						        </tr>
    						          <%-- <c:if test="${upload!=null}"></c:if> --%>
    						        <tr style="display:none" id="imgTr">
    							    <td align="right" bgcolor="#ffffff">图片预览</td>
    							      <td bgcolor="#FFFFFF" style="padding-left: 20px;">
    								<img id="imgView" src=''  alt=""  style="display:none" width="150" height="100"/>
    								<div id="divNewPreview"></div>
    							     </td>
    						         </tr>
    												<tr>
    													<td align="right" bgcolor="#ffffff"><span
    														class="fontts"> * </span>内容:</td>
    													<td align="left" bgcolor="#FFFFFF"
    														style="padding-left: 20px;"><sf:textarea
    															path="content" id="content1" /></td>
    												</tr>
    											</table>
    										
    									</div>
    								</div>
    								<div class="baocun button-group minor-group">
    									<input type="button" οnclick="return submitForm()"
    										id="submit_btn" name="subButton" class="buttonqr" value="保存" />
    									<input type="button" οnclick="tolist()" name="subButton"
    										class="buttonqr_cancel" value="取消" />
    								</div>
    							</sf:form>
    						</div>
    					</div>
    				</div>
    			</div>
    			<!--发布内容代码结束-->
    
    		</div>
    	</div>
    	<jsp:include page="../foot.jsp"></jsp:include>
    	<script type="text/javascript" charset="utf-8"
    		src="<ph:root/>/s/js/ueditor/ueditor.config.js"></script>
    	<script type="text/javascript" charset="utf-8"
    		src="<ph:root/>/s/js/ueditor/ueditor.all.js"></script>
    	<script type="text/javascript" charset="utf-8"
    		src="<ph:root/>/s/js/ueditor/lang/zh-cn/zh-cn.js"></script>
    </body>
    </html>


    java 后台代码

    controller
    
    
    @Autowired
    	private Executor threadPoolTaskExecutor;
    
    /**
    		    *后台添加电子院报章节内容
    		    * 
    		    * 
    		    */
    		@RequestMapping(value = "/m/periodicals/addContentDo")
    		public void addContentDo(@ModelAttribute PeriodicalsChapter periodicalsChapter,Model model,HttpServletRequest request,HttpServletResponse response){
    			Map<String,Object> map = new HashMap<String,Object>();
    			InputStream is = null;
    			Gson gson = new Gson();
    			try{
    				MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request;  
    				MultipartFile multipartFile = multipartRequest.getFile("upload");
    				String uploadContentType = multipartFile.getOriginalFilename();
    				if(multipartFile != null && multipartFile.getSize() != 0){
    					String expandedName = CommonUtil.checkImg(uploadContentType);
    					if(expandedName.equals("")){
    						map.put("resultCode", 3);
    						map.put("resultMsg", "文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)!");
    						String jsonStr = gson.toJson(map);
    						AjaxUtil.ajaxHtml(jsonStr, response);
    						return ;
    					}
    					String imgName = System.currentTimeMillis() + "_" + ((int) (Math.random() * 900) + 100) + "." + expandedName;
    					is = multipartFile.getInputStream();
    					threadPoolTaskExecutor.execute(
    							new ImageCompressionTask(is, imgName, 520, 320)
    					);
    					periodicalsChapter.setTopThumbUrl(CommonUtil.getFolder(imgName));
    				}//压缩图片				
    				periodicalsChapter.setCreateTime(new Date().getTime());//获取时间
    				periodicalsChapter.setTitle(periodicalsChapter.getTitle());
    				periodicalsChapter.setContent(periodicalsChapter.getContent());
    				periodicalsChapter.setParentId(periodicalsChapter.getParentId());
    				//保存
    			if(periodicalsChapterService.addPeriodicalsChapter(periodicalsChapter)){					
    				map.put("resultCode", 0);
    				map.put("resultMsg", "发布成功");
    				String jsonStr = gson.toJson(map);
    				AjaxUtil.ajaxHtml(jsonStr, response);
    				return ;
    			}else{
    				map.put("resultCode", 1);
    				map.put("resultMsg", "发布失败");
    				String jsonStr = gson.toJson(map);
    				AjaxUtil.ajaxHtml(jsonStr, response);
    			}
    			}catch(Exception e){
    				logger.error("保存异常",e);
    				map.put("resultCode", 1);
    				map.put("resultMsg", "发布失败");
    				String jsonStr = gson.toJson(map);
    				AjaxUtil.ajaxHtml(jsonStr, response);
    			}
    		} 


    1.CommonUti类的checkImg的方法,检查文件的格式
    package com.rmyy.web.common;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import javax.imageio.ImageIO;
    
    import org.apache.commons.fileupload.disk.DiskFileItem;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.commons.CommonsMultipartFile;
    
    import com.rmyy.web.model.Channel;
    import com.rmyy.web.util.DateUtil;
    import com.rmyy.web.util.PropertyFileUtil;
    
    public class CommonUtil {
    	public static   String getFolder(String imgName) {
    		// 图片上下文
    		String imgContext = PropertyFileUtil.get("imgContext");
    		String dateStr = DateUtil.getDate();
    		String imgDir = imgContext + "/" + dateStr + "/";
    		return imgDir+imgName;
    	}
    	
    	public static String  checkImg(String uploadContentType){
    		String expandedName = "";
    		if (uploadContentType.endsWith(".jpg") || uploadContentType.endsWith(".JPG")) {
    			// IE6上传jpg图片的headimageContentType是image/pjpeg,而IE9以及火狐上传的jpg图片是image/jpeg
    			expandedName = "jpg";
    		} else if (uploadContentType.endsWith(".png") || uploadContentType.endsWith(".PNG")) {
    			// IE6上传的png图片的headimageContentType是"image/x-png"
    			expandedName = "png";
    		} else if (uploadContentType.endsWith(".gif")) {
    			expandedName = "gif";
    		} else if (uploadContentType.endsWith(".bmp")) {
    			expandedName = "bmp";
    		}
    		return expandedName;
    	}
    	
    	
    	 // 校验文件尺寸跟大小
    		public static String checkFileImg(MultipartFile file,String photoSizeStr,String photoWidthStr,String photoHeightStr) throws IOException {
    			int photoSize = photoSizeStr!=null?Integer.parseInt(photoSizeStr):0;
            	int photoWidth = photoWidthStr!=null?Integer.parseInt(photoWidthStr):0;
            	int photoHeight = photoHeightStr!=null?Integer.parseInt(photoHeightStr):0;
    			CommonsMultipartFile cf= (CommonsMultipartFile)file;
    			String result = "";
    			String tip = "请上传图片尺寸为"+photoWidth+"*"+photoHeight+"!";
    			BufferedImage image =ImageIO.read(cf.getInputStream());
    			//BufferedImage image = ImageIO.read(f);
    			if (file.getSize() > photoSize * 1024) {
    				result = "文件大小不得大于" + photoSize + "kb!";
    				return result;
    			}
    			if (image.getWidth() < (photoWidth) || image.getWidth() > (photoWidth + 20)) {
    				return tip;
    			}
    			
    			if (image.getHeight() < (photoHeight) || image.getHeight() > (photoHeight + 20)) {
    				return tip;
    			}
    			
    			return null;
    		}
    		
    	
    }
    


    2.图片压缩
    package com.rmyy.web.common.task;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import javax.imageio.ImageIO;
    
    import org.apache.log4j.Logger;
    
    import com.rmyy.web.common.CommonUtil;
    import com.rmyy.web.util.DateUtil;
    import com.rmyy.web.util.ImageUtils;
    import com.rmyy.web.util.PropertyFileUtil;
    
    public class ImageCompressionTask implements Runnable{
    
    	protected static Logger logger = Logger.getLogger(ImageCompressionTask.class);
    	private InputStream is;
    	private int width;
    	private int height;
    	private String fileName;
    	
    	/**
    	 * 初始化参数
    	 * @param file  图片
    	 * @param id    ID
    	 * @param type  图片分类1为商家管理图片2为产品分类图片
    	 * @param fileName  图片名称
    	 * @param width   高
    	 * @param height  宽
    	 */
    	public ImageCompressionTask(InputStream is,String fileName,int width,int height){
    		this.is = is;
    		this.width = width;
    		this.height = height;
    		this.fileName = fileName;
    	}
    	
    	
    	public void run() {
    		try{
    			this.compressPic();
    		}catch(Exception e){
    			logger.error("生成压缩图失败! " ,e);
    		} 
    	}
    	
    	
    	/**
    	 * 图片压缩
    	 * @return
    	 */
    	private String compressPic() throws Exception {
    		String rootPath = PropertyFileUtil.get("imgPath");
    		String path = getFolder(rootPath); //根路径下的子目录
    		String urlPath =  path + fileName;
    		
    		BufferedImage buffImg;
    		FileOutputStream output = null;
    		try {
    			String extentionName = "";
    			if(fileName.lastIndexOf(".") != -1){
    				extentionName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
    			}
    			
    			extentionName = extentionName.toLowerCase(); //没有扩展名的url
    			
    			buffImg = ImageIO.read(is);
    			if(buffImg == null){
    				return null;
    			}
    			BufferedImage compressPic = ImageUtils.compressPicMin(buffImg, width, height);//图片等比缩放
    			if(compressPic != null){ //图片已压缩
    				output = new FileOutputStream(urlPath);
    				ImageUtils.write(compressPic, extentionName, output);//图片输出
    			}
    		}finally {
    			if(output != null){
    				try {
    					output.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    			if(is != null){
    				is.close();
    			}
    		}
    		return "";
    	}
    	
    	
    	
    	//保存路径获取
    	private   String getFolder(String rootPath) {
    		// 图片上下文
    		String imgContext = PropertyFileUtil.get("imgContext");
    		String dateStr = DateUtil.getDate();
    		String imgDir = imgContext + "/" + dateStr + "/";
    		String path = rootPath + imgDir;
    		File dir = new File(path);
    		if (!dir.exists()) {
    			try {
    				dir.mkdirs();
    			} catch (Exception e) {
    				return "";
    			}
    		}
    		return path;
    	}
    
    	
    
    
    	public int getWidth() {
    		return width;
    	}
    
    
    	public void setWidth(int width) {
    		this.width = width;
    	}
    
    
    	public int getHeight() {
    		return height;
    	}
    
    
    	public void setHeight(int height) {
    		this.height = height;
    	}
    
    
    	public static Logger getLogger() {
    		return logger;
    	}
    
    
    	public static void setLogger(Logger logger) {
    		ImageCompressionTask.logger = logger;
    	}
    	
    	public static void main(String args[]){
    		String abc = "abc";
    		String ab2 = "abc";
    		System.out.print(abc==ab2);
    	}
    }
    


    3.图片等比缩放,先要设置宽和高
    package com.rmyy.web.util;
    
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * Description: 图片工具类
     *
     * @author KangWei
     * @Date 11-2-23
     */
    public class ImageUtils {
    	private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
    	
    	
    	/**1111
    	 * 将图片写入输出流
    	 *
    	 * @param image
    	 *            BufferedImage 对象
    	 * @param format
    	 *            输出格式
    	 * @param output
    	 *            输出流
    	 * @throws java.io.IOException
    	 *             IO异常
    	 */
    	public static void write(BufferedImage image, String format,
    			OutputStream output) throws IOException {
    		ImageIO.write(image, format, output);
    	}
    
    	
    
    	
    	/**111
    	 * 图片等比缩放,先要设置宽和高
    	 *
    	 * @param image
    	 * @param
    	 * @throws java.io.IOException
    	 */
    	public static BufferedImage compressPicMin(BufferedImage image,
    			int outputWidth, int outputHeight) throws IOException {
    		if (image == null) {
    			return null;
    		}
    
    		if (image.getWidth(null) < outputWidth
    				&& image.getHeight(null) < outputHeight) {
    			return image;
    		}
    
    		int newWidth;
    		int newHeight;
    		// 为等比缩放计算输出的图片宽度及高度
    		double rate1 = ((double) image.getWidth(null)) / (double) outputWidth;
    		double rate2 = ((double) image.getHeight(null)) / (double) outputHeight;
    		// 根据缩放比率大的进行缩放控制
    		double rate = rate1 < rate2 ? rate1 : rate2;
    		newWidth = (int) (((double) image.getWidth(null)) / rate);
    		newHeight = (int) (((double) image.getHeight(null)) / rate);
    
    		BufferedImage tag = new BufferedImage(newWidth, newHeight,
    				BufferedImage.TYPE_INT_RGB);
    		/*
    		 * Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
    		 */
    		tag.getGraphics().drawImage(
    				image.getScaledInstance(newWidth, newHeight,
    						Image.SCALE_SMOOTH), 0, 0, null);
    		return tag;
    	}
    
    	
    }
    




    4.系统性工具类
    package com.rmyy.web.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    import org.apache.log4j.Logger;
    
    /**
     * 系统属性工具类
     * 
     * @author HenryYan
     */
    public class PropertyFileUtil {
    
    	private static Properties config = null;
    	private static Logger logger = Logger.getLogger(PropertyFileUtil.class);
    	
    	static {
    		InputStream in = PropertyFileUtil.class.getClassLoader().getResourceAsStream("application.properties");
    		config = new Properties();
    		try {
    			config.load(in);
    			in.close();
    		} catch (IOException e) {
    			logger.error("加载系统参数配置异常========", e);
    		}
    	}
    
    	/**
    	 * 根据key 得到value
    	 * @param key
    	 * @return
    	 */
    	public static String get(String key) {
    		try {
    			String value = config.getProperty(key);
    			return value;
    		} catch (Exception e) {
    			logger.error("系统参数配置错误========", e);
    			return null;
    		}
    	}
    }




    展开全文
  • 源码管理 选择 “git”, Repository URL填写你的git地址,并配置对应的key,大家最好事前先在jenkins这台机器上能够直接远程git操作私有仓库 构建触发器、构建环境、Pre Steps保持默认 ...“Root POM”为pom.xml...
    源码管理
    选择 “git”, Repository URL填写你的git地址,并配置对应的key,大家最好事前先在jenkins这台机器上能够直接远程git操作私有仓库
    构建触发器、构建环境、Pre Steps保持默认
     
     
    Build
    “Root POM”为pom.xml, Goals and options 填写 clean install -D maven.test.skip=true
    Post Steps、构建设置保持默认
     
     
    构建后操作
     

    转载于:https://www.cnblogs.com/weifeng1463/p/9200922.html

    展开全文
  • 这篇文章中我们针对JAVA做一个RMI的Java项目实例,供大家参考。 创建远程方法调用的5个步骤: 1、创建一个Java项目 2、定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个RemoteException异常。 ...
  • java项目实例图片等比缩放简化

    千次阅读 2017-11-24 14:38:53
    java图片等比缩放package common; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import javax....
  • 支付宝三种接口实例,都可以用,看你喜欢哪种方式
  • Java项目开发实例

    2015-02-24 11:17:49
    Java项目开发实例
  • JAVA实例项目

    2014-10-28 23:38:07
    这是一个JAVA项目实例,你可以用来作为JAVA项目练习,提高JAVA编程能力
  • Java项目开发实例自学手册
  • 项目实例Java准备与项目建立1. 项目开发环境2. 环境基本调试3. Eclipse中的项目建立与运行4. 其它 1. 项目开发环境 项目开发总体环境 操作系统:win10 Java开发包:jdk7.0 数据库:mysql5.5 开发工具:eclipse ...
  • java 网盘项目实例

    2018-11-15 13:10:07
    课上作业 分享给大家
  • java项目开发实例自学手册,包括环境配置录像,项目实例录像等
  • 实验五 Java 项目开发实例 实验目的 掌握运用 RAD 开发 Java 应用程序 目标要求 1. 掌握运用 Visual Editor 创建窗口应用程序 2. 掌握通过 JDBC 连接数据库 内容简介 本章将介绍 MyLibrary 的 GUI 应用程序 实验说明...
  • 实验五 Java 项目开发实例 实验目的 掌握运用 RAD 开发 Java 应用程序 目标要求 1. 掌握运用 Visual Editor 创建窗口应用程序 2. 掌握通过 JDBC 连接数据库 内容简介 本章将介绍 MyLibrary 的 GUI 应用程序 实验说明...
  • 项目实例在eclipse下开发,所包含的技术主要包括java线程编程,是很好的学习资料
  • java项目开发实例自学手册(源码)

    热门讨论 2013-05-12 21:17:19
    java项目开发实例自学手册(源码)
  • 实验五 Java 项目开发实例 实验目的 掌握运用RAD 开发Java 应用程序 目标要求 1. 掌握运用Visual Editor 创建窗口应用程序 2. 掌握通过JDBC 连接数据 内容简介 本章将介绍MyLibrary 的 GUI 应用程序 实验说明 第一节...
  • 更何况,现在企业对java开发工程师的门槛要求也变高了,不仅要求你技术扎实,还一定要有项目经验。所以,学习的时候,必须参与几个企业级项目开发,以此锻炼自己的项目全局思维,学会如何从整个项目角度出发去思考,...
  • java_web的IOC的初始化,是在初始化Tomcat时自动配置配置spring-web。jar(spring.web包)提供的监听器,此监听器乐意在服务器启动是初始化IOC容器初始化Ioc容易(applicationcontext.xml)1、必须告诉监听器此容易的...
  • java生成报表项目实例

    2013-06-16 21:36:24
    现在用java开发项目一般都少不了报表的生成技术,所以学会很有必要,这里提供一个参考项目
  • Java_项目开发实例

    2012-10-01 00:11:23
    Java_项目开发实例_图书信息管理系统开发文档及源码
  • 1.前面讲解的都是通过直接读取配置文件,进行的实例化ApplicationContextAbstractApplicationContext app = new ClassPathXmlApplicationContext("beans.xml");下面讲解直接通过配置文件进行初始化。2.web....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,673
精华内容 3,469
关键字:

java项目实例

java 订阅