struts是通过
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样的filter来验证的...
而连接池我想用proxool,proxool有一个proxooladmin的后台查看程序需要配置一个proxool自带的Servlet
<servlet>
<servlet-name>proxooladmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proxooladmin</servlet-name>
<url-pattern>/proxooladmin</url-pattern>
</servlet-mapping>
但是因为上面已经配置了filter,所以一运行 http://localhost:8080/XXX/proxooladmin
就会报:There is no Action mapped for namespace / and action name proxooladmin
这个错误....
请问有何方法可以解决???暨 struts如果使用自己创建的独立的Servlet?

解决方案 »

  1.   

    额..自己用了一个偏门方法解决了...
    配置成为
    <servlet-mapping> 
    <servlet-name>proxooladmin</servlet-name> 
    <url-pattern>/proxooladmin.servlet</url-pattern> 
    </servlet-mapping> 就可以用 http://localhost:8080/XXX/proxooladmin.servlet来访问了......额...找人来接分了..........
      

  2.   

    楼猪,你忘记了,在struts2的web.xml中配置 
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    是可以用struts2中使用servlet的,只是必须让struts2的action来转发到servlet的url-pattern中的地址就可以了。我简单举例下:     例如定义了一个servlet:
      <servlet>
        <servlet-name>validate</servlet-name>
        <servlet-class>com.xxx.util.GeneratorValidateChar</servlet-class>  
      </servlet>
      <servlet-mapping>
        <servlet-name>validate</servlet-name>
        <url-pattern>/tu</url-pattern>
      </servlet-mapping>如果你在页面中使用该servlet,则要用action转发到<url-pattern>/tu</url-pattern>
    的路径/tu.如你的页面里有个 <img>元素来显示图片,如果使用<img src="tu" width="60" height="20"/>肯定不行,你必须定义一个action 如
        
        package com.xxx.actions;
        public class GotchaGraphics implements Action {
              public String execute(){
                  return SUCCESS;
              }
       }   然后在struts.xml中配置该Action 
       <package name="common" namespace="/" extends="struts-default">
        ....
        <action name="graphics" class="com.xxx.actions.GotchaGraphics">
          <result>/tu</result>
        </action>
        ....
       </package>
       最终在那个<img>中这么使用<img src="graphics" width="60" height="20"/>,这样就可以用servlet了。    总结下:如果在web.xml使用 “/*” 处理请求,则servlet需要用一个action来转发该servlet自己的路径。