반응형
<update id="update" parameterType="Freeboard">
UPDATE freeboard SET content=#{content},subject=CONCAT('(수정)',subject ),
wdate=sysdate WHERE idx=#{idx}
</update>
작성한 글 수정하기
글 상세 내용 페이지에서 수정 버튼을 누르면
1) 글을 입력할 수 있는 textarea를 출력합니다.
2) 버튼은 수정/삭제/목록 에서 저장/취소/목록 버튼으로 변경됩니다.
3) 수정된 글의 제목의 앞에는 '(수정)' 텍스트를 추가합니다.
Mapper 인터페이스
void update(Freeboard dto);
XML 매퍼 파일
<update id="update" parameterType="Freeboard">
UPDATE freeboard SET content=#{content},subject=CONCAT('(수정)',subject ),
wdate=sysdate WHERE idx=#{idx}
</update>
CONCAT 함수로 수정된 글에 '(수정)' 텍스트를 추가합니다.
Controller
View
작성한 글 삭제하기
댓글 기능 구현하기
댓글 테이블 comments를 생성합니다.
CREATE TABLE comments (
idx number(3) NOT NULL, --댓글 테이블의 기본키
"ref" number(5) NOT NULL, --freeboard 테이블의 idx
name varchar2(30) NOT NULL,
content varchar2(2000) NOT NULL,
wdate DATE DEFAULT sysdate,
ip varchar2(15) DEFAULT '127.0.0.1',
heart number(3) DEFAULT '0',
PRIMARY KEY(idx)
);
--시퀀스 생성
CREATE SEQUENCE cmt_idx_seq;
--데이터 추가(댓글 작성)
INSERT INTO comments(idx,"ref",name,content)
VALUES (cmt_idx_seq.nextval,3,'이하니','확인했습니다.!!');
--freeboard 테이블의 댓글 개수
--1) 댓글 작성될 때마다 +1 2) 댓글 개수를 구하는 SELECT
SELECT count(*) FROM comments WHERE "ref"=3; --freeboard 3번 글의 댓글 개수
SELECT count(*) FROM comments WHERE "ref"=1; --freeboard 1번 글의 댓글 개수
--1) 로 구현할 예정 : insert into comments > update freeboard set commentCount=commentCount+1
* ip 설정 바꾸기
ipv6 출력을 ipv4로 바꿉니다.
[Run] - [Run Configurations]을 선택합니다.
VMware 서버를 선택하고 [Arguments] 탭에서 VM arguments:에 텍스트를 추가합니다.
-Djava.net.preferIPv4Stack=true
* 프로젝트 대비 임시 로그인
public class TestLoginController {
private static final Logger logger = LoggerFactory.getLogger(TestLoginController.class);
//로그인과 같은 동작을 하는 테스트용입니다. (post 방식이어야 합니다.)
@RequestMapping("login")
public String login(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("user", new Member(0, "모모", null, "momo@naver.com"));
return "redirect:/";
}
@RequestMapping("admin") //관리자 로그인
public String admin(HttpSession session) {
session.setAttribute("admin", new Administrator("root",1));
return "redirect:/";
}
@RequestMapping("logout")
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/";
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Administrator {
private String adminId;
private int level;
}
<h3>일반 사용자 : 고객님.</h3>
<c:if test="${user!=null}"><!-- 로그인 했을 때 메뉴 -->
<a href="logout">로그아웃</a>
<br>${sessionScope.user.name }님 환영합니다.
</c:if>
<c:if test="${user==null}"><!-- 로그인 안 했을 때 메뉴 -->
<a href="login">고객님 로그인</a>
</c:if>
<hr>
<!-- 관리자 메뉴 : 나중에 별도로 페이지를 만듭니다. -->
<h3>관리자</h3>
<c:if test="${admin!=null}"><!-- 관리자 로그인 했을 때 메뉴 -->
<a href="logout">로그아웃</a>
<br>${admin.adminId }님 환영합니다.
</c:if>
<c:if test="${admin==null}">
<a href="admin">관리자 로그인</a>
</c:if>
※ home.jsp에 위에 있는 <%@ page session="false" %> 를 지워야 session 객체를 사용할 수 있습니다.
고객 로그인 버튼 클릭 전 후
반응형
'수업 일지 > Spring' 카테고리의 다른 글
71일차 - [Spring] JSON/Ajax/REST (0) | 2022.04.19 |
---|---|
70일차 - [Spring] Interceptor/RedirectAttributes (0) | 2022.04.18 |
68일차 - [Spring] 게시판 기능 구현 (0) | 2022.04.14 |
67일차 - [Spring] 게시판 페이징 처리 (0) | 2022.04.13 |
66일차 - [Spring] 파일 업로드 (0) | 2022.04.13 |
댓글