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}으로 수정.

 

 

복사했습니다!