我需要用image实现电子邮件签名.截至目前,我们只支持已经正在工作的电子邮件签名中的文本.我需要提供我可以在邮件签名中插入图像的功能.我可以将电子邮件发送给myapplication中的用户,也可以发送给外部邮件域上的用户,例如gmail,yahoo等.当邮件发送给我的应用程序系统中的某个用户时,系统会输入数据库,当接收者收到收件箱时(内部)从db读取邮件).现在,如果用户在gmail上将邮件发送给外部用户,它就会使用javax mail api.我可以收到来自外部邮件域(gmail,yahoo等)的电子邮件.现在我几乎没有基于tis要求的问题: -
1)对于像gmail这样的外部邮件域如何将签名内的图像发送到另一个域(我的应用程序邮件域),是否有任何标准?与gmail用户相关的另一点可以有两个图像,一个用于签名,另一个用于体内图像.我如何确定哪个图像属于签名?是否有任何明确的财产?
2)还无法确定发送(内部应用程序用户或外部邮件域用户)的最佳/一致方法是什么,包含图像的电子邮件签名,以便在用户收到时正确呈现?
我在脑海中对第2点的看法: - 我之前认为我可以使用如何在jsp中显示图像的解决方案?.使用标记<.img src ="/ getImage.action?imageId = 123">的地方,我可以从动作类或servlet中的db获取图像并返回.但请记住,一旦我通过gmail将邮件发送给用户,他将无法访问servlet.因此,这种方法似乎不符合要求. 然后我遇到了另一个伟大的stackoverflow链接 base64编码图像的电子邮件签名,其中蒂姆梅多拉的解决方案看起来很棒,但再次解决方案下面的评论Gmail似乎不支持它再次结束我的伙计真的我认为如果邮件我应该做域名像gmail,雅虎支持建议的解决方案因为在那种情况下我可以发送图像作为base64字符串而不是图像作为附件.
如果你能为我提供关于第1点和第2点的一些指针/方法,那么人们将非常感激
我owning side and non-owning在学习 hibernate 时遇到了 ie side这两个术语。例如:- 这是关于mappedby 元素在一对一映射中的用法的声明
如果关系是双向的,非拥有方必须使用注解的
mappedBy元素OneToOne来指定拥有方的关系字段或属性。
但我没有得到真正的owning side and non-owning一面是什么?
我了解许多设计原则在某些情况下会相互冲突。因此,我们必须权衡它们,看看哪个更有利。直到现在,我才意识到SRP原理,并仅以此为基础进行了很多设计,但在内部,遵循该原理有时会感到不对。现在我开始了解TDA,对此我的感觉得到了更多支持:)
SRP:-对象应该担心自己的关注而不是其他人
TDA:-行为(仅取决于其对象状态)应保留在对象本身内部
示例:- 我有不同的形状,如矩形,正方形,圆形等。现在我必须计算面积。
到目前为止,我的设计是:-我遵循SRP,这里有AreaCalculatorService类,该类将询问形状状态并计算面积。该设计背后的理由是形状不应该担心面积计算,因为它不是形状责任。但是理想情况下,我曾经以为区域计算代码应该驻留在每个形状下,如果出现新形状,就好像在线下一样,我必须修改AreaCalculatorService类(这违反了Open的扩展名和闭合的修改原则(OECM))。但始终优先考虑SRP。好像错了
神话被打破了(至少是我的):-使用TDA,我的感觉是正确的,在这里我不应该询问物体的状态,而要告诉形状以计算其面积。尽管它将违反SRP原则,但将支持OECM原则。正如我所说的那样,设计原则有时会相互冲突,但是我相信行为完全取决于其对象状态,行为和状态应该在一起。
另一个示例:-说我必须计算组织中所有雇员的所有部门的薪水,那么我们应该遵循SRP,SalaryCalculatorService将取决于部门和雇员。
它将询问每个员工的薪水,然后对所有薪水进行汇总。因此,我在这里要求员工的状态,但仍不违反TDA calcSalary不仅取决于每个员工的薪水。
让我知道我对这两个原则的解释是否正确,在第一种情况下应遵循TDA,在第二种情况下应遵循SRP?
oop single-responsibility-principle tell-dont-ask design-principles
因为我们有两个日期类:java.sql.Date和java.util.Date.是什么原因ResultSet#getDate()归还sql.Date不是util.Date?
同意sql.Date延伸util.Date.但是,当两个类中的大多数方法看起来相同时,完全创建新类的原因是什么?
String urlString ="http:// myApp:8080/new/bin/save/SellerMyPage/WebHome"
我想检查上面的字符串是否包含两个正斜杠之间的字符串"MyPage".它也应该在斜杠之间,并且应该以一些字符作为前缀.这是我期待的结果
"http://myApp:8080/new/bin/save/SellerMyPage/WebHome" should return true
"http://myApp:8080/new/bin/save/SellerMyPage1/WebHome" should return false(its not ending with MyPage)
"http://myApp:8080/new/bin/save/MyPage/WebHome" should return false(MyPage is not prefixed with any any character)
Run Code Online (Sandbox Code Playgroud)
看起来我需要采取相同的正则表达式?如果有人可以帮我解决正则表达式,我将不胜感激?
如果它包含,我想在第一种情况下提取该字符串它应该返回SellerMyPage
为了提取部分我使用下面的代码片段,但对我来说,我不相信它是优化的方式.我相信应该有比这更好的方法吗?
String extractedElement="";
String[] urlSpliArray=urlString.split("/");
for(String urlElement:urlSpliArray)
if(urlElement.endsWith("MyPage"))
{
extractedElement=urlElement;
}
Run Code Online (Sandbox Code Playgroud) 我有下面的代码片段
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss.SSS");
String processedContentDate="2012-04-10 12:53:28.033";
java.util.Date parsedDate = dateFormat.parse(processedContentDate);
java.sql.Timestamp timestamp = new java.sql.Timestamp(
parsedDate.getTime());
Run Code Online (Sandbox Code Playgroud)
我的解析日期为2012年4月10日星期二00:53:28,时间戳为2012-04-10 00:53:28.033. 我希望得到的时间与12:53:28.033完全一样(在我的原始字符串中)不是00:53:28.033. 没有得到为什么12:53:28转换为00:53:28.我该怎么办才能得到12:53:28?
编辑:得到答复后,我尝试了这个小程序,当前时间是14:34:38.899,但在两行,即第1行和第2行,我得到的解析日期2012-04-10 14:34:38.899按照回复我应该在第1行02:34:38.899作为日期格式yyyy-MM-dd hh:mm:ss.SSS")
java.util.Date date= new java.util.Date();
String strDate=date.toString();
java.util.Date parsedDate;
java.util.Date parsedDate2;
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss.SSS");// line 1
SimpleDateFormat dateFormat2 = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss.SSS");//line 2
try {
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
strDate=timestamp.toString();
parsedDate = dateFormat.parse(strDate);//line1
parsedDate2 = dateFormat2.parse(strDate);//line2
Run Code Online (Sandbox Code Playgroud) 我有现有的Java Web应用程序.现在我写了一个groovy hello world class.我应该如何用现有的java类编译它?从http://groovy.codehaus.org/看起来我需要一个不同的编译器,因为命令是groovy -e"println'Hello'+ args [0]"世界改为使用javac.
我想从命令提示符和eclipse编译命令,以便使用现有的java类编译groovy类.
我是struts2的新手,并且通过struts2进行操作,其中我遇到了声明,其中valuestack是对象和语句的堆栈,它讨论当具有相同属性名称的两个对象存储在值对象上时如何进行解析.为了清楚这一点,我开始研究它是如何在struts2中实现的.当我进入最后一级时,我发现struts2只是简单地在push方法中将对象插入零位置,同样在窥视期间,它从零位置获取对象.因此,根据我在struts2下的理解,值栈将只包含一个对象(这将是动作对象).那是对的吗?如果它不正确我们何时可以有一个场景,除了动作对象之外我们可以在valuestack中存储多个对象?
当我在http://en.wikipedia.org/wiki/Stack_(abstract_data_type)上通过堆栈时,我想到了关于堆栈的一些基本问题.在那里指出,在计算机科学中,堆栈是后进先出(LIFO)抽象数据类型和线性数据结构,并且由两个基本操作(称为推送和弹出)来表征.我同意涉及推送和弹出操作的数据结构对堆栈进行分类.但是对LIFO的东西产生怀疑.当我在java中看到数组实现时(也是堆栈并在同一链接上说明),根据我的理解,它不遵循LIFO,因为我们可以通过索引访问任何元素,而不是最后一个元素具有出来 如果我错了,请不要激怒我,因为这是我的符号.如果这是正确的,我们可以说堆栈不一定是必须的LIFO只有它应该确认推送和弹出操作吗?
我的应用程序需要作为中间件(MW)工作,它从各个客户获得订单(以XML的形式),其中包含--------------优先级1供应商ID,其中客户可以发送XML到这些组件之一
1)JMS queue
2)File system
3)HTTP
4)Web service request(rest/soap)
Run Code Online (Sandbox Code Playgroud)
该MW将首先验证传入请求并将确认发送给通过其首选信道请求订单的客户.传入的XML中存在通道和客户端点信息.
一旦获得订单,它需要通过xml形式的优先通道向不同的供应商发送订单请求.我的数据库中有供应商及其首选渠道信息.
所以它是企业集成的用例.
我计划使用核心Java技术来做到这一点.这是我计划的方法.
将为每种类型的传入请求(JMS队列,文件系统,HTTP,Web服务请求(休息/肥皂))提供四个侦听器/条目端点.这些监听器将把xml字符串放在jms队列中.这将作为接待员工作,并使过程异步.
现在我将拥有将在队列中监听的jms使用者.(消费者可以在同一系统上或根据生产者机器上的负载而与生产者不同).此使用者将xml字符串解析为java对象.执行验证.将确认发送给客户(确认需要根据客户的喜好发送.我将使用确认处理器工厂,它将根据喜好发送确认).验证完成后,将此pojo转换为另一种pojo格式,以便xstream/jaxb进一步将其编组为xml格式,并在其首选通道上发送给供应商(供应商首选项存储在db中),如通过soap,jms,文件请求等.
有些我遇到过这个CAMEL链接http://java.dzone.com/articles/open-source-integration-apache,看起来它提供了完美的解决方案,发现这是企业集成的用例.
专家请建议Camel为此提供正确的解决方案.或者像Spring集成的其他一些企业集成框架,ESB在这种情况下会更加有用.如果有人能指出ESB解决这种用例的资源.这真的很有帮助.
由于时间限制,我无法探索所有解决方案,因此寻找专家建议,以便集中精力于一个.
java esb apache-camel spring-integration enterprise-integration
下面是用javadocs编写的
类Object的equals方法实现了对象上最具辨别力的等价关系; 也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象时,此方法才返回true(x == y的值为true).
是否表示object1.equals(object2)仅在object1 == object2时返回true.
下面的例子在In Java中,什么是浅拷贝?
class Foo { private Bar myBar; ...
public Foo shallowCopy() {
Foo newFoo = new Foo(); newFoo.myBar = myBar; return newFoo; }
public Foo deepCopy() { Foo newFoo = new Foo(); newFoo.myBar = myBar.clone(); //or new Bar(myBar) or myBar.deepCopy or ... return newFoo; } } Foo myFoo = new Foo();
Foo sFoo = myFoo.shallowCopy();
Foo dFoo = myFoo.deepCopy();
myFoo.myBar == sFoo.myBar => true
myFoo.myBar.equals(sFoo.myBar) => true
myFoo.myBar == dFoo.myBar …Run Code Online (Sandbox Code Playgroud) java ×9
apache-camel ×1
base64 ×1
date ×1
eclipse ×1
email ×1
esb ×1
groovy ×1
hibernate ×1
mime-types ×1
oop ×1
regex ×1
single-responsibility-principle ×1
stack ×1
struts2 ×1