본문 바로가기
목차
Spring (boot) 오류 해결

"status": 404, "error": "Not Found", "path":

by 지각생 2022. 1. 31.
728x90

해결

@Controller쓴 클래스 중 해당 url메서드를

@RestController로 따로 빼줌.


오류 메세지


오류 관련 코드

let index = {
  init: function () {
    $("#btn-save").on("click", () => {
      //()=>{} this를 바인딩하기 위해서!
      this.save();
    });
    $("#btn-update").on("click", () => {
      //()=>{} this를 바인딩하기 위해서!
      this.update();
    });
    // $("#btn-login").on("click", () => {
    //   //()=>{} this를 바인딩하기 위해서!
    //   this.login();
    // });
  },

  save: function () {
    //alert("user의 save함수 호출됨");
    let data = {
      //id값으로 찾아서 값 가져옴
      userId: $("#userId").val(),
      userName: $("#userName").val(),
      password: $("#password").val(),
      role: $("#role").val(),
    };

    //console.log(data);

    // ajax호출시 default가 비동기 호출
    // ajax 통신을 이용해서 3개의 데이터를 json으로 변경하여 insert요청!
    // ajax가 통신을 성공하고 서버가 json을 리턴해주면 자동으로 자바 오브젝트로 변환해주네요.
    $.ajax({
      //회원가입 수행 요청
      type: "POST",
      url: "/joinForm",
      data: JSON.stringify(data), //http body 데이터
      contentType: "application/json; charset=utf-8", //body데이터가 어떤 타입인지(MIME)
      dataType: "json", // 요청을 서버로 해서 응답이 왔을 때 기본적으로 모든 것이 문자열(생긴게 json이라면)=> javascript 오브젝트로 변경
    })
      .done(function (resp) {
        alert("회원가입이 완료되었습니다.");
        console.log("성공 resp:", resp);
        location.href = "/";
      })
      .fail(function (error) {
        console.log("실패 data:", data); //console.log("실패 data:"+ data); 라고 쓰면 원하는대로 출력되지 않았었음.
        alert(JSON.stringify(error.responseText));
      }); //ajax 통신을 이용해서 3개의 데이터를 json으로 변경히여 insert 요청!!
  },

  update: function () {
    let data = {
      id: $("#id").val(),
      username: $("#password").val(),
      password: $("#password").val(),
      email: $("#email").val(),
    };
    $.ajax({
      type: "PUT",
      url: "/user",
      data: JSON.stringify(data),
      contentType: "application/json; charset=utf-8",
      dataType: "json",
    })
      .done(function (resp) {
        alert("회원수정이 완료되었습니다.");
        location.href = "/";
      })
      .fail(function (error) {
        alert(JSON.stringify(error));
      });
  },

  // login: function () {
  //   //alert("user의 save함수 호출됨");
  //   let data = {
  //     //id값으로 찾아서 값 가져옴
  //     username: $("#username").val(),
  //     password: $("#password").val(),
  //     email: $("#email").val(),
  //   };

  //   //console.log(data);

  //   // ajax호출시 default가 비동기 호출
  //   // ajax 통신을 이용해서 3개의 데이터를 json으로 변경하여 insert요청!
  //   // ajax가 통신을 성공하고 서버가 json을 리턴해주면 자동으로 자바 오브젝트로 변환해주네요.
  //   $.ajax({
  //     //회원가입 수행 요청
  //     type: "POST",
  //     url: "/api/user/login",
  //     data: JSON.stringify(data),
  //     contentType: "application/json; charset=utf-8", //body데이터가 어떤 타입인지(MIME)
  //     dataType: "json", // 요청을 서버로 해서 응답이 왔을 때 기본적으로 모든 것이 문자열(생긴게 json이라면)=> javascript 오브젝트로 변경
  //   })
  //     .done(function (resp) {
  //       alert("로그인이 완료되었습니다.");

  //       location.href = "/";
  //     })
  //     .fail(function (error) {
  //       alert(JSON.stringify(error));
  //     }); //ajax 통신을 이용해서 3개의 데이터를 json으로 변경히여 insert 요청!!
  // },
};

index.init();

 

여기서 .done 시

/joinForm

url로 data보냄

 

그런데 받는 controller에서

package com.MyBlog.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.MyBlog.Dto.ResponseDto;
import com.MyBlog.Dto.UserDto;
import com.MyBlog.Service.HeaderService;

@Controller
public class HeaderController {

	@Autowired
	public HeaderService headerService;

	@GetMapping("/")
	public String index() {
		return "root.mid_contentList";
	}

	@GetMapping("/joinForm")
	public String GetjoinForm() {
		return "root.mid_joinForm";
	}

	@PostMapping("/joinForm")
	public ResponseDto<Integer> join(@RequestBody UserDto user) {
		System.out.println("controller User:"+user);
		System.out.println("ResponseDto<Integer>(HttpStatus.OK.value(), 1):"+new ResponseDto<Integer>(HttpStatus.OK.value(), 1));
		headerService.join(user);
		return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
	}

	

}

@Controller써놓고서는

@PostMapping("/joinForm")
	public ResponseDto<Integer> join(@RequestBody UserDto user) {
		System.out.println("controller User:"+user);
		System.out.println("ResponseDto<Integer>(HttpStatus.OK.value(), 1):"+new ResponseDto<Integer>(HttpStatus.OK.value(), 1));
		headerService.join(user);
		return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
	}

여기 return에 view주소 대신 엉뚱한걸 넣어줘서 오류가 계속 났던거다.

 


오류 해결 코드

 

package com.MyBlog.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.MyBlog.Dto.ResponseDto;
import com.MyBlog.Dto.UserDto;
import com.MyBlog.Service.HeaderService;

@Controller
public class HeaderController {

	@Autowired
	public HeaderService headerService;

	@GetMapping("/")
	public String index() {
		return "root.mid_contentList";
	}

	@GetMapping("/joinForm")
	public String GetjoinForm() {
		return "root.mid_joinForm";
	}

	

	

}

 

package com.MyBlog.Controller.api;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.MyBlog.Dto.ResponseDto;
import com.MyBlog.Dto.UserDto;
import com.MyBlog.Service.HeaderService;

//@RestController
public class HeaderApiController {
	
	@Autowired
	private HeaderService headerService;
	

	@PostMapping("/joinForm")
	public ResponseDto<Integer> join(@RequestBody UserDto user) {
		System.out.println("controller User:"+user);
		System.out.println("ResponseDto<Integer>(HttpStatus.OK.value(), 1):"+new ResponseDto<Integer>(HttpStatus.OK.value(), 1));
		headerService.join(user);
		return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
	}
}
728x90

댓글