web.xml 에 

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/error/404.jsp</location>
</error-page> 

설정을 해놓은 후

 

Action명과 일치하지 않는 잘못된 URL을 입력했을 경우

위에 설정되어있는 404.jsp가 실행될 것이라 예상을 했지만

아래처럼 Struts Problem Report 가 계속나온다면...

 

 

Struts Problem Report

Struts has detected an unhandled exception:

Messages:
  • There is no Action mapped for namespace [/] and action name [xxx] associated with context path [].

  • Stacktraces

    There is no Action mapped for namespace [/] and action name [xxx] associated with context path []. - [unknown location]
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)

    :::::: 

     

    struts.properties 의

    struts.devMode = true 를

    struts.devMode = false 로 바꿔주면

     

    Struts Problem Report 페이지 대신

    404로 지정한 페이지가 표시된다.

     

     

    'plming > Java - Struts' 카테고리의 다른 글

    Struts - ajax/json  (0) 2015.05.20
    Struts2 - Login 처리  (0) 2015.05.20

    Struts.xml에

    json으로 응답받을 Action.method에 result값으로 json을 처리할 type을 기술하고

    화면에서 받을 이름을 기술했는데도 정상적으로 값이 읽혀지지 않을 때는

    방황하지 말고, 당황하지 말고, 삽질하지 말고

    해당 Action에 get/set method를 생성해주어야

    화면에서 정상적으로 값을 읽을 수 있다.

     

    화면에서 읽을 수 있도록

    HttpServletRequest request =  ServletActionContext.getRequest();
    request.setAttribute("json값", json값);

    요롷게 해줘도 읽혀지지 않는다.

    ${json값.Key1} 요롷게는 읽혀져도...

     

    - Struts.xml

    <result-type name="json처리" class="json처리Class">
         <param name="encoding">UTF-8</param>
         <param name="contentType">text/html</param>
         <param name="contentType">application/json</param>
    </result-type>

     

    <action name="getJsonValue" class="Action" method="jsonMethod">
         <result name="success" type="json처리"><param name="value">json값</param></result>
    </action>

     

    - Action.java

    private Map<String, Object> json값;

     

    public String jsonMethod() {

        json값 = 블라블라;

        return SUCCESS;

    }

     

    public Map<String, Object> getJson값() {
         return json값;
    }
    public void setJson값(Map<String, Object> json값) {
         this.json값 = json값;
    }

     

     

    - 화면.jsp

    $.ajax({
        type:'POST',
        url : "/getJsonValue.do",
        data :  { "param1" : param1 },
        success : function( json ) {
            var json값 = eval( json );
            alert( json값.Key1 );
        }
    });

     

    'plming > Java - Struts' 카테고리의 다른 글

    404 페이지 대신 Struts Problem Report 나올 때  (0) 2015.07.27
    Struts2 - Login 처리  (0) 2015.05.20

    Struts2 는 Request 마다 Action을 새로 만들므로

    Thread 관련 이슈를 고려하지 않아도 된다는...

     

    고로...

    Action Class에

    private User관련Bean user정보 = getLoginUser정보(); 로

    Login한 유저 정보를 설정하게 해 놓았다면

     

    실제 호출한 Action.method() 에 진입하기 전에 LoginError가 발생하기 때문에

     

    Action, method정보를 기술하는 struts-xxx.xml 에서

    <global-results>

        <result name="login_error">login.jsp</result>

    요론 식의 정의를 추가해놓으면,

    Exception나는 화면이 나오지 않게된다.

    뭐 Exception이 나오면, 사용자가 정상 Login화면으로 가긴 하겠지만...;;;

     

     

    private 영역에서 user 정보를 확인하지 않고

    Action.method() 안에서 확인하게 된다면

    굳이 예외적인 login_error 식의 정의는 필요치 않다.

     

    이때는 Action.method() 내에서

    return LOGIN; 처럼

    정상적인 Login필요 여부를 표시하도록 하는 것이므로

    <global-results>

        <result name="login">login.jsp</result>

    요론 정의만 존재해도 무난하다.

     

     

    'plming > Java - Struts' 카테고리의 다른 글

    404 페이지 대신 Struts Problem Report 나올 때  (0) 2015.07.27
    Struts - ajax/json  (0) 2015.05.20

    + Recent posts