我知道我可以像这样在web.xml中添加一些内容
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
但是jsp页面不会显示任何构造性信息,因为它不会得到究竟是什么异常.我知道我们可以通过各种方式将不同的异常转发到不同的页面,exception-type但是在web.xml中写入太多了.我希望一个页面足够,另一个页面用于处理像404这样的错误.
那么我应该如何将异常信息传递给jsp页面呢?使用会话?
理想情况可能是页面获取异常信息并显示有关它的一些相关消息,而不向用户显示异常.相反,它可以将其记录到文件中以供将来参考.实现这一目标的最佳方法是什么?谢谢.
我曾经依赖 Mockito,直到今天我有一个带有一些静态方法的最终类,所以我必须切换到 JMockit。我之前对此一无所知,所以问题是:如何将 Mockito 中的类似逻辑应用到 JMockit?
public final class ServiceData extends BaseData {
private List<Data> data;
public ServiceData(List<Data> data) {
this.data = data;
// something else
}
public static Container getContainer() {
return super.getContainer();
}
public Data getDataAt(Index index) {
return super.getContainer().get(index);
}
}
Run Code Online (Sandbox Code Playgroud)
用 Mockito 编写的测试如下所示:
@Test
public void test() {
ServiceData mockServiceData = mock(ServiceData.class);
Data mockData = mock(Data.class);
// only stubbing some of the methods
Container mockContainer = spy(Container.class);
doReturn(something).when(mockContainer.someMethod());
when(mockServiceData.getContainer()).thenReturn(mockContainer);
when(mockServiceData.getDataAt(any(Index.class)).thenReturn(mockData);
// some assertions
}
Run Code Online (Sandbox Code Playgroud)
这将不起作用,因为 Mockito …
Say taskA是一项繁重的任务,只有在启用后才能调用,并且taskAEnabled是相应的设置键.
一个天真的方法是:
val taskAConditional = Def.task {
(taskAEnabled, taskA) map { (taskAEnabled, taskA) =>
if (taskAEnabled) taskA.value
}
}
Run Code Online (Sandbox Code Playgroud)
由于sbt设计,这不起作用.由于taskA现在成为taskAConditional的依赖项,因此无论if逻辑如何都将执行(即taskAEnabled将被忽略).
有没有办法可以达到我的目的?(我无法更改taskA,因为它是从其他地方导入的)
这是我的算法中的一段代码:
public void insert(int element) {
_insert(element, root);
System.out.println(root);
}
private void _insert (int element, Node t) {
if (t == null) {
t = new Node(null, element);;
return;
}
}
Run Code Online (Sandbox Code Playgroud)
Node 这是一个预定义的类.
insert调用public方法时,将调用private方法并检查树是否为空.如果是,则在root位置创建新节点.
输出应该是一个节点.但实际输出null意味着root不会更新,尽管它作为t传递给私有方法.
这应该在带有指针的C++下工作.也许我误解了Java中的一些东西?
我已经安装了 jdk,但是当我尝试使用 java 命令时,它说“找不到命令”。
所以我然后在 .bashrc 中为我的帐户设置环境变量,它工作正常。
export JAVA_HOME=/usr/java/jdk1.7.0_03
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/l\
ib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用 sudo 执行 java 时,它又说了一遍。所以我曾经sudo -s切换到root,将它们放入/etc/profile,然后执行source /etc/profile
如果我继续以 root 身份登录,但在我返回到我自己的帐户并使用sudo java它之后,这仍然有效,它仍然显示 sudo: java: command not found 并且这些环境变量变为空白。
我应该怎么做才能解决问题?我想应该很容易解决。
我见过这样的代码:
void foo(Class<? extends SomeInterface> clazz)
我有一个类:
class ClassA implements SomeInterface
当我尝试时:
ClassA a = new ClassA();
foo(a);
Run Code Online (Sandbox Code Playgroud)
Eclipse给出了"方法不适用"之类的东西.
我错过了什么?
下面的代码是用php编写的:
$user = addslashes($_POST['user']);
$pwd = addslashes($_POST['pwd']);
$query = "SELECT * FROM userdata WHERE UserName='$user' AND Password=PASSWORD('$pwd')";
Run Code Online (Sandbox Code Playgroud)
然后将查询发送到mysql还有什么我需要处理的吗?
请指出.
我刚刚开始使用 Guice,所以我的理解可能是完全错误的。
我有一个接口Foo和一个实现FooImp
我在模块中使用了以下代码来注入它:
bind(Foo.class).annotatedWith("Foo").toInstance(foo); // foo is an instance of FooImp
Run Code Online (Sandbox Code Playgroud)
然后我猜现在在我的代码中,Foo名称注释为“Foo”的实例将被替换为foo?
@Named("Foo")
Foo fooInst; // fooInst will be foo at runtime?
Run Code Online (Sandbox Code Playgroud)
如果我是对的,我怎样才能实现这一目标:
public Foo doSomething() { // for some reason there must be no arguments
@Named("Foo")
Foo fooInst; // injecting here seems not allowed...?
fooInst.do();
}
Run Code Online (Sandbox Code Playgroud) 如何做到这一点在斯卡拉方式:返回的第一个元素是Some[String]从Option[Seq[String]],如果是Some[Seq[String]],有至少一个字符串,否则返回None
据我所知,有两种基本方法可以检查项目是否在hash_map中:
假设我们有一个hash_map: hash_map<string, int> amap
如果我们要检查"abc"是否在地图中,那么我们就可以做到
hash_map<string, int>::iterator itr = amap.find("abc");
if (itr != amap.end()) //in the map
Run Code Online (Sandbox Code Playgroud)
要么:
try {
int value = amap.at("abc");
}
catch(out_of_range& e) {
//not there
}
Run Code Online (Sandbox Code Playgroud)
只是想知道哪一个更好?为了提高效率?