servlet继承中InitParam的关系

xu81.com 发布于 2011/05/04 10:48
阅读 848
收藏 2

一个abstract的FatherServlet,继承自HttpServlet,

web.xml定义如下:

<servlet>
    <servlet-name>FatherServlet</servlet-name>
    <servlet-class>test.bll.FatherServlet</servlet-class>
    <init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
    </init-param>
  </servlet>

其init方法如下:

public void init() throws ServletException {
		debug = getInitParameter("debug");
		super.init();
	}

一个SonServlet继承自FatherServlet,web.xml定义如下:

<servlet>
    <servlet-name>SonServlet</servlet-name>
    <servlet-class>test.bll.son.SonServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SonServlet</servlet-name>
    <url-pattern>/son</url-pattern>
  </servlet-mapping>

其init方法如下:

	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
	}

页面请求/son,具体处理都在FatherServlet里,但是总是提示debug为空。

我知道只要在SonServlet的web.xml里定义Init-Param就可以解决,想问能不能不在子类里定义参数即可解决该问题。

拜谢了

加载中
0
红薯
红薯

当然不可以啦,Java 的类有继承的关系,可XML配置没有继承关系

0
xu81.com
xu81.com

也就是说我请求SonServlet,而FatherServlet的init只去找SonServlet里的init-param,不会去自己里面找,而且这个是不可改变的???

PS:红薯,你肯定是在后台进行回复的吧,前台缓存都没看到我的帖子,等再刷出来你就回复了。

0
红薯
红薯

你在 web.xml 中定义了两个 Servlet ,尽管都是 FatherServlet 类的实例,但这是两个不同的实例。

第一个 FatherServlet 可以获取到 debug 参数,而第二个SonServlet则获取不到。

0
xu81.com
xu81.com

了解了,多谢红薯,那只能放到properties里去了。

再次拜谢红薯的速度,m(_ _)m

 

PS:在oschina上提问题真靠谱

0
asdfsx
asdfsx

就是当儿子的可以继承爹的特性,比方说鼻子是爹遗传的

但是爹的数据当儿子的是继承不了的......比方说爹的存折、爹的工作、爹的老婆情人(特例除外)etc.

返回顶部
顶部