시큐리티가 적용되어 있는 프로젝트에 데이터를 보낼때 token값을 보내야하기 때문에 저렇게 작성해야한다.

$.ajax({
			type : "post",
			url : "/notice/idCheck.do",
			**beforeSend : function(xhr){
				xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
			},**
			data : {memId : id},
			success : function(res){
				console.log("아이디 중복확인 이벤트 결과  : " + res);
				// EXIST, NOTEXSIT값
				if(res == "NOTEXIST"){ // 아이디 사용 가능
					alert("사용 가능한 아이디입니다!");
					$("#id").html("사용 가능한 아이디입니다.").css("color", "green");
					idCheckFlag = true; // 중복확인 했다는 flag 설정
				}else{
					alert("이미 사용중인 아이디입니다.");
					$("#id").html("이미 사용중인 아이디입니다!");
				}
			}
			
		})
<form action="/notice/signup.do**?${_csrf.parameterName}=${_csrf.token}"** method="post" id="signupForm" enctype="multipart/form-data">
<form>
	<sec:csrfInput/>
</form>
package kr.or.ddit.controller.noticeboard.web;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import kr.or.ddit.ServiceResult;
import kr.or.ddit.controller.noticeboard.service.INoticeService;
import kr.or.ddit.vo.DDITMemberVO;
import kr.or.ddit.vo.NoticeVO;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("/notice")
@Slf4j
public class NoticeInsertController {
	
	@Inject
	private INoticeService noticeService;
	
	// 등록 폼으로 이동하는 메소드
	@RequestMapping(value="/form.do", method = RequestMethod.GET)
	public String noticeInsertForm() {
		return "notice/form";
	}
	
	// 게시글 등록하는 메소드
	@RequestMapping(value="/insert.do", method = RequestMethod.POST)
	public String noticeInsert(
			HttpServletRequest req,
			RedirectAttributes ra,
			NoticeVO noticeVO, Model model) {
		String goPage = "";
		Map<String, String> errors = new HashMap<String, String>();
		if(StringUtils.isBlank(noticeVO.getBoTitle())) {
			errors.put("boTitle", "제목을 입력해주세요.");
		}
		if(StringUtils.isBlank(noticeVO.getBoContent())) {
			errors.put("boContent", "내용을 입력해주세요");
		}
		
		if(errors.size() > 0) { // 에러가 발생
			model.addAttribute("errors", errors);
			model.addAttribute("noticeVO", noticeVO);
			goPage = "notice/form";
		}else {

				**User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
				noticeVO.setBoWriter(user.getUsername()); // 로그인 한 상용자 아이디로 작성자 셋팅**

				ServiceResult result = noticeService.insertNotice(req, noticeVO);
				if(result.equals(ServiceResult.OK)) {
					goPage = "redirect:/notice/detail.do?boNo="+noticeVO.getBoNo();
				}else {
					model.addAttribute("message", "서버에러, 다시 시도해주세요!");
					goPage = "notice/form";
				}

		}
		return goPage;
	}
	
	//요청URI : /notice/generalForm
	//요청방식 : get
	@GetMapping("/generalForm")
	public String generalForm() {
		//forwarding
		return "notice/generalForm";
	}
	
	/*
		요청 URL : /notice/generalFormPost
		요청 방식 : post
		요청파라미터 : {boTitle=제목입니다, boContent=내용이지요, boWriter=개똥이 , boFile=파일객체}
		
		@ResponseBody : json, 이긴 하지만 text로 return 해줌
	 */
//	@ResponseBody
//	@PostMapping("/generalFormPost")
//	public String generalFormPost(NoticeVO noticeVO) {
//		
//		log.info("notice : " + noticeVO);
//		//파일을 업로드할 대상
//		String uploadFolder = "D:\\\\A_TeachingMaterial\\\\6_JspSpring\\\\02.SPRING2\\\\workspace_spring2\\\\DevProject\\\\src\\\\main\\\\webapp\\\\resources\\\\upload";
//		
//		MultipartFile[] boFile = noticeVO.getBoFile();
//		
//		// 파일 배열 객체로 부터 파일을 하나씩 꺼내오자
//		for (MultipartFile multipartFile : boFile) {
//			log.info("upload file name : " + multipartFile.getOriginalFilename());
//			log.info("fileupload file size : " + multipartFile.getSize());
//			log.info("upload file contentType : " + multipartFile. getContentType());
//			
//			// File 객체 복사 설계(복사할 대상 경로, 파일명)
//			File saveFile = new File(uploadFolder, multipartFile.getOriginalFilename());
//			
//			// 연/월/일 폴더 생성
//			
//			// UUID처리 (파일명 중복 방지)
//			
//			// 파일 복사 실행(파일원본.transferTo(설계))
//			// 파일 복사 실행(파일원본.transferTo(설계))
//			try {
//				multipartFile.transferTo(saveFile);
//				
//				//썸네일  생성
//				
//				return "Success";
//			} catch (IllegalStateException | IOException e) {
//				log.error(e.getMessage());
//				return "Failed";
//			}
//		}
//		this.noticeService.insertNotice(noticeVO);
//		
//		return "Success";
//	}
}