[사바 스프링 MVC] 개발 확인용 컨트롤러

3549 단어 spring-mvcJava

PHP에 익숙해지면 Java에서 웹 애플리케이션을 개발하기 어려워요.

  • Java Spring MVC에 파견된 웹 시스템 개발 사건.
  • 다른 회사가 과거에 제작한 시스템을 계승하여 개선하고 수정해야 한다.
  • 스프링부트라는 구조를 타지 않았다.
  • PHPvar_dump();라면 각 프레임워크에서 제공하는 디버깅용 함수로 변수의 내용을 간단하게 확인할 수 있지만 자바는 어렵다.
  • 통합 개발 환경의 소프트웨어(Eclipse 등)를 통해 앱을 시작할 수 있다면 컨트롤러System.out.println("");에서 문자열을 출력할 수 있지만 기존 시스템의 설정이 좋지 않으면 몇 시간 동안 통합 개발 환경에서 앱을 실행할 수 없다.
  • 코드 이상이 끝났을 때 생성된 오류 페이지를 표시합니다. 이 페이지에는 추적 등 디버깅 정보가 쌓여 있지 않아 무슨 오류인지 알 수 없습니다.로그 파일을 보더라도 오류가 아닌 오류가 기록될 때가 있습니다.가능하면 오류가 발생하면 화면에 정보를 보여 주십시오.
  • 가상 컨트롤러를 만들어 개발을 돕다

  • 그래서 가상 컨트롤러를 만들었는데 이 컨트롤러는 시도하고 싶은 코드를 써서 동작과 변수를 확인하는 데 사용된다.
  • var_dump();처럼 대상을 어지럽게 건네주고 내용을 모두 보여주는 구조는 지원되지 않는다.문자열만 출력할 수 있기 때문에 출력을 확인하는 데 많은 노력이 필요합니다.
  • 예외적으로 끝나면 스택 추적이 화면에 표시됩니다.
  • 가상 컨트롤러

    package パッケージ名;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    
    // @RestController を指定することでViewファイルを使わずにこのコントローラーのみで出力を制御できる
    @RestController
    public class DummyController {
    
        private static final Logger logger = LoggerFactory.getLogger(DummyController.class);
    
        /**
         * 確認したい内容をテストコードに書いて出力を文字列のリストに追加、それらを画面に表示する。
         * URL : サイトのドメイン/dummy
         * produces = "text/plain;charset=UTF-8" を指定することで出力がHTMLではなくテキスト扱いになり、日本語文字列も使える。
         */
        @RequestMapping(value = {"/dummy"}, produces = "text/plain;charset=UTF-8")
        public String dummy() {
          return this.printToScreen(this.buildListToConfirm());
        }
    
    
        /**
         * 出力確認したいテストコード
         */
        private List<String> codeTrial(List<String> list) {
          /*-----------------------------------*/
          // テストコードここから
          /*-----------------------------------*/
    
          //ここに確認したいコードを書く
          //画面に出力したい文字列は list に追加していく
          list.add("hoge");
    
          /*-----------------------------------*/
          // テストコードここまで
          /*-----------------------------------*/
          return list;
        }
    
        private List<String> buildListToConfirm(){
          List<String> list = new ArrayList<String>();
          try {
            list.add("---------- 開始 ----------");
            list = this.codeTrial(list);
            list.add("---------- 終了 ----------");
          } catch (Exception e) {
            list.add(this.getStackTraceStr(e));
          }
          return list;
        }
    
        /**
         * エラーのスタックトレースを表示
         */
        private String getStackTraceStr(Exception e) {
          StringWriter sw = new StringWriter();
          PrintWriter pw = new PrintWriter(sw);
          e.printStackTrace(pw);
          pw.flush();
          String stackTraceStr = sw.toString();
          return stackTraceStr;
        }
    
        /**
         * 画面に表示して確認
         */
        private String printToScreen(List<String> list){
          String output = "";
          for(String s : list){
              output = output + s + "\n";
          }
    
          return output;
        }
    }
    
    코드를 작성한 후 구문하여/dumy URL에 액세스합니다.URL을 변경할 수 있습니다.

    화면 출력 샘플



    오류로 끝날 때 창고 추적 출력

    좋은 웹페이지 즐겨찾기