jsp中上传图片(使用ajaxfileupload)

Posted by & filed under Uncategorized.

jsp中无刷新上传图片(前台使用jquery+ajaxfileupload),后台用commons-fileupload处理 需求:前台选择图片,页面显示上传后的图片地址 代码一:ajaxUploadImg.jsp 请百度搜索,并下载jquery.js 及 ajaxfileupload.js   [html] view plaincopyprint? <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%> <%     String path = request.getContextPath();     String basePath = request.getScheme() + “://”             + request.getServerName() + “:” + request.getServerPort()             + path + “/”; %> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> <html>   <head>     <base href=”<%=basePath%>”>     <meta http-equiv=”pragma” content=”no-cache”>     <meta http-equiv=”cache-control” content=”no-cache”>     <meta http-equiv=”expires” content=”0″>     <meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>     <meta http-equiv=”description” content=”This is my page”>     <!–     <link rel=”stylesheet” type=”text/css” href=”styles.css”>     –>     <script language=”javascript” src=”<%=basePath%>js/jquery.js” ></script>     <script language=”javascript” src=”<%=basePath%>js/ajaxfileupload.js” > </script>     <script language=”javascript” type=”text/javascript” src=”<%=basePath%>js/ezeditor.js”></script>     <script type=”text/javascript”>     function ajaxFileUpload()     {     $(“#loading”)         .ajaxStart(function(){             $(this).show();         })//开始上传文件时显示一个图片         .ajaxComplete(function(){             $(this).hide();         });//文件上传完成将图片隐藏起来        $.ajaxFileUpload({                  url:'<%=basePath %>FileUpload’,             //需要链接到服务器地址                  secureuri:false,                  fileElementId:’uploadFileInput’,                         //文件选择框的id属性                  dataType: ‘json’,                                     //服务器返回的格式,可以是json                  success: function (data, status)             //相当于java中try语句块的用法                  {                  //alert(data);       //data是从服务器返回来的值                      $(‘#result’).html(‘上传图片成功!请复制图片地址<br/>’+data.src);                  },                  error: function (data, status, e)             //相当于java中catch语句块的用法                  {                      $(‘#result’).html(‘上传图片失败’);                  }                }              );     }     </script>   </head>   <body>   <div id=”result” style=”FONT:12px 宋体”></div><br/>  <img id=”loading” src=”loading.gif” style=”display:none;”>         <form name=”form_uploadImg” action=”” method=”POST” enctype=”multipart/form-data”>  <input id=”uploadFileInput” type=”file” size=”45″ name=”uploadFileInput” class=”input” />  <input type=”button” id=”buttonUpload” onclick=”return ajaxFileUpload();” value=”上传图片”/>  </form> </html> 代码二: Read more […]

Hibernate 配置详解

Posted by & filed under Uncategorized.

hibernate.hbm2ddl.import_files   这个配置用于在hibernate根据映射文件执行DDL之前,如果我们自己设置了要事先运行的SQL文件,hibernate就会先执行这些SQL文件。比如,在classpath下面任意创建一个SQL文件:ddl.sql,然后添加:   [sql] view plaincopyprint? create table CC(id bigint(19) primary key auto_increment,name varchar(255));   接着配置: [plain] view plaincopyprint? #也可以写成/ddl.sql hibernate.hbm2ddl.import_files=ddl.sql 然后设置 [plain] view plaincopyprint? #设置为hibernate.hbm2ddl.auto=create-drop也行 hibernate.hbm2ddl.auto=create 关于hibernate.hbm2ddl.auto请看这个文章: http://blog.csdn.net/stefwu/article/details/10538385   再启动hibernate,就能看到在创建Hibernate管理的表之前,就已经创建好了CC这个表。   这个配置原理很简单了,说说注意的几个点: 1,这个配置是可以添加多个导入文件的,文件之间只需要使用逗号分隔即可;注意就是这些文件的执行是有顺序的,配置在前面的文件肯定先执行了; 2,这个配置如果不写,那么,相当于默认配置了一个/import.sql; 3,只有在hibernate.hbm2ddl.auto=create或者create-drop的时候才会先执行SQL文件,可以看下面代码: 在SessionFactoryImpl的构造方法里面: [java] view Read more […]

Java中的==和equals区别

Posted by & filed under Uncategorized.

  概述:          A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。          B.对于String a = “a”; Integer b = 1;这种类型的特有对象创建方式,==的时候值是相同的。          C.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。         D.一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与==方法相同。   详述:         ①==和equals的实质。         在JAVA中利用”==”比较变量时,系统使用变量在”栈”中所存的值作为比较的依据。         基本数据类型在”栈”中存的是其内容值,而对象类型在”栈”中存的是地址,这些地址指向”堆”中的对象。         java.lang包中的Object类有public Read more […]

java多线程(转)

Posted by & filed under Uncategorized.

线程对象的几个重要的方法 start()方法。 一个线程对象生成后,如果要产生一个执行的线程,就一定要调用它的start()方法.在介绍这个方法时不得不同时说明run方法.其实线程对象的run方法完全是一个接口回调方法,它是你这个线程对象要完成的具体逻辑.简单说你要做什么就你在run中完成,而如何做,什么时候做就不需要你控制了,你只要调用start()方法,JVM就会管理这个线程对象让它产生一个线程并注册到线程处理系统中。 从表面上看,start()方法调用了run()方法,事实上,start()方法并没有直接调用run方法.在JDK1.5以前 start()方法是本地方法,它如何最终调用run方法已经不是JAVA程序员所能了解的.而在JDK1.5中,原来的那个本地start()方法被 Read more […]

Java中this关键字的几种用法[转]

Posted by & filed under Uncategorized.

1. 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己) 如:public class Hello { String s = “Hello”; public Hello(String s) { System.out.println(“s = ” + s); System.out.println(“1 -> this.s = ” + this.s); this.s = s;//把参数值赋给成员变量,成员变量的值改变 System.out.println(“2 -> this.s = ” + this.s); } public static void main(String[] args) { Hello x = new Hello(“HelloWorld!”); System.out.println(“s=” + x.s);//验证成员变量值的改变 } } 结果为:s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld! s=HelloWorld! 在这个例子中,构造函数Hello中,参数s与类Hello的成员变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果; Read more […]

二元查找树转变成排序的双向链表—算法思想及java实现[转]

Posted by & filed under Uncategorized.

把二元查找树转变成排序的双向链表(树)(来自July大神的《算法面试100题》,果断抱大腿呀) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / | 6 14 / | / | 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 二叉查找树的特点:任意节点的左子树都要小于当前节点;右子树都要大于当前节点。 特点:查询某个值,需要的时间复杂度为O(lgN)。 现在要求将其由树状结构改造成线性结构的双向链表,感觉重点在于,获得当前节点左子树范围内最右节点(也是左子树最大值节点),以及右子树范围内最左节点(也是右子树最小值节点),然后,调整这两个节点与当前节点左右顺序。以本题为例,就是要调整8、10之间的关系,和12、10之间的关系(8的右节点为10,10的左节点为8;12的左节点为10,10的右节点为12)。 当然,这种三层关系的树看起来很简单,如果层次多了,就需要分析,如何将其中的共性抽象出来。 也是最近两天才看到July大神的这个帖子,目前还没看到答案那块。不过他的提示,结构体,猜测他用的是C++实现的。C++自己也忘的差不多了,这边就用Java实现下。 数据结构,依然沿用July的value,left,right方式。 算法思路: 1. Read more […]

struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现[转]

Posted by & filed under Uncategorized.

今天我们来 谈一下struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现   下边只在注册中实现   1、首先是在常用软件下载Action中写出生成验证码所需的方法(下边是在MemberAction.java中写)   [java]   package www.csdn.dbshop.action;   import org.apache.struts2.ServletActionContext;   import www.csdn.dbshop.domain.Admin;   import www.csdn.dbshop.domain.Member;   import www.csdn.dbshop.service.BaseService;   import www.csdn.dbshop.service.MemberService;   import www.csdn.dbshop.service.impl.BaseServiceImpl;   import www.csdn.dbshop.service.impl.MemberServiceImpl;   import www.csdn.dbshop.util.Pagination;   import www.csdn.dbshop.util.StringUtil;   import Read more […]

分享学习JAVA的几点心得体会[转]

Posted by & filed under Uncategorized.

Java是近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”、“倚天剑”。Java是一个平台,下面介绍初学者学习JAVA的六大办法。 1.欲速则不达 初学者请不要被新技术迷惑,先把基础学扎实。 JAVA私塾的基础入门教材完全是老师自已编写,配合有视频讲解,大家可以免费索取,并不是它说了多少知识,多少api.它只说了更多的“基础知识” 2.要扎扎实实 一步一个脚印的逐步学习,不要想着一步登天。给自己定一个学习流程,按照流程学习。不要看到大家都在学ejb了,就去学ejb.发现大家又在讨论struts,又放下EJB去学struts.浮躁的人永远学不到什么东西。 3.多查API 它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去此时一下。 4.看再多的书是学不全脚本的,要多实践 学习脚本最好的方法之一就是多练习;不要只看不练,一定要把书上的例子亲手敲到电脑上实践,千万不要照抄,更不要复制粘贴; Read more […]

java枚举[转]

Posted by & filed under Uncategorized.

1. 什么是枚举?枚举就是用来存放一组固定的常量。 2. 枚举有什么作用?一些程序在运行时,它需要的数据不能是任意的,而必须是一定范围内的值;例如性别 男和女。 [java] view plaincopyprint? public enum Gender{ 男, 女; } public static void main(String[] args) { // TODO Auto-generated method stub Gender gender=Gender.男; switch(gender){ case 男: System.out.println(“性别是男的”); break; case 女: System.out.println(“性别是女的”); break; default: System.out.println(“枚举没有这个值”); break; Read more […]

(转)从 C -> C++ -> JAVA -> GO 看语言进化历程

Posted by & filed under Uncategorized.

最近进了新书《深入理解C++11》和《GO语言编程》,都是国人撰写或参与的佳作。记录一下心得。   1972年  C 由struct领衔,简单而直观的内存布局。 威力强大的指针的广泛使用,参数传递为传值。 缺点:过程式的语言,对于大型软件开发效率低(当然偏硬件的软件如linux是当仁不让的首选) 1980年  C++ 完全兼容C的基础上,对象特性的导入(public,virtual,::等) ->后果:导致C++的内存布局非常复杂 构造函数和析构函数的设计导致new和delete的出现。 ->后果:程序员的很大精力在于维护delete是否被正确地执行。 第一大难题就是应对,传值给对象赋值语句造成的麻烦。(到处都有白白浪费无谓的构造函数在执行) 1)引入操作符重载和引用,实现拷贝赋值操作符。 2)引用还顺便解决了参数传递的效率问题。 3)C++11又增加了移动构造函数和完美转发,终于基本解决了堆中临时对象被反复构造对象的情况。 ->后果:C++的编译器为了上面这些特性真是煞费苦心,C++11中有多达14个默认函数(6个成员函数,8个操作符函数)。很多场合需要各种智能指针来支援(再次引入复杂性)。 引入异常机制try-catch。 ->后果:更是让正确调用析构函数的难度雪上加霜。 引入泛型和模板,解决集合类型安全问题。(替换法) 引入STL,一个经典的集合类实现源码。 在不断解决C的遗赠问题和导入新特性的同时,也打开了C++编程复杂度的潘多拉魔盒。 缺点:还用说吗,太复杂了。(从C++那为数众多的“必读”进阶书可以看出学习曲线多么陡峭) 新的C++11标准更新面之宽,更是让C++有不堪重负的倾向。(目前还在研究中。。。)   1995年  Read more […]