首页 > 解决方案 > Struts 1.x 到 Struts 2.5.16

问题描述

我想将 struts 1 迁移到 struts 2.5.16

下面是 struts1 的 web.xml

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
        <init-param>
            <param-name>boolean_val</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>param1</param-name>
            <param-value>value1</param-value>
        </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

因此 struts2.5.16 的相关 web.xml 将如下所示

<filter>
    <filter-name>strutsFilterDispatcher</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    **<init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts.xml</param-value>
    </init-param>
        <init-param>
            <param-name>some-param</param-name>
            <param-value>someValue</param-value>
        </init-param>
        <init-param>
            <param-name>pathParam</param-name>
            <param-value>pathvalue</param-value>
        </init-param>**
    <load-on-startup>1</load-on-startup>
  </filter>

下面是我的动作课

public class MyAction extends ActionSupport{
    public String execute()throws Exception{
            /*
                here how can i read init-params
            */
    }
}

所以在 MyAction 类中,我想读取 web.xml 中配置的所有 init-params,我该怎么做。?

注意:我想扩展 ActionSupport 类,因为我想使用 getText() 方法从 ResourceBundle 读取值

标签: struts2

解决方案


示例示例。您可以在过滤器级别访问初始化参数

 web.xml
   -------------
     <filter>
            <filter-name>TestFilter</filter-name>
            <filter-class>{path}+TestFilter</filter-class>
            <init-param>
                <param-name>some-param</param-name>
                <param-value>someValue</param-value>
            </init-param>
     </filter>
     <filter-mapping>
            <filter-name>TestFilter</filter-name>
            <url-pattern>/*</url-pattern>
     </filter-mapping> 

    java class
    -------------
    public class TestFilter implements Filter {

        private FilterConfig filterConfig = null;

        @Override
        public void destroy() { 
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain fc) throws IOException, ServletException {

            final HttpServletRequest req = (HttpServletRequest) request;
            final HttpServletResponse res = (HttpServletResponse) response;
            String paramterValue = filterConfig.getInitParameter("some-param");
            -----
            -------and you can set the paramterValue in request instance

            try {
                fc.doFilter(req, res);
            } catch (IllegalStateException e) {

            }

        }

         @Override
         public void init(FilterConfig arg0) throws ServletException {
            this.filterConfig =arg0;
         }
        }

推荐阅读