https://ckeditor.com/ckeditor-4/download/ 에 가서 Standard Package 바더 주세용
CDN을 써도 아마 저는 상관 없어요, CKEditor5는 쪼메 더 있다가 쓰세요, 그럴 이유가 있어요
servlet-context.xml
<!-- 꼭 필요한 건 아닌 데 이런 것도 Bean이 된다는 걸 확인 차원에서 -->
<beans:bean id="uploadPath" class="java.lang.String">
<beans:constructor-arg value="어쩌구 절대경로/webapp/resources폴더경로 카복해주삼"/>
</beans:bean>
<!-- 이것도 꼭 필요한 건 아니지만 그냥 확인 차원에성 -->
<resources mapping="/ckUpload/**" location="/resources/ckUpload/" />
Jacson도 이미 있고, multipart-config도 했으므로 더 필요한 건 없어 보임
다음은 얼렁뚱당 jsp를 맹글어 초간단 CKEditor를 설쩡
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="<%=request.getContextPath()%>/resources/ckeditor/ckeditor.js"></script>
<script>
</script>
</head>
<body>
<textarea name="nm_ta" id="id_ta"></textarea>
<script>
CKEDITOR.replace("nm_ta",{
enterMode : CKEDITOR.ENTER_BR,
filebrowserUploadMethod : "form", // 빠트려면 당황스런 상황
filebrowserUploadUrl: "<%=request.getContextPath()%>/ckUpload"
})
</script>
</body>
</html>
CKEditor 이미지 업로드 대항을 위해 컨뜨롤러를 맹금
@Controller
@Slf4j
public class CkUploadController {
@Autowired
private String uploadPath;
@PostMapping(value="/ckUpload",produces = "text/html;charset=utf-8")
@ResponseBody
public String ckUpload2(HttpServletRequest req,
HttpServletResponse res,
MultipartFile upload) throws Exception {
log.info(upload.getOriginalFilename());
//아래 코드로 이클립스가 실제로 가져오는 디렉토리 확인
//window의 mklink명령어를 활용하면 eclipse에서도 확인
String ress = req.getSession().getServletContext().getRealPath("/resources");
log.debug("resource:" + ress);
String webinf = req.getSession().getServletContext().getRealPath("/WEB-INF");
log.debug("WEB-INF:"+ webinf);
String fileName = upload.getOriginalFilename();
String ckUploadPath = uploadPath + "/" + "ckUpload" + "/" + fileName;
upload.transferTo(new File(ckUploadPath));
String callback = req.getParameter("CKEditorFuncNum");
String fileUrl = req.getContextPath() + "/ckUpload/" + fileName;
/* CKEditor가 원하는 스크립트 문자열을 리턴(아님말공) */
String scriptStr = "<script type='text/javascript'>"
+ "window.parent.CKEDITOR.tools.callFunction("
+ callback + ",'" + fileUrl+"','이미지 업')"
+ "</script>";
return scriptStr;
}
}
D:\myworkspace2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SiteMesh2\resources
mklink는 관리자 권한 필요
mklink /d ckUpload D:\myworkspace2\SiteMesh2\src\main\webapp\resources\ckUpload
security 설정 되어 있을 경우 security ajax로 검색해서 해결하삼
체크 (2) | 2022.05.02 |
---|---|
추가 기본 annotation (2) | 2022.04.29 |
초간단 WebSocket 채팅 (16) | 2022.04.28 |
MVC이해 (0) | 2022.04.27 |
HttpClient (5) | 2022.04.27 |