首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts 1.x到Struts 2.5.16

Struts 1.x到Struts 2.5.16
EN

Stack Overflow用户
提问于 2018-05-10 13:57:14
回答 2查看 709关注 0票数 1

我想将struts 1迁移到struts 2.5.16

下面是struts1的web.xml

代码语言:javascript
复制
<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如下所示

代码语言:javascript
复制
<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>

下面是我的Action类

代码语言:javascript
复制
public class MyAction extends ActionSupport{
    public String execute()throws Exception{
            /*
                here how can i read init-params
            */
    }
}

因此,在MyAction类中,我想读取在web.xml中配置的所有初始化参数,我如何做到这一点?

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

EN

回答 2

Stack Overflow用户

发布于 2018-06-01 17:46:22

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

代码语言:javascript
复制
 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;
         }
        }
票数 2
EN

Stack Overflow用户

发布于 2018-05-10 14:11:22

试试这个:

代码语言:javascript
复制
public class MyAction extends ActionSupport implements ServletContextAware{ 

    private ServletContext servletContext;
     
    public String execute() {
        String someValue = (String)servletContext.getInitParameter("some-param");
        System.out.println(someValue);
        return SUCCESS;
    }
     
    @Override
    public void setServletContext(ServletContext context) {
        this.servletContext = context;
    }
     
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50266391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档