小编NSF*_*NSF的帖子

将异常从servlet转发到jsp页面的好方法是什么?

我知道我可以像这样在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页面呢?使用会话?

理想情况可能是页面获取异常信息并显示有关它的一些相关消息,而不向用户显示异常.相反,它可以将其记录到文件中以供将来参考.实现这一目标的最佳方法是什么?谢谢.

jsp tomcat servlets exception

4
推荐指数
1
解决办法
4601
查看次数

从 Mockito 切换到 JMockit

我曾经依赖 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 …

java junit unit-testing jmockit mockito

4
推荐指数
1
解决办法
1792
查看次数

如何在sbt中有条件地调用任务?

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,因为它是从其他地方导入的)

scala sbt

4
推荐指数
1
解决办法
555
查看次数

Java引用不作为指针?

这是我的算法中的一段代码:

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中的一些东西?

java pass-by-reference

2
推荐指数
1
解决办法
1641
查看次数

sudo:java:从root用户退出后找不到命令

我已经安装了 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 并且这些环境变量变为空白。

我应该怎么做才能解决问题?我想应该很容易解决。

java unix bash sudo

2
推荐指数
1
解决办法
1万
查看次数

如何将参数传递给需要Class <?的方法?扩展的东西>?

我见过这样的代码:

void foo(Class<? extends SomeInterface> clazz)

我有一个类:

class ClassA implements SomeInterface

当我尝试时:

ClassA a = new ClassA();
foo(a);
Run Code Online (Sandbox Code Playgroud)

Eclipse给出了"方法不适用"之类的东西.

我错过了什么?

java generics

2
推荐指数
1
解决办法
277
查看次数

这个SQL查询是否可以安全地注入?

下面的代码是用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还有什么我需要处理的吗?

请指出.

php mysql sql security sql-injection

1
推荐指数
2
解决办法
738
查看次数

我可以使用 Guice 在方法中获取实例吗?

我刚刚开始使用 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)

java dependency-injection guice

1
推荐指数
1
解决办法
1509
查看次数

如何以Scala方式执行此操作:从Option [Seq [String]]中获取第一个元素

如何做到这一点在斯卡拉方式:返回的第一个元素是Some[String]Option[Seq[String]],如果是Some[Seq[String]],有至少一个字符串,否则返回None

scala

1
推荐指数
1
解决办法
2458
查看次数

哪个更好检查密钥是否在C++的hash_map中?at with try ... catch block或find with iterator comparison?

据我所知,有两种基本方法可以检查项目是否在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)

只是想知道哪一个更好?为了提高效率?

c++ hashmap

0
推荐指数
1
解决办法
115
查看次数