小编mar*_*its的帖子

Servlet.init()和Filter.init()调用序列

在java Web应用程序中调用的Servlet.init()和Filter.init()方法的顺序是什么?首先叫哪一个?是否所有Servlet.init()方法都被调用,而不是任何Filter.doFilter方法?

java servlets java-ee servlet-filters

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

怎么不复制一些属性?

我需要从输入文档复制到输出文档除了一个属性之外的所有属性.

我的输入是这样的:

<mylink id="nextButton" type="next" href="javascript:;" />
Run Code Online (Sandbox Code Playgroud)

我需要像这样的输出:

<a id="nextButton" href="javascript:;" />
Run Code Online (Sandbox Code Playgroud)

如果我使用以下XSL:

<xsl:template match="mylink">
    <a><xsl:copy-of select="attribute::*"/></a>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我得到所有属性输出如下:

<a id="nextButton" type="next" href="javascript:;" />
Run Code Online (Sandbox Code Playgroud)

但我想忽略"类型"属性.我尝试过以下但是它们似乎都没有按照我需要的方式工作:

<xsl:copy-of select="attribute::!type"/>
<xsl:copy-of select="attribute::!'type'"/>
<xsl:copy-of select="attribute::*[!type]"/>
<xsl:copy-of select="attribute::not(type)"/>
Run Code Online (Sandbox Code Playgroud)

我应该如何编写样式表以获得所需的输出?

xslt xpath

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

在同一个包中访问私有内部类

我有两个编译单元:

public class OuterClass{

    private static class InnerClass{

        public String test(){
            return "testing123";
        }
    }

    public static void main( String[] args ){
        new CallingClass().test( new InnerClass() );
    }
}


public class CallingClass{

    public void test( Object o ){
        try{
            Method m = o.getClass().getMethod( "test" );
            Object response = m.invoke( o );
            System.out.println( "response: " + response );
        }
        catch( Exception e ){
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它们在同一个包中,一切正常并且打印出"response:testing123".如果它们位于单独的包中,则抛出IllegalAccessException.

据我所知,抛出异常是因为CallingClass无法调用私有的InnerClass方法.但我不明白为什么在同一个包中允许它?InnerClass不受包保护.即使它在同一个包中,也不应在OuterClass外看到Private.我理解错了吗?

java reflection visibility inner-classes

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

用于定义记录器非静态的缺点

对此答案的评论如何减少Java日志记录样板代码?强烈建议不要使用记录器作为实例成员变量.我可以想到两个负面的副作用:
1)超类日志与子类的记录器
2)对象无法序列化(除非标记为瞬态)

但是,如果不需要序列化并且使用子类名称进行日志记录不是问题,那还有什么可以避免的原因吗?我认为它减少了样板代码,避免了将logger变量定义从一个类复制到另一个类时的复制粘贴错误.即使Spring框架(我相信它具有非常好的编码标准)也使用这种方法.

java logging

10
推荐指数
2
解决办法
7231
查看次数