在Java中编写实用程序类时,要遵循哪些好的指导原则?
包装应该是"util"还是"utils"?是ClassUtil还是ClassUtils?什么时候是"助手"或"效用"?公用事业或公用事业?或者你使用它们的混合物?
标准Java库使用Utils和Utilities:
Apache使用各种Util和Utils,尽管主要是Utils:
Spring使用了很多Helper和Utils类:
那么,您如何命名实用程序类?
你如何阻止Firefox和Safari缓存iframe内容?
我有一个简单的网页,其中包含iframe到不同网站上的网页.外部页面和内部页面都有HTTP响应头以防止缓存.当我单击浏览器中的"后退"按钮时,外部页面正常工作,但无论如何,浏览器总是检索iframed页面的缓存.IE工作正常,但Firefox和Safari给我带来了麻烦.
我的网页看起来像这样:
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
该var
变量总是变化.尽管iframe的URL已更改(因此,浏览器应该向该页面发出新请求),但浏览器只是获取缓存的内容.
我已经检查了来回的HTTP请求和响应,我注意到即使外部页面包含<iframe src="webpage2.html?var=222" />
,浏览器仍然会获取webpage2.html?var=111
.
这是我到目前为止所尝试的:
我无法做任何JavaScript技巧,因为我被同源策略阻止了.
我的想法已经不多了.有谁知道如何阻止浏览器缓存iframed内容?
我安装了Fiddler2,因为Daniel建议再进行一次测试,不幸的是,我仍然得到了相同的结果.
这是我进行的测试:
Math.random()
在JSP中使用随机数生成.通过此测试,我能够确切地看到哪些页面正在更新,以及哪些页面被缓存.
为了快速测试,我加载页面,导航到另一个页面,然后按"返回".结果如下:
原始页面:
离开页面,然后回击:
这表明内部页面正在被缓存,即使外部页面在URL中使用不同的GET参数调用它.出于某种原因,浏览器忽略了iframe请求新URL的事实; 它只是加载旧的.
果然,Fiddler证实了同样的事情.
(我加载页面.)
外页被调用.HTML:
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
Run Code Online (Sandbox Code Playgroud)
http://ipv4.fiddler:1416/page1.aspx?var = 0.21300034290246206被调用.
(我离开页面,然后回击.)
外页被调用.HTML:
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
Run Code Online (Sandbox Code Playgroud)
http://ipv4.fiddler:1416/page1.aspx?var = 0.21300034290246206被调用.
好吧,从这个测试中,看起来好像Web浏览器没有缓存页面,但它正在缓存iframe的URL,然后在该缓存的URL上发出新请求.但是,我仍然难以理解如何解决这个问题.
有没有人对如何阻止Web浏览器缓存iframe URL有任何想法?
我有一个C#类库和一个启动项目(一个控制台应用程序).类库包括对Web服务的服务引用.当我尝试运行项目时,我得到一个InvalidOperationException,因为启动项目没有读取类库的app.config,而是忽略了服务引用.为了使它工作,我被迫为启动项目添加相同的服务引用.有什么方法可以避免这种情况吗?我是否可以使启动项目识别类库的服务引用和app.config而无需将其复制到启动项目?
我已经尝试从类库中添加指向app.config的链接,但这不起作用.如果类库需要使用它来将该服务引用添加到启动项目中,则该类库不是非常便携.
当您有多个项目都使用同一组JAR库时,为每个项目反复包含相同的JAR是很繁琐的.如果我正在处理20个不同的项目,我宁愿没有20个相同的JAR文件集.使所有这些项目(以及新项目)引用同一组JAR的最佳方法是什么?
我有一些想法,但每个都有一些缺点:
在.NET中的HTTP请求中传递和处理数组的标准方法是什么?我有一个解决方案,但我不知道这是否是最好的方法.
这是我的解决方案:
<form action="myhandler.ashx" method="post">
<input type="checkbox" name="user" value="Aaron" />
<input type="checkbox" name="user" value="Bobby" />
<input type="checkbox" name="user" value="Jimmy" />
<input type="checkbox" name="user" value="Kelly" />
<input type="checkbox" name="user" value="Simon" />
<input type="checkbox" name="user" value="TJ" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
ASHX处理程序以逗号分隔的字符串接收"user"参数.您可以通过拆分字符串轻松获取值:
public void ProcessRequest(HttpContext context)
{
string[] users = context.Request.Form["user"].Split(',');
}
Run Code Online (Sandbox Code Playgroud)
所以,我已经找到了我的问题的答案:为同一个参数名称分配多个值,假设ASHX处理程序将其作为逗号分隔的字符串接收,并拆分字符串.我的问题是这是否通常在.NET中完成.
这是什么标准做法?是否有一种更简单的方法来获取多个值,而不是假设该值是以逗号分隔并在其上调用Split()?这是数组通常如何在.NET中传递,还是使用XML?
有没有人对这是否是最好的方法有任何见解?
是否有Notepad ++插件自动将所有当前打开的文件合并到一个文件中?
更新:是的,我非常了解复制和粘贴:)我正在处理大量文件,我想要一个解决方案,使这个过程中的这一步比几十个复制和粘贴快一点.
我知道用于组合文件的实用程序,但我希望能够方便地组合当前在文本编辑器中打开的文件.
如果那里没有插件,我会自己写一个; 我只是想知道它是否已经存在以节省我开发它的时间.
使用Java或C#等面向对象语言进行开发时,开发人员在开始实现之前使用UML等设计工具制作类图,创建接口,定义主要组件和交互,概述API等等并不少见.
我知道对于大多数小型JavaScript应用程序来说,这些软件工程原理可能过度,但如果您正在开发一个库(jQuery,YUI)或创建一个大型应用程序(Gmail,Google Docs),那么创建一个设计是个好主意.在开始编写任何代码之前提前计划.
是否在JavaScript开发或Web开发中使用了类似的实践?
编辑:
为了澄清,我对创建类/接口或为JavaScript创建UML不感兴趣.JavaScript是与Java/C#不同的范例,因此需要不同的设计工具.我很想知道那些JavaScript设计工具/实践是什么,如果有的话.
也许这个问题更好地问我想知道什么:如果像Google这样的公司创建了一个大型Web应用程序并且有几十个团队成员创建它,那么团队使用哪些流程,文档和实践来成功创建,协作,并巩固设计?他们会使用什么工具(例如,UML,流程图,一张纸上的潦草笔记)来处理和共享应用程序的设计(无需编写一行代码)?
我有一个使用X.509证书进行身份验证的WCF服务.创建可以使用该服务的Java客户端的最佳方法是什么?我听说过Axis,CXF,Tango和WSS4J,但我不确定哪个支持X.509,哪个是使用WCF的好方法.