Struts 2 설정 실천 1 칙

7657 단어 struts
이전 에는 spring - mvc 를 사용 해 왔 으 나, 현재 새 회 사 는 struts 2 로 바 뀌 었 다.hackthon 프로젝트 는 혼자서 환경 을 조성 해 야 하기 때문에 일부 회사 의 구 조 를 도입 하고 싶 지 않 기 때문에 struts 2 세트 를 설정 하려 고 시도 하 다가 문제 가 생 겼 습 니 다.
web.xml
여기 / config / struts / struts. xml 은 / WEB - INF / classes / 디 렉 터 리 에 있 습 니 다.주의해 야 할 것 은 struts 설정 이 spring 의 classpath *: 스타일 설정 을 지원 하지 않 는 것 같 습 니 다.
<filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>struts-default.xml,struts-plugin.xml,/config/struts/struts.xml</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
    </listener>

struts.xml:
<?xml version="1.0" encoding= "UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd" >

<struts>
       <!--
            use in develop environment
      -->
       <constant name="struts.devMode" value="false" />
       <constant name="struts.enable.DynamicMethodInvocation" value="false" />
       <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
       <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
        <package name="imcaptcha" namespace="/" extends="json-default">
            <default-action-ref name="index" />
            <action name="validate" class="us.codecraft.imcaptcha.action.ValidateAction">
                <result name="success" type="json"></result>
                <result name="error" type="json"></result>
            </action>
            <action name="image" class="us.codecraft.imcaptcha.action.ImageAction">
                <result name="success" type="json"></result>
                <result name="error" type="json"></result>
            </action>
       </package>
</struts>

struts 는 완전히 플러그 인 화 된 디자인 입 니 다. 예 를 들 어 struts - spring - plugin 을 도입 해 야 합 니 다. struts. xml 에 한 줄 만 추가 하면 됩 니 다.그러나 struts 는 인성 화 되 지 않 은 부분 이 있 습 니 다. 설정 만 하고 관련 jar 가방 (대응 클래스 가 존재 하지 않 음) 을 도입 하지 않 으 면 spring 처럼 Class NotFounderror 를 알려 주지 않 고 일반 설정 오류 와 같이 다음 과 같은 이상 을 던 집 니 다.
    at java.lang.Thread.run(Thread.java:722)
13-01-17 10:13:14,650 ERROR org.apache.struts2.dispatcher.Dispatcher(CommonsLogger.java:27) ## Dispatcher initialization failed
Unable to load configuration. - [unknown location]
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
    at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
    at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

아래 의 정 보 는 어떤 Action 이 설정 되 어 있 지 않다 는 것 을 나타 낸다. 만약 당신 이 정말 action 을 배치 하지 않 았 다 면 정상 적 인 것 이다. 그렇지 않 으 면 설정 파일 이 읽 히 지 않 았 다 는 것 이다.
    at java.lang.Thread.run(Thread.java:722)
There is no Action mapped for namespace / and action name . - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:178)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

좋은 웹페이지 즐겨찾기