??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美成人小视频,在线播放精品,你懂的免费在线观看视频网站 http://www.aygfsteel.com/samyang/<br>
<B>QQ:418148757</B><br>
<B>Name:yangchuan</B><br>
<b></b> zh-cn Fri, 16 May 2025 23:37:19 GMT Fri, 16 May 2025 23:37:19 GMT 60 Hander与HanderThreadQLooper以及(qing)MessageQueue和Message之间的关p? http://www.aygfsteel.com/samyang/archive/2012/07/19/383520.htmlsam.chuan.yang sam.chuan.yang Thu, 19 Jul 2012 08:59:00 GMT http://www.aygfsteel.com/samyang/archive/2012/07/19/383520.html http://www.aygfsteel.com/samyang/comments/383520.html http://www.aygfsteel.com/samyang/archive/2012/07/19/383520.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/383520.html http://www.aygfsteel.com/samyang/services/trackbacks/383520.html Hander与HanderThreadQLooper以及(qing)MessageQueue和Message之间的关p?
以上q几个东西的目的是设计来解决位于ȝE中的某些操作比较耗时Q比如httpclienthQ,影响界面响应Q而导
致主E序无法处理其他监听事g。致使程序卡ȝ问题。(界面提示Q无响应关闭Q?/p>
1QHandler对象 中有两个属性,一个是来自于当前线E(或者拥有Looper对象的线E)(j)的threadlocal变量中的Looper
对象和该looper对象中的messagequeue属性?br />有这两个属性的目的主要是往当前U程的looper对象的messagequeue队列中加入message对象?br />2QMessage对象Q也有两个重要的属性,一个是Hander对象Q这个handler对象是把该message加入队列的那
个handler对象Q另一个对象就是bundle对象Q这个对象的目的是用来存储数据Q相当于一个hashmap对象?/p>
3QLooper对象Q有一个重要的属性就是MessageQueue对象QLooper的loopҎ(gu)Q会(x)不断的从该队列中dmessage?/p>
象,q调用messgae对象中的Hander属性对象的dispatherMessageQmsgQ方法,该方法,是?x)?/p>
用handler的handleMessageҎ(gu)Q?也就是我们重写的那个Ҏ(gu))?/p>
4QMessageQueue对象Q管理message的队列对象,它有一个属性就是Message对象QMessageQueue中始l只有一
个message对象Q因为message对象是一个链式结构的对象Q它的prv和next属性记录了(jin)他之前和之后的message对象Q所
以,我们调用MessageQueue的nextҎ(gu)p回的需要的message对象?/p>
从hander与Looper以及(qing)MessageQueue和Message的关pM我们可以看出来,执行程如下Q?br /> 1Q有人创建hander对象Qƈ取得对应的Looper对象赋给该handerQ通过Hander的sendmessage或postҎ(gu)handler
包装到message对象中, 再将该message对象加入到消息队列中。(消息队列是Looper对象中消息队列属性)(j) 2Q线E(理Looper对象的线E)(j)不断的调用Looper对象中的loopҎ(gu)QloopҎ(gu)又从messageQueue队列中获
取Message对象Q然后调用该对象里的hander属性对象的dispatherMessageQmsgQ方法,从而,依次执行我们加入
的handlerd?/p>
q就是hander的处理流E。那么HandlerThread是做什么的Q他是一个管理Looper对象的线E类。我们的Looper一般来?/p>
于两个地方,一个地方就是主U程的Looper对象Q另一个就是我们另外开启一个线E来创徏和管理Looper?/p>
象。android提供已经l我们提供了(jin)一U这L(fng)一个类Q那是HandlerThread对象?/p>
]]>山寨版struts2 http://www.aygfsteel.com/samyang/archive/2012/05/02/377205.htmlsam.chuan.yang sam.chuan.yang Wed, 02 May 2012 09:36:00 GMT http://www.aygfsteel.com/samyang/archive/2012/05/02/377205.html http://www.aygfsteel.com/samyang/comments/377205.html http://www.aygfsteel.com/samyang/archive/2012/05/02/377205.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/377205.html http://www.aygfsteel.com/samyang/services/trackbacks/377205.html 本框架有以下几个功能Q?/span>1Q把h数据装为参ClactionҎ(gu)Q包括文件的上传?/span>2Q拦截器的配|和功能与struts2一模一栗?/span>3Q默认主持几U视图方式:(x)jsonQvelocity。stream?/span>4Q容易扩展,可以Ҏ(gu)需要扩展页面渲染器?/span>5Q请求地址可灵z配|?/span>6Q同struts2一样可以选择配置spring做bean容器。当然也可以不用?/span>7Q默认集成了(jin)一个小的定时Q务和数据库处理器 源代码和demo下蝲地址Q欢q大家拍?a > http://sourceforge.net/projects/xsshweb/files/ ]]> struts2的小bug http://www.aygfsteel.com/samyang/archive/2012/04/10/373747.htmlsam.chuan.yang sam.chuan.yang Tue, 10 Apr 2012 15:13:00 GMT http://www.aygfsteel.com/samyang/archive/2012/04/10/373747.html http://www.aygfsteel.com/samyang/comments/373747.html http://www.aygfsteel.com/samyang/archive/2012/04/10/373747.html#Feedback 1 http://www.aygfsteel.com/samyang/comments/commentRss/373747.html http://www.aygfsteel.com/samyang/services/trackbacks/373747.html struts2.1.6的时候,有编码问题,主要是因Z把设|编码的那行代码没放在最前面?br />struts2.2.1的时候,又出来一个低UbugQ那是一直以来模板的加蝲都是先查找web.xml中查抄templatePath的配||然后才从web应用目录查找Q最后才是从class和jar中查找。结果在2.2.1中就犯了(jin)一个低UbugQ那是永远找不到web应用目录?代码在:(x)org.apache.struts2.views.freemarker.FreemarkerManager.class?br /> public void init(ServletContext servletContext) throws TemplateException { this.config = createConfiguration(servletContext);
this.config.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER); this.contentType = "text/html";
this.wrapper = createObjectWrapper(servletContext); if (LOG.isDebugEnabled()) LOG.debug("Using object wrapper of class " + this.wrapper.getClass().getName(), new String[0]);
this.config.setObjectWrapper(this.wrapper);
this.templatePath = servletContext.getInitParameter("TemplatePath"); if (this.templatePath == null) this.templatePath = servletContext.getInitParameter("templatePath");
if (this.templatePath == null) this.templatePath = "class://"; this.config.setTemplateLoader(createTemplateLoader(servletContext, this.templatePath));
loadSettings(servletContext); } protected TemplateLoader createTemplateLoader(ServletContext servletContext, String templatePath) { TemplateLoader templatePathLoader = null; try { if (templatePath.startsWith("class://")) { templatePathLoader = new ClassTemplateLoader(super.getClass(), templatePath.substring(7)); } else if (templatePath.startsWith("file://")) templatePathLoader = new FileTemplateLoader(new File(templatePath)); } catch (IOException e) { LOG.error("Invalid template path specified: " + e.getMessage(), e, new String[0]); }
if (templatePathLoader != null); return new MultiTemplateLoader(new TemplateLoader[] { new WebappTemplateLoader(servletContext), new StrutsClassTemplateLoader() }); } 不过Q这个问题已l在2.3的版本中修复q来?jin)?/p>
]]> 关于|站pȝ优化的疑问,D{?/title> http://www.aygfsteel.com/samyang/archive/2011/12/22/367040.htmlsam.chuan.yang sam.chuan.yang Thu, 22 Dec 2011 13:49:00 GMT http://www.aygfsteel.com/samyang/archive/2011/12/22/367040.html http://www.aygfsteel.com/samyang/comments/367040.html http://www.aygfsteel.com/samyang/archive/2011/12/22/367040.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/367040.html http://www.aygfsteel.com/samyang/services/trackbacks/367040.html 背景Q网站中几类变化很小的数据分为几c:(x)W一c,博客文章Q新闻,Q百培网站中的课E信息,分校信息Q地图数据等Q?br /> W二c:(x)学校各种门户Q聚集页面。比如网站的首页Q?br />其中W一c:(x)变化最,一旦生,变化的可能性就很小?br />W二U:(x)讉K机率很大Q时常变化,主要q辑h员手动维护?/p>
Ҏ(gu)Q:(x)提供两台memcached服务器Q主从关p,保证数据E_Q,访问这两类数据的方法缓存。在数据变更以后更新~存卛_ 主要目的是隔频J的数据的访问?br />Ҏ(gu)Q:(x)这两类数据都生成静(rn)态html文Ӟ通过nginx指定前台缓存访问。缺Ҏ(gu)更新数据后要生成新的文gQ担?j)时间久?br />以后有磁盘碎片。另外多ơ读取文Ӟ可能有磁盘io影响。如果缓存到前台Q后台数据变更了(jin)Q前台可能很隑־到新的版?br />Ҏ(gu)Q:(x)第一cȝ成静(rn)态文ӞW二c通过Ҏ(gu)~存hQ看上去好,但是我觉得实现v来比较困难?br />实际上方案2Q3都有一个实C比较ȝ(ch)的地方,那就是所有的面头部有一个用L(fng)d信息。如果缓存成文gq样我目前所?br />头部的数据只能通过ajax来得M(jin)Q这样不但多?jin)一ơ网lioQ也不允?dng)R面可以后退?/p>
另外Q我做这个方案有两个目的Q一U就是提高访问速度Q另外就是想从缓存的基础上做数据库读写分,以便某些l计数据可以白天 ?qing)时的?/p>
]]> iframe自适应高度 http://www.aygfsteel.com/samyang/archive/2010/10/21/335763.htmlsam.chuan.yang sam.chuan.yang Thu, 21 Oct 2010 01:56:00 GMT http://www.aygfsteel.com/samyang/archive/2010/10/21/335763.html http://www.aygfsteel.com/samyang/comments/335763.html http://www.aygfsteel.com/samyang/archive/2010/10/21/335763.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/335763.html http://www.aygfsteel.com/samyang/services/trackbacks/335763.html Ext.onReady(function() {
function reinitIframe(){
var iframe = document.getElementById("frame_content");
try{
var bHeight = iframe.contentWindow.document.body.scrollHeight;
}catch (ex){
var bHeight = 0;
}
try{
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
}catch (ex){
var dHeight = 0;
}
if(dHeight!=0 && bHeight!=0){
var height = Math.min(bHeight, dHeight);
}else{
var height = Math.max(bHeight, dHeight);
}
if(Ext.isGecko){
height = height+30;
}
iframe.style.height = height+"px";
}
window.setInterval(function(){
reinitIframe()
}, 200);
});
]]> Ext下类函数定义 http://www.aygfsteel.com/samyang/archive/2010/06/29/324724.htmlsam.chuan.yang sam.chuan.yang Mon, 28 Jun 2010 23:07:00 GMT http://www.aygfsteel.com/samyang/archive/2010/06/29/324724.html http://www.aygfsteel.com/samyang/comments/324724.html http://www.aygfsteel.com/samyang/archive/2010/06/29/324724.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/324724.html http://www.aygfsteel.com/samyang/services/trackbacks/324724.html
一QExt下类函数定义
extcore通过QExt.extendҎ(gu)来创建类Q构造函敎ͼ(j)Q这个类以下用sb代替?br />
q个cd数默认会(x)有这些属性(cd性)(j)?br />
superclassQ父c,也就是第一个或W二个参数的prototype属性对象。(具体Ҏ(gu)传入的参数类型决定)(j)
superclass(): 父类Q?sb.propertype? q是一个函敎ͼ该函数返回父cȝpropertype对象
supr():同上
constructor()Q构造函敎ͼQsb函数的propertype对象下)(j)实际上引用的是sb函数自己?br />
override(o)Q重写方法,Qsb函数下)(j)Q调用的?Ext.override(sb, o);也就是将o中的属性复制到sb的propertype下?br />
override(o)Q重写方法,Qsb.propertype下)(j)也就是将o的属性复制到sb的propertype下?br />
extend(o):(sb函数?,该函数调用的是Ext.extend(sb.o);
Ext.extend(sb, sp, overrides)Ҏ(gu)有三个参敎ͼq三个参数有一定的cd要求Q?br />
sb 一般情况下是一个类函数?br />
spQ有两种情况Q一U是cd敎ͼ另一U是Q一个Object对象?br />
overridesQObject对象Q通过Ext.override(sb, overrides);Ҏ(gu)覆盖cd象的属性?/p>
通过代码分析Q可以看出Ext.extendҎ(gu)有两个应用:(x)
W一Q?br />
因ؓ(f)js没有重构语法Q所以我们没办法定义jsҎ(gu)的重构,而上边这个extendҎ(gu)Q可以说是一U重构的实现。因为,我们通过代码的分析,我们可以ȝ出extendҎ(gu)的参C
递方式?用面向对象语a来表C的话,如下l构)
1:extend(Calss sb,Object sp);
2:extend(Calss sb,Class sp);
3:extend(Calss sb,Class sp,Object overrides);
W一U方式目的是定义一个类函数Q这个类函数的父cMؓ(f)sbcd敎ͼ属性方法的定义在sp对象中完成?br />
比如Q?var Student = Ext.extend(Person,{
constructor:function(old){
this.age=old;
},
name:'sam'}
})
其实通过
if(Ext.isObject(sp)){
overrides = sp;
sp = sb;
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
}
我们可以看出Ext.extend
只有在sp.constructor==Object.prototype.constructor的时候,才创建ƈq回一个函敎ͼ该函数就一句话Q?/p>
是调用sbQ即父类构造函敎ͼ(j)
如果sp.constructor==Object.prototype.constructor
那么sp应该是这P是一个对象直接量Q或者new Object方式创徏的对象,且它们都没有昄定义
constructorҎ(gu)?/p>
以下q几U情况都不会(x)有sp.constructor==Object.prototype.constructor?/p>
1Qvar obj = new Object();
obj.constructor=function(){...};
Ext.extend(sb,obj) //extend q回的类是constructor函数
2: var obj = {
constructor:function(){...}
};
Ext.extend(sb,obj) //extend q回的类是constructor函数
3: var obj = new function(){...}();
Ext.extend(sb,obj) //extendq回的类是q个匿名函数
4: var obj = new function(){
this.constructor=function(){...}
}();
Ext.extend(sb,obj) //extend q回的类是constructor函数?/p>
ȝ Q其实很?Ext.extendq么做的目的是要_(d)定义一个类Q构造函数就是constructorҎ(gu)Q如果没昄定义q个Ҏ(gu)Q那么类׃用父cdC为新cȝ构造函数?/p>
var A=function(){
alert("this is a");
}
var B=function(){
alert("this is b");
}
var SubA = Ext.extend(A,new B());
var subA = new SubA();//q里׃(x)弹出 this is a 的提C?
W二U方式:(x)修改现有cȝcȝ?br />
2:extend(Calss sb,Class sp);
q个Ҏ(gu)的目的其实之一U包装,是将sbl承于sp下,不管sb是不是ext框架下的c,在这个方法执行后sb成?jin)ext框架
下的cȝ构了(jin)
3:extend(Calss sb,Class sp,Object overrides);
除了(jin)有第二种Ҏ(gu)的功能外Q还额外的给sbd或覆盖新的方法或属?br />
Ext.extend(Person,DongWu);
Ext.extend(Person,DongWuQ{sex:'man'});
]]> struts2验证p|后返回inputQselect中list数据丢失问题 http://www.aygfsteel.com/samyang/archive/2010/05/15/321019.htmlsam.chuan.yang sam.chuan.yang Sat, 15 May 2010 01:35:00 GMT http://www.aygfsteel.com/samyang/archive/2010/05/15/321019.html http://www.aygfsteel.com/samyang/comments/321019.html http://www.aygfsteel.com/samyang/archive/2010/05/15/321019.html#Feedback 2 http://www.aygfsteel.com/samyang/comments/commentRss/321019.html http://www.aygfsteel.com/samyang/services/trackbacks/321019.html 很多人都在问Qstruts2验证p|后select中list数据丢失的问?/p>
could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name}?br />
其实q个问题很简单,大多ChQ是通过action跌{到数据编辑页面的Q这样做的目的是方便把数据库里的数据Q反昑ֈ面。同时也可以通过该action select中的列表数据从数据库中取出,传递给面。但是,q里出现一个问题,那就是在struts2验证p|后返回input的时候,面不是通过该action的该Ҏ(gu)传递回ȝQ实际上是通过DefaultWorkflowInterceptor拦截器拦截回ȝQ,所以这个时候页面就找不到sleect的数据集合,从而报错。有的h也许?x)问Q修改input的type为redirectQ直接掉转到那个action上去Q呵呵,q种Ҏ(gu)虽然可以保证得到select的数据集合,因ؓ(f)redirect的性质Q我们丢׃(jin)之前验证的错误信息。所以还是不能解决问题,那么有的人可能说?jin),那么改用chain可以了(jin)吧,如果改用chainQ我们知道,chain是action铄掉{Q执行actionq是要经q拦截器Q所以因Z带有验证错误信息Q你q是?x)被DefaultWorkflowInterceptor拦截器拦截,q是?x)报错,而且是chainN?br />
其实Q可以反一U思\Q既然走跌{不成功,我们可不可以在页面上下功夫呢。其实我们的select的list能不能不l过action而直接得到数据呢Q是可以的,我们的ognl可以讉K某个对象的某个方法,也可以访问某个静(rn)态类的静(rn)态属性,?rn)态方法。所以我们可以将q些数据通过对象Ҏ(gu)讉KQ也可以通过?rn)态类的静(rn)态方法去讉KQ具体怎么做,Ҏ(gu)需要写可以了(jin)。代码就不在q里写了(jin)Q因为非常简单?
]]> jcreator+tomcat环境配置 http://www.aygfsteel.com/samyang/archive/2010/04/07/317639.htmlsam.chuan.yang sam.chuan.yang Wed, 07 Apr 2010 06:40:00 GMT http://www.aygfsteel.com/samyang/archive/2010/04/07/317639.html http://www.aygfsteel.com/samyang/comments/317639.html http://www.aygfsteel.com/samyang/archive/2010/04/07/317639.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/317639.html http://www.aygfsteel.com/samyang/services/trackbacks/317639.html 有的时候因为机器硬件原因,在用eclipse的时候明显表CI其实Q仔l想惻I我们做web开发的时候,java斚w也就是一些非guicȝ开发,比如QactionQserviceQdao{等。这L(fng)事情Q其实我们用jcreator来做的话Q够了(jin)。而jcreatorq行h也就50多mQ我想现在再差的g环境应该也跑得v来了(jin)。那么写E序最重要的是debugQ我们怎么来配|debug呢。其实这里用tomcat的远E调试就可以?jin),我们只需要在tomcat的catalina.bat文g中找到set DEBUG_OPTSQƈ修改Z边的内容Q?br />
set DEBUG_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8019
然后你点击jcreator的run菜单下的attach by socket,在弹出的H口中的address栏输入tomcat服务器,比如127.0.0.1Q然后再其后边的一个输入框输入刚才的端?019.Q注Qtomcat用的?.018解压版,jcreator用的?.5版)(j)然后点击okQ前提是tomcat已经启动?jin)哈Q这个时候jreactorp入了(jin)debug模式Q你可以调试程序了(jin)?/p>
]]> DIY mvc框架 http://www.aygfsteel.com/samyang/archive/2009/03/15/259814.htmlsam.chuan.yang sam.chuan.yang Sun, 15 Mar 2009 03:32:00 GMT http://www.aygfsteel.com/samyang/archive/2009/03/15/259814.html http://www.aygfsteel.com/samyang/comments/259814.html http://www.aygfsteel.com/samyang/archive/2009/03/15/259814.html#Feedback 0 http://www.aygfsteel.com/samyang/comments/commentRss/259814.html http://www.aygfsteel.com/samyang/services/trackbacks/259814.html
起因Q?8q?月有q外包到?jin)H公司在L?jng)的bi目l,更有q的是,我做?jin)我喜欢的前台编码工作。可是,{我开始正式工作的时候,我才发现我接下来的工作的痛苦。这是一个老系l,利用的是struts+spring+hibernatel典框架Q应该说q个东西q是很不错的。就是太ȝ(ch)?jin),我们每次修改一个功能或d一个功能,臛_都要接触??个配|文Ӟ其中业务层的bean需要spring配置两个Qؓ(f)本模块加一bean配置Q然后又要将q个配置文g的信息包含到一个ȝ配置文g里。orm持久层的配置Q实体bean需要一个配|,Q该pȝ是利用配|文件读取实体bean的配|文件的Q,所以也要将q个配置文g包含到另一个文仉。mvc配置文gQ该模块需要一个配|文Ӟ当然q需要在web.xml里包含这个配|文件?br />
另外q有一点,是struts1有个~点是一个actionc配|一个actionFormQ要不就是用动态的Q要不就是承它的actionform。这样其实很ȝ(ch)Q比如我有一个增删查改的面Q我放C个actionc里d理,其实在这个类里,我有不同的表单,比如Q查询表单,实体表单。针对不同的Ҏ(gu)Q传入不同的表单对象。还有就是对于以单的增加删除Q很希望Q不多做M事情Q直接从面表单一步就到数据库?jin)。struts1倒是能解册个问题,但是始终是要多写一个actionformc,q要去配|他。总觉得麻?ch)?br />
lg所qͼ(x)其实我想解决配置文g多和J琐的问题,另外是希望mvc框架提供同一个action可以传入不同的表单实体,同一个actionҎ(gu)可以接受多个不同的表单实体?br />
我的愚思:(x) 我是q么想的Q我觉得Q解决配|文件的问题Q完全可以利用注解来配置Q我们的业务层,持久层完全可以利用注解来解决Q甚x们的mvc其实也可以利用注解来解决。业务层Q持久层׃说了(jin)Qspring+hibernate早就q么q了(jin)。至于mvcQ其实流行框架也q么q了(jin)Q不q我是想DIY一把,利用spring强大的bean理能力Qmvc的action直接放在spring里了(jin)Q通过分析h地址得到bean的名Uͼ从而知道调用哪一个actionQ分析请求中的特定参敎ͼ来确定访问a(chn)ction bean里对应的Ҏ(gu)?br />
详细Q?整个框架因ؓ(f),所以仅需要一个filter可以了(jin)Q所有的h都通过q个filterQ在它里面我的主要工作就是分析请求地址Q取出它里面含有.do的字串作为action bean的nameQ然后通过springq回该action对象。通过取出action参数|做ؓ(f)此次h需要调用的action Ҏ(gu)?br />
在调用实际的action之前我们q需要做一个事情,那就是将提交上来的表单,分门别类的装入到不同的javabean里(实体beanQ或查询beanQ,通过注解讉K上边扑ֈ的actionҎ(gu)Q找到该Ҏ(gu)对应的@actionForm注解Q提取该Ҏ(gu)需要的javabeanQP代出每一个bean的属性名Uͼ以及(qing)属性类型,q用propertyManager所理的不同类型的属性编辑器表单里对应的数据{化ؓ(f)属性值存入到javabean里。(当然q里需要将表单里的html元素名称与javabean里的属性名UC_(d)(j)。最后一步,关于actionҎ(gu)的返回,我做?jin)一个处理器。将q回的数据存入到map中,Ҏ(gu)需要做不同的返回?br />
Z(jin)方便处理ajaxq回Q我也DIY?jin)一个json处理器,所有对象{化成json字串Q供前台面调用?br />
个h体会(x)Q?q个框架有几个好处,action c,不用l承Mc,看上d是一个简单的javac,Ҏ(gu)不再依赖requestQresponse对象Q方便做单元试。同一个方法可以传入不同的javabean对象Q可直接持久层对象与表单数据绑定,不用多写额外的actionForm对象。加上spring的注解功?br />
基本减少?0%的配|信息,而且不容易因为配|失误而出错。方便做权限理Q通过hQ控制actionQ控制方法,只要分析hQ就可用权限\业务?br />
我的一个案列:(x)后来利用q个框架为客户做?jin)一个考核pȝ。整体代码应该说好是非常z的。比如我的一个简单存储。就如下单:(x)
@Component("/targetAction")
public class TargetAction {
@Autowired()
@Qualifier("targetService")
private ItargetService itargetService;
@ActionForm(TblBsTargetInfo.class)
public Object add(Object form, HttpServletRequest request,
HttpServletResponse response) {
itargetService.saveTarget((TblBsTargetInfo) formQ?
return new JsonResultHandler(“ok”);
}
]]> james邮g服务器的配置 http://www.aygfsteel.com/samyang/archive/2008/11/26/242778.htmlsam.chuan.yang sam.chuan.yang Wed, 26 Nov 2008 05:24:00 GMT http://www.aygfsteel.com/samyang/archive/2008/11/26/242778.html http://www.aygfsteel.com/samyang/comments/242778.html http://www.aygfsteel.com/samyang/archive/2008/11/26/242778.html#Feedback 1 http://www.aygfsteel.com/samyang/comments/commentRss/242778.html http://www.aygfsteel.com/samyang/services/trackbacks/242778.html 恩,本来工具性东西没有什么可以说的,都比较简单,但是昨天实很郁P|上很多讲james2.1版本的服务器Q对于最新版?.3.1的配|很有人提?qing),l果配出来的服务器老是不能通过局域往外部发邮Ӟ一直报530的错误。后来没有办法,M(jin)一下config的配|文仉面的注释才搞明白?br />
其实james2.3.1的配|只需要三个步骤?br />
1Q配|?lt;postmaster>Postmaster@localhost</postmaster>
<servernames autodetect="true" autodetectIP="true">
<!-- CONFIRM? -->
<servername>localhost</servername>
</servernames>
localhost配置?92.168.1.101Q也是你自己局域网的ipQ当然你也可以是你的机器名)(j)目的是让局域网中的机器扑ֈ你这台服务器
2Q?lt;dnsserver>
<servers>
<!--Enter ip address of your DNS server, one IP address per server -->
<!-- element. -->
<!--
<server>127.0.0.1</server>
-->
<server>221.7.34.10</server> q是兰州?sh)信的dns
<server>192.168.1.101</server>
</servers>
</dnsserver>
配置你服务器的dns Q可以在你这台服务器上ipconfig查看一下?br />
3Q网上的2.1配置没有讲到的一点就是,修改 <authorizedAddresses>127.0.0.0/8</authorizedAddresses>Z局域网q播地址Q比?92.168.1.0。目的是Z(jin)允许那个|段内的机器可以讉Kq个邮g服务?br />
否则你在局域网内其他机器是不能发外|邮件的。它?x)?30的错误?br />
最后一点,是注释掉下边这?br />
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
其实Q不用到|上查资料。直接看q个config。xml里边的说明,已l够了(jin)?/p>
]]>
վ֩ģ壺
|
|
|
|
߷ |
|
|
³ľ |
|
ʯ |
|
|
|
ʷ |
|
|
|
|
ɽ |
|
ƽ |
|
½ |
|
ɽ |
|
β |
|
|
ƽ |
Ͷ |
|
ɽ |
|
|
ǭ |
Ҷ |
ɽ |
Զ |
|
ų |