下载地址:http://code.google.com/p/freecms/
ajaxInfoClick
根据参数通过ajax更新信息点击量。
参数
说明
infoid
信息id
spanArr
此标签会生成span标签,此属性用于设置span标签的属性
返回值
说明
ajaxInfoClickHtml
生成的内容
参数
说明
infoid
信息id
spanArr
此标签会生成span标签,此属性用于设置span标签的属性
返回值
说明
ajaxInfoClickHtml
生成的内容
参数
说明
infoid
信息id
spanArr
此标签会生成span标签,此属性用于设置span标签的属性
返回值
说明
ajaxInfoClickHtml
生成的内容
参数
说明
infoid
信息id
spanArr
此标签会生成span标签,此属性用于设置span标签的属性
返回值
说明
ajaxInfoClickHtml
生成的内容
示例1
信息页面更新并显示点击量。
<@ajaxInfoClick infoid="${currInfo.id}" spanAttr="";ajaxInfoClickHtml>
${ajaxInfoClickHtml}
</@ajaxInfoClick>
已有 0 人发表留言,猛击->>这里<<-参与讨论
ITeye推荐
- —软件人才免语言低担保 赴美带薪读研!—
C++单例模式详解
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。
单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。
《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。
单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯一实例的指针。
定义如下:
class CSingleton
{
//其他成员
public:
static CSingleton* GetInstance()
{
if ( m_pInstance == NULL ) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
private:
CSingleton(){};
static CSingleton * m_pInstance;
};
用户访问唯一实例的方法只有GetInstance()成员函数。如果不通过这个函数,任何创建实例的尝试都将失败,因为类的构造函数是私有的。GetInstance()使用懒惰初始化,也就是说它的返回值是当这个函数首次被访问时被创建的。这是一种防弹设计——所有GetInstance()之后的调用都返回相同实例的指针:
CSingleton* p1 = CSingleton :: GetInstance();
CSingleton* p2 = p1->GetInstance();
CSingleton & ref = * CSingleton :: GetInstance();
对GetInstance稍加修改,这个设计模板便可以适用于可变多实例情况,如一个类允许最多五个实例。
单例类CSingleton有以下特征:
它有一个指向唯一实例的静态指针m_pInstance,并且是私有的;
它有一个公有的函数,可以获取这个唯一的实例,并且在需要的时候创建该实例;
它的构造函数是私有的,这样就不能从别处创建该类的实例。
大多数时候,这样的实现都不会出现问题。有经验的读者可能会问,m_pInstance指向的空间什么时候释放呢?更严重的问题是,该实例的析构函数什么时候执行?
如果在类的析构行为中有必须的操作,比如关闭文件,释放外部资源,那么上面的代码无法实现这个要求。我们需要一种方法,正常的删除该实例。
可以在程序结束时调用GetInstance(),并对返回的指针掉用delete操作。这样做可以实现功能,但不仅很丑陋,而且容易出错。因为这样的附加代码很容易被忘记,而且也很难保证在delete之后,没有代码再调用GetInstance函数。
一个妥善的方法是让这个类自己知道在合适的时候把自己删除,或者说把删除自己的操作挂在操作系统中的某个合适的点上,使其在恰当的时候被自动执行。
我们知道,程序在结束的时候,系统会自动析构所有的全局变量。事实上,系统也会析构所有的类的静态成员变量,就像这些静态成员也是全局变量一样。利用这个特征,我们可以在单例类中定义一个这样的静态成员变量,而
基于Spring3 MVC实现基于form表单文件上传
一:杂项准备
环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169
二:前台页面
根据RFC1867,只要在提交form表单中声明提交方法为POST,enctype属
性声明为multipart/form-data, action声明到要提交的url即可。具体如下:
三:spring配置
使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。
需要配Multipart解析器在express-servlet.xml中。内容如下:
同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。
四:Controller中方法实现
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public ModelAndView getUploadFile(HttpServletRequest request, HttpServletResponse response) { System.out.println("fucking spring3 MVC upload file with Multipart form"); String myappPath = request.getSession().getServletContext().getRealPath("/"); try { if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; System.out.println("fucking spring3 MVC upload file with Multipart form"); // String myappPath = multipartRequest.getServletContext().getRealPath("/"); // does not work, oh my god!! MultipartFile file = multipartRequest.getFiles("userfile1").get(0); long size = file.getSize(); byte[] data = new byte[(int) size]; InputStream input = file.getInputStream(); input.read(data); // create file, if no app context path, will throws access denied. // seems like you could not create any file at tomcat/bin directory!!! File outFile = new File(myappPath + File.separator + file.getOriginalFilename()); if(!outFile.exists()) { outFile.createNewFile(); System.out.println("full path = " + outFile.getAbsolutePath()); } else { System.out.println("full path = " + outFile.getAbsolutePath()); } FileOutputStream outStream = new FileOutputStream(outFile); outStream.write(data); outStream.close(); input.close(); } } catch (Exception e) { e.printStackTrace(); } return new ModelAndView("welcome"); }
常见问题:
1. java.io.IOException: Access is denied避免这个错误是把文件创建在app
context path的下面所以要获取servlet context的本地路径。
2. Request类型不是MultipartHttpReqest类型,原因是没有配置spring的Multipart解析器
Chrome中运行截屏:
转载请注明