반응형
servlet-context.xml
resources 태그를 사용하게 되면 javascript,css,image 등 브라우저가 읽어야하는 자원에 대한 가상경로를 매핑할 수 있으며 mapping 옵션으로 가상경로를 지정하여 location 옵션으로 물리적인 webapp 하위 경로를 지정할 수 있다
resources 태그는 여러개를 선언하여 각 자원 그룹에 대한 각각의 가상경로를 매핑할 수 있다
<resources mapping="/resources/**" location="/resources/" />
<link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/resources/css/spring.css" />
<script src="<%= request.getContextPath() %>/resources/css/jquery-3.7.1.js"></script>
<resources mapping="/css/**" location="/resources/css/" />
<resources mapping="/javascript/**" location="/resources/js/" />
<resources mapping="/image/**" location="/resources/image/" />
<link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/spring.css" />
<script src="<%= request.getContextPath() %>/javascript/jquery-3.7.1.js"></script>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AJAX 연습</title>
<link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/spring.css" />
<script src="<%= request.getContextPath() %>/javascript/jquery-3.7.1.js"></script>
<script>
window.onload = function(){
//alert("js");
}
function callFn01(){
$.ajax({
url: "text.do",
success : function(data){
console.log(data);
$("#result1").html(data);
},
error : function(xml,error){
console.log(error);
}
});
}
</script>
</head>
<body>
<h2>AJAX 연습</h2><hr>
<button onclick="callFn01()" class="sBtn">ajax 호출1</button>
<div id="result1"></div>
</body>
</html>
@ResponseBody 어노테이션을 사용하면 굳이 response 객체를 직접 선언하지 않고도
ajax 응답값을 return 키워드로 반환할 수 있다
해당 어노테이션은 반환되는 값을 요청 servlet 페이지에 그대로 출력하는 기능을 갖는다
@ResponseBody 어노테이션을 사용하여 응답값을 반환할 때도 마찬가지로 text,json 데이터만 반환할 수 있다
기존
@RequestMapping(value="/text.do")
public void text(HttpServletResponse rsp) throws IOException {
rsp.setCharacterEncoding("UTF-8");
rsp.getWriter().append("testData").flush();
}
@ResponseBody
@ResponseBody
@RequestMapping(value="/text.do")
public String text() {
return "testData";
}
아이디중복체크
function checkID(){
let uid = $("#uid").val();
$.ajax({
url: "ajax/checkID.do",
data : {uid:uid},
success : function(result){
console.log(result);
result.trim();
if(result === "IS"){
$("#checkID").text("사용할 수 없는 아이디입니다").css("color","red");
}else{
$("#checkID").text("사용할 수 있는 아이디입니다").css("color","green");
}
}
});
}
<input type="text" name="uid" id="uid">
<button type="button" class="sBtn" onclick="checkID()">중복확인</button>
<div id="checkID"></div>
<select id="selectID" parameterType="String" resultType="int">
SELECT count(*)
FROM user
WHERE uid=#{uid}
</select>
public int selectID(String uid) {
return sqlSession.selectOne("edu.springboard.mapper.userMapper.selectID",uid);
}
@Override
public int selectID(String uid) {
return userDAO.selectID(uid);
}
public int selectID(String uid);
@ResponseBody
@RequestMapping(value="/checkID.do")
public String checkID(String uid) {
int result = userService.selectID(uid);
if(result > 0) {
System.out.println("중복아이디");
return "IS";
}else {
System.out.println("사용가능아이디");
return "NONE";
}
}


작성한 게시글 갯수 조회
function callFn03(){
let value = $("#id").val();
$.ajax({
url: "idCount.do",
data : { uid : value},
success : function(data){
console.log(data);
$("#result3").text("작성한 게시글의 수: "+data);
},
error : function(xhr){
console.log(xhr);
}
});
}
<input type="text" id="id">
<button class="sBtn" onclick="callFn03()">조회</button>
<div id="result3"></div>
@ResponseBody
@RequestMapping(value="/idCount.do")
public String idCount(String uid) {
int result = noticeService.idCount(uid);
return result + "";
}
값이 한개만 넘어오는 경우 그값의 예약어 : value
<select id="freeWriteIdCount" parameterType="String" resultType="int">
select count(*) from free_board f, user u
WHERE f.uno=u.uno and uid=#{value}
</select>
public int idCount(String uid) {
return sqlSession.selectOne(namespace+".freeWriteIdCount",uid);
}
@Override
public int idCount(String uid) {
return noticeDAO.idCount(uid);
}
public int idCount(String uid);

반응형
'Spring' 카테고리의 다른 글
[Spring] 파일 업로드 (0) | 2024.12.01 |
---|---|
[Spring] AJAX 여러건의 데이터 받기 (0) | 2024.11.30 |
[Spring] MVC 연습 (0) | 2024.11.28 |
[Spring] Spring MVC (2) | 2024.11.27 |
[Spring] @Controller (0) | 2024.11.25 |