<servlet-name> inside <filter-mapping> of web.xml, what does this mean?
===

I am starting to learn struts 2. I stumbled upon this code:

**web.xml**

`...some other codes...`

    <filter>
        <filter-name>MyFilter</filter-name>
        <display-name>MyFilter</display-name>
        <filter-class>com.xxx.yyy.zzz.MyFilter</filter-class>
    </filter>

    <filter-mapping>
       <filter-name>MyFilter</filter-name>
       <servlet-name>MyAction</servlet-name>
    </filter-mapping>

    <listener>
       <listener-class>com.xxx.yyy.StrutsListener</listener-class>
    </listener> 

    <servlet>
		<servlet-name>MyAction</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		<init-param>
        	<param-name>paramName1param-name>
	        <param-value>paramVal1</param-value>
    	</init-param>
		<init-param>
			<param-name>paramName2</param-name>
			<param-value>paramVal2</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
    </servlet>

`...some other codes...`

My question is in this part
   

     <filter-mapping>
          <filter-name>MyFilter</filter-name>
          <servlet-name>MyAction</servlet-name>
     </filter-mapping>

Why is it a servlet being mapped inside a <filter-mapping> tag? What does this kind of mapping imply? Also, what does `<listener>` do? Thanks for the replies.

