spring 방명록 만들기
방명록
--시퀀스
create sequence seq_visit_idx;
--테이블
create table VISIT(
idx NUMBER(3) primary key,
name VARCHAR2(50),
content CLOB,
pwd VARCHAR2(50) not null,
regidate DATE
);
--샘플데이터
insert into VISIT values(
seq_visit_idx.nextVal,
'일길동',
'내가 1등',
'1111',
sysdate
);
insert into VISIT values(
seq_visit_idx.nextVal,
'이길동',
'내가 2등',
'1111',
sysdate
);




pom.xml 수정

mybatis-config.xml 수정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<!-- 별칭 만들기 -->
<typeAlias type="vo.VisitVo" alias="visit"/>
<!-- <typeAlias type="vo.DeptVo" alias="dept"/>-->
</typeAliases>
<mappers>
<mapper resource="config/mybatis/mapper/visit.xml" />
</mappers>
</configuration>
기본설정 들을 다해준다.
vo패키지 VisitVO 클래스 생성
package vo;
public class VisitVO {
private int idx;
private String name, content, pwd, regdate;
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
}

VisitDAO 생성
package dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import vo.VisitVO;
public class VisitDAO {
SqlSession sqlSession;
public void setSqlSession(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
//방명록 전체 조회
public List<VisitVO> selectList(){
List<VisitVO> list=sqlSession.selectList("v.visit_list");
return list;
}
}
context-3-dao.xml수정
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- VisitDAO visit_daoBean = new ...-->
<bean id="visit_daoBean" class="dao.VisitDAO">
<property name="sqlSession" ref="sqlSessionBean"/>
</bean>
</beans>

package com.korea.vs;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import dao.VisitDAO;
import vo.VisitVO;
@Controller
public class VisitController {
VisitDAO visit_Dao;
public void setVisit_Dao(VisitDAO visit_Dao) {
this.visit_Dao = visit_Dao;
}
@RequestMapping(value = {"/","/list.do"})
public String list(Model model) {
//방명록 조회를 위한 dao의 메서드 호출
List<VisitVO> list =visit_Dao.selectList();
model.addAttribute("list",list);
return "/WEB_INF/views/visit/visit_list.jsp";
}
}

visit_list.jsp 생성
<%@ 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>
</head>
<body>
방명록 테스트
</body>
</html>

visit_list.jsp 수정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
* {
magin: 0;
padding: 0
}
#main_box {
width: 330px;
margin: 0 auto;
}
h1 {
text-align: center;
font-size: 20px;
margin: 10px 0 10px 0;
color: #ffffff;
text-shadow: 2px 2px 2px black;
}
.visit_box {
margin: 0 auto;
width: 330px;
margin-top: 30px;
box-shadow: 2px 2px 2px black;
border: 1px solid gray;
}
.type_content {
min-height: 100px;
height: auto;
background: #fcc;
}
.type_name {
background: #cfc;
}
.type_regdate {
background: #ccf;
}
</style>
<!-- Ajax사용을 위한 httprequest참조 -->
<script src="/vs/resources/js/httpRequest.js"></script>
<script>
/* 삭제 버튼 클릭*/
function del(f) {
var pwd = f.pwd.value; //원본 비밀번호
var c_pwd = f.c_pwd.value;//비교를 위한 번호
if (pwd != c_pwd) {
alert('비밀번호가 다릅니다');
return;
}
//Ajax를 통해 idx를 서버로 전송
var url = "delete.do";
var param = "idx="+f.idx.value;
sendRequest(url, param, resultFunc, "Post");
}//del()
/*삭제 결과를 확인랑 콜백 메서드*/
function resultFunc(){
if(xhr.readyState == 4 && xhr.status==200){
//컨트롤러에서 삭제후 return해준 데이터를 받는다
var data= xhr.responseText;
if(data =='no'){
alert("삭제실패");
return;
}else{
alert("삭제성공");
location.href="list.do";
}
}
}
/* 수정 버튼 클릭*/
function modify(f) {
var pwd = f.pwd.value; //원본 비밀번호
var c_pwd = f.c_pwd.value;//비교를 위한 번호
if (pwd != c_pwd) {
alert('비밀번호가 다릅니다');
return;
}
}
</script>
</head>
<body>
<div id="main_box">
<h1>:::방명록 리스트:::</h1>
<div align="center">
<input type="button" value="글쓰기"
onclick="location.href='insert_form.do'">
</div>
<c:forEach var="vo" items="${list}">
<div class="visit_box">
<div class="type_content">${vo.content}</div>
<div class="type_name">${vo.name}</div>
<div class="type_regdate">작성일:${vo.regdate}</div>
<div>
<form>
<input type="hidden" name="idx" value="${vo.idx}"> <input
type="hidden" name="pwd" value="${vo.pwd}"> 비밀번호<input
type="password" name="c_pwd"> <input type="button"
value="수정" onclick="modify(this.form);"> <input
type="button" value="삭제" onclick="del(this.form);">
</form>
</div>
</div>
</c:forEach>
</div>
</body>
</html>
주의!!!


VisitCotroller 수정
package com.korea.vs;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import dao.VisitDAO;
import vo.VisitVO;
@Controller
public class VisitController {
VisitDAO visit_dao;
public void setVisit_dao(VisitDAO visit_dao) {
this.visit_dao = visit_dao;
}
@RequestMapping(value = {"/", "/list.do"})
public String list(Model model) {
//방명록 조회를 위한 dao의 메서드 호출
List<VisitVO> list =visit_dao.selectList();
model.addAttribute("list",list);
return "/WEB-INF/views/visit/visit_list.jsp";
}
//삭제 메써드
@RequestMapping("/delete.do")
@ResponseBody //return값을 jsp등으로 인식하지 않고, 콜백 메서드로 전달하기 위한 키워드
public String delete(int idx) {
int res = visit_dao.delete(idx);
String result = "no";
if (res==1) {
result="yes";
}
//@REsponseBody가 적용되어 있으므로
//result에 no 또는 yes데이터는 콜백 메서드로 돌아간다
return result;
}
}
VisitDAO수정
package dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import vo.VisitVO;
public class VisitDAO {
SqlSession sqlSession;
public void setSqlSession(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
//방명록 전체 조회
public List<VisitVO> selectList(){
List<VisitVO> list=sqlSession.selectList("v.visit_list");
return list;
}
//게시글 삭제
public int delete(int idx) {
int res =sqlSession.delete("v.visit_delete", idx);
return res;
}
}
visit.xml 수정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="v">
<!-- 방명록 전체 조회 -->
<select id="visit_list" resultType="visit">
select * from visit order by
idx DESC
</select>
<!-- 게시글 삭제 -->
<delete id="visit_delete" parameterType="int">
delete from visit where idx =#{idx}
</delete>
</mapper>


삭제 기능이 추가 되었다.
'SPRING' 카테고리의 다른 글
| [SPRING] 09/14 방명록에 사진 첨부 (0) | 2022.09.14 |
|---|---|
| [SPRING] 09/13 글쓰기 기능, 수정 추가 (0) | 2022.09.13 |
| [SPRING] 09/07 (0) | 2022.09.07 |
| [SPRING]09/06 (0) | 2022.09.06 |
| [Spring]09/02 (1) | 2022.09.02 |
댓글