在我试图帮助的网站上,用户可以在浏览器中输入一个URL,如下面的汉字,
http://localhost:8080?a=??
Run Code Online (Sandbox Code Playgroud)
在服务器上,我们得到
GET /a=%E6%B5%8B%E8%AF%95 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
如您所见,它是UTF-8编码,然后是URL编码.我们可以通过在Tomcat中将编码设置为UTF-8来正确处理.
但是,有时我们在某些浏览器上获得Latin1编码,
http://localhost:8080?a=ß
Run Code Online (Sandbox Code Playgroud)
变成
GET /a=%DF HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
无论如何在Tomcat中正确处理这个问题?看起来服务器必须做一些智能猜测.我们不希望100%正确处理Latin1,但是假设一切都是UTF-8,那么任何东西都比我们现在做的要好.
服务器是Tomcat 5.5.支持的浏览器是iPhone 6 +,Firefox 2+和iPhone上的Safari.
我们有一个需要读取十六进制数的J2ME应用程序.对于某些手机来说,应用程序已经太大了,所以我们尽量不包含任何其他编解码器或编写我们自己的功能来执行此操作.
所有数字都是十六进制的64位有符号整数,当我们使用Long.ParseLong(十六进制,16)时,它正确处理正数,但它会在负数上抛出异常,
long l = Long.parseLong("FFFFFFFFFFFFFFFF", 16);
Run Code Online (Sandbox Code Playgroud)
我们如何使用Java本身提供的类从该十六进制字符串中获取-1?
有些人可能会建议我们应该将我们的十六进制写为-1,就像Java预期的那样 对不起,格式由协议修复,我们无法更改.
我刚刚继承了一些使用MooTools的网页.我从未使用过MooTools.现在我需要在页面上添加一些函数,我想知道在同一页面上使用jquery和mooTools是个好主意吗?
基本上,我有3个选项,
您的意见将不胜感激.
我们刚刚升级了Tomcat,而较新的Tomcat不喜欢标签中的嵌套引号,因此我们必须在单引号和双引号之间切换.例如,
我们曾经有过,
<form id="search" action="<fmt:message key="search.url"/>">
Run Code Online (Sandbox Code Playgroud)
现在我们可以改成它,
<form id="search" action="<fmt:message key='search.url'/>">
Run Code Online (Sandbox Code Playgroud)
如果引号是这样的三重嵌套,我该怎么办,
<form id="search" action="<fmt:message key='<c:out value="${requestScope.search_url}"/>'/>">
Run Code Online (Sandbox Code Playgroud)
上面的标记不能编译.
在JRE中,Sun的内部软件包以2个顶级域名(sun和com)为前缀.例如,
com.sun.security.jgss
sun.security.jgss
Run Code Online (Sandbox Code Playgroud)
对我来说,他们选择的前缀似乎很随机.我很好奇Sun使用什么规则.
在Java中,Map接口定义为,
public interface Map<K,V> {
...
V get(Object key);
...
}
Run Code Online (Sandbox Code Playgroud)
为什么不?
V get(K key);
Run Code Online (Sandbox Code Playgroud)
我只是碰到了一个讨厌的bug,因为使用了错误的类型键.我认为泛型的目的是在编译期间尽早捕获类型错误.这会破坏这个目的吗?
在Java方面,我们有一个servlet过滤器来处理身份验证.除非页面需要自定义内容,否则我们不必更改所有其他servlet或JSP以向页面添加身份验证.
我们如何在PHP上实现相同的目标?我们不在PHP上使用任何框架.
我想尝试这样的方法调用,
public class GenericsTest<T> {
public static <T> Map<String, T> createMap(Class<? extends Map<String, T>> clazz) {
return null;
}
public static void main(String[] argv) {
Map<String, Integer> result = createMap(TreeMap.class);
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误,
<T>createMap(java.lang.Class<? extends java.util.Map<java.lang.String,T>>) in test.GenericsTest<T> cannot be applied to (java.lang.Class<java.util.TreeMap>)
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
在PHP中打包Web应用程序以便于部署的好方法是什么?目前,我正在使用make来生成一个gzipped tar文件.在Java中,大多数人使用Maven并构建WAR.我想知道PHP世界中是否有类似的标准做法.
PHP有一个Maven.我想知道这是否可行.
我一直在使用委托模式将工厂创建的对象包装在第三方库中.最近,库在基类中添加了一个受保护的方法,我的包装器类不再起作用了.没有诉诸反思,有没有人有一个好的解决方案?
这是在第三方库和他们的包中,
public class Base {
public void foo();
protected void bar(); // Newly added
}
Run Code Online (Sandbox Code Playgroud)
这是我自己的包,
public class MyWrapper extends Base {
private Base delegate;
public MyWrapper(Base delegate) {
this.delegate = delegate;
}
public void foo() {
delegate.foo()
}
protected void bar() {
// Don't know what to do
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我原来的帖子不清楚.这两个类在不同的包中.
回答我为什么需要代表团的问题.这是委托/包装模式的典型用例,我不能在几行代码中显示它.该库公开Base类,但其工厂中的实际对象是Base的派生类.实际的类根据配置而变化.所以我不知道代表是什么.因此,直接继承模式在这里不起作用.