
1. 아이디/비밀번호 찾기 debug
1-1) 비밀번호 찾기는 service에서도 parameter로 @Param annotation을 이용했고, db에서 새 비밀번호로 변경이 안 되었기에 controller.java에서 code 일부를 수정했다. changePw method가 잘못되었기 때문인데, 이 부분을 내가 mapper.xml에서 누락시켰기 때문인 것 같다. + jsp에서 alert 옆 semicolon을 누락했다. 수정.
a) 아이디 찾기가 여전히 안 된다. parameter 개념이 미숙한 탓 같다ㅠㅠ. user_id parameter를 추가했으나 400번 오류가 뜨는데 오류 code도 뜨지 않는다,,
강사님 설명 들으니 이해를 못한 게 맞다.
service에 있는 searchId라는 method를 괄호 안 객체를 통해 존재 여부를 확인하면 > xml에 있는 sql문을 실행해서 user_id를 조회 > data를 가지고 있는 상태에서 user_id에 저장하는 개념으로 이해.
b) mypage 비밀번호 변경 부분 강사님이 email 대신 PK인 user_id로 수정하라고 해서 수정은 했으나 수정 후 화면이 그대로라서, 저장 후 home으로 이동하도록 나중에 보수.
2. 게시판
2-1) Post용 VO, service, serviceImpl, mapper.java, mapper.xml, controller 생성 및 글 작성 service 생성
2-2) write.jsp 생성 화면 구현
footer 분리, index 및 member jsp 보완
a) available: expected at least 1 bean which qualifies as autowire candidate. >> @service annotation 누락
file upload form만 추가
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">글 작성</h3>
</div>
<!-- /.box-header -->
<!-- form start -->
<form role="form" action="/post/write" method="post">
<div class="box-body">
<div class="form-group">
<label for="pst_title">글 제목</label>
<input type="text" class="form-control" id="pst_title" name="pst_title">
</div>
<div class="form-group">
<label for="pst_writer">작성자</label>
<input type="text" class="form-control" id="pst_writer" name="pst_writer"
value='<c:out value="${MemberVO.user_nm}" />' readonly>
</div>
<div class="form-group">
<label for="pst_content">내용</label>
<textarea class="form-control" rows="3" id="pst_content" name="pst_content"></textarea>
<script>
CKEDITOR.replace('pst_content', { height: 500 });
</script>
</div>
</div>
<!-- /.box-body -->
<!-- 파일업로드및 파일목록 출력위치-->
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">파일 첨부</h3>
</div>
<div class="box-body">
<div class="form-group uploadDiv">
<input type="file" name="uploadFile" multiple>
</div>
<div class="uploadResult">
<ul></ul>
</div>
</div>
</div>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary" id="btn_post">저장</button>
</div>
</form>
</div>
</div>
</div>
2-3) Service, ServiceImpl, Mapper, Controller 작업
write: 글 작성 저장
getList: 게시글 목록 읽어 오기
get: 게시글 보기
modify: 게시글 수정
delete: 게시글 삭제
public class PostServiceImpl implements PostService {
@Setter(onMethod_ = @Autowired)
private PostMapper mapper;
@Transactional
@Override
public void write(PostVO post) {
mapper.insert(post);
}
@Override
public PostVO get(Long pst_no) {
// TODO Auto-generated method stub
return mapper.get(pst_no);
}
@Override
public List<PostVO> getList() {
// TODO Auto-generated method stub
return mapper.getList();
}
@Override
public void modify(PostVO post) {
// TODO Auto-generated method stub
mapper.update(post);
}
@Override
public void delete(Long pst_no) {
// TODO Auto-generated method stub
mapper.delete(pst_no);
}
}
<insert id="insert" parameterType="com.comunity.domain.PostVO">
INSERT INTO post_tb(pst_no, pst_title, pst_content, pst_writer)
VALUES(seq_post.nextval, #{pst_title}, #{pst_content}, #{pst_writer})
</insert>
<select id="getList" resultType="com.comunity.domain.PostVO">
SELECT pst_no, pst_title, pst_content, pst_writer, pst_wr_date, pst_update_date FROM post_tb WHERE pst_no = #{pst_no}
</select>
<update id="update">
UPDATE post_tb
SET pst_title = #{pst_title}, pst_content = #{pst_content}, pst_update_date = #{pst_update_date}
WHERE pst_no = #{pst_no}
</update>
<delete id="delete">
DELETE FROM post_tb WHERE pst_title = #{pst_title}
</delete>
a) writer가 null 값이 들어감
저렇게 작성하니까 가져올 수 있는 data가 없었음. 이미 MemberController를 통해서 loginStatus 객체가 존재하므로 거기서 가져올 생각을 했어야 함. ${loginStatus.user_nick}으로 수정.
'취준 > Portfolio' 카테고리의 다른 글
[포트폴리오] 커뮤니티 게시판 제작 10 (0) | 2022.04.11 |
---|---|
[포트폴리오] 커뮤니티 게시판 제작 09 (0) | 2022.04.01 |
[포트폴리오] 커뮤니티 게시판 제작 07 (0) | 2022.03.14 |
[포트폴리오] 커뮤니티 게시판 제작 06 (0) | 2022.03.06 |
[포트폴리오] 커뮤니티 게시판 제작 05 (0) | 2022.03.02 |