티스토리 뷰

카테고리 없음

게시판 등록기능 (2)

evolutioning 2025. 1. 16. 16:11

지난 포스팅은 html 및 js를 다뤘다.

 

이어서 백엔드를 진행해보려한다.

 

xhr.open('POST', '/auth/admin/manage/board_list', true);

js에서 getBoardList라는 함수를 실행하고

해당 URL에 POST방식으로 요청을 보낸다.

 

1.Controller

@ResponseBody
@RequestMapping(value = [("/auth/admin/manage/board_list")], method = [(RequestMethod.POST)])
@Throws(Exception::class)
fun adminBoardSelectList(param : SearchModel) : JSONObject {
    return service.adminBoardSelectList(param)
}

js에서 요청한 URL을 @RequestMapping에 담아두고, POST방식도 잊지말고 작성한다.

 

파라미터 :(param : BoardModel)는

data class BoardModel(

    val board_id: String ? = null,
    val board_seq: String ? = null,
    var userid: String ? = null,
    val title: String ? = null,
    val contents: String ? = null,
    val regdt:  String ? = null,
    val upddt:  String ? = null,
    val is_del: Int ? = null,


    val board_title: String ? = null,
    val board_cont: String ? = null,

    )

이렇게 지정해두었다.

 

보내고싶은 파라미터를 Model 형식에 맞춰 작성해야한다.

 

이후 Controller에서는 Service로 요청을하고,

 

2. Service

fun adminBoardSelectList(param : SearchModel) : JSONObject {
    val jsono = JSONObject()

    try {
        val listdata = mapper.adminBoardSelectList(param, session.getAttribute("userid").toString())

        jsono["RESULT"] = "OK"
        jsono["LIST"] = listdata
        jsono["MESSAGE"] = "조회에 성공하였습니다."
    } catch (e : Exception) {
        logger.error("ERROR : " + e)
        jsono["RESULT"] = "ERROR"
        jsono["MESSAGE"] = "조회에 실패했습니다."
    }
    return jsono

로직은 Service에 작성했다.
웹 화면에서 따로 userid를 파라미터로 전하지않는다.


로그인을 처리할때 Spring Security3로 userid를 session에 담기때문에
userid는 세션에 저장된 값을 param으로 추가해 mapper로 보내도록 작성했다.

 

형식은 JSONObject으로 결과를 받을생각이고
[LIST]에 쿼리의 결과를 담으려한다.

 

따로 param에 userid를 담지않았기때문에,

mapper.adminBoardSelectList([1 : param] , [2 : session에서 갖고오는 userid값]) 이렇게 설정했다.

 

3.Mapper / Mapper.xml

@Mapper
interface AdminMapper {
    fun adminBoardSelectList(param: SearchModel, @Param("userid") userid :String): List<BoardModel>)
}

 

<select id="adminBoardSelectList"                    parameterType="com.steamchk.ekeprl.www.auth.admin.model.SearchModel"
                                                     resultType="com.steamchk.ekeprl.www.common.model.BoardModel">
    /*CommonMapper.adminBoardSelectList*/
    SELECT UB.BOARD_SEQ
            , UB.BOARD_ID
            , UB.USERID
            , UB.TITLE
            , UB.CONTENTS
            , UB.REGDT
            , UB.IS_DEL
    FROM USER_BOARD UB
    ORDER BY BOARD_SEQ DESC

</select>

각각 id를 잘 맞추고

쿼리를 실행하는데 필요한 parameterType는 SearchModel이라는 통합 검색 Model을 만들어 사용하고,

 

** SearchModel**

data class SearchModel(

    var keywordsA : String ? = null, //검색단어1
    var keywordsB : String ? = null, //검색단어2
    var keywordsC : String ? = null, //검색단어3

    var regDate : String ? = null, //등록일
    var modDate : String ? = null, //수정일

    var userid : String ? = null, //아이디

)

종합 검색Model을 만들어

비슷한 검색모델을 여러개 만들지 않으려고한다.

 

select 쿼리의 결과는 앞전에 설명한 BoardModel을 이용한다.

 

해당 작업이 문제없이 이루어지면

웹페이지에서는

게시판 조회기능 (1)의 시작 사진인

이 화면이 나오게된다.

 

이상 게시판 조회기능 포스팅을 마치도록하겠다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함