iknowahra / cspiEdu

CSPI OJT
0 stars 0 forks source link

2021.10.14 교육내용 정리 #23

Open iknowahra opened 2 years ago

iknowahra commented 2 years ago

2021.10.14


내가 실수했던 것 1

            <c:forEach var="item" items="${list }">
                <tr>
                    <td>${list.title }</td>
                    <td>${list.content }</td>
                </tr>
            </c:forEach>

<c:forEach var="item" items="${list }"> 에서 list의 각 element를 item으로 부르기로 했으므로, ${list.title}이 아니라 ${item.title}로 기재했어야 했다.



내가 실수했던 것 2

src/main/java > com.ahra.www > service를 했어야 했는데, ``src/main/java > service를 해서 spring이 service folder를 가져올 수 없었다. 항상 파일 path에 신경을 써야겠다.



Interface vs Class

Interface를 쓰는 가장 큰 이유는 개발자의 실수를 방지하기 위함이다. 또한 여러 사람이 모여서 개발할 때, 메서드 들의 이름이나 구조를 통일하는데 유리하다.



service

package com.ahra.www.service;

import java.util.List;

import com.ahra.www.vo.FormTestVo;

public interface FormTestService {
    public List<FormTestVo> selectFormTest(int no);
}


package com.ahra.www.service;

@Service("FormTestService")
public class FormTestServiceImpl implements FormTestService {

    @Autowired
    FormTestDao dao;

    @Override
    public List<FormTestVo> selectFormTest(int no) {
        return dao.selectFormTest(no);
    }

}



DAO

package com.ahra.www.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.ahra.www.vo.FormTestVo;

@Repository("FormTestDao")
public class FormTestDao {

    @Autowired // 이 객체를 bean에 넣어줌 원래라면 새롭게 만들어야 함. 의존성 주입
    SqlSession sqlSession;

    public List<FormTestVo> selectFormTest (int no) {
        return sqlSession.selectList("formTest.selectFormTest", no);0
    }

}


sqlSession.selectList 은 조건에 일치하는 값을 List에 담아서 return 해준다.


//FormController.java
    @RequestMapping(value = "viewer", method = RequestMethod.GET)
    public String viewer(Model model) {
        List<FormTestVo> list = null;
        try {
            list = service.selectFormTest(1);
            //DAO의 `sqlSession.selectList` 덕분에 
            // new ArrayList<>(sqlSession.selectList) 안하고 바로 담아도 ok
            System.out.println(list.toString());

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("cannot receive the data");
        }
        model.addAttribute("list", list);
        return "form/viewer2";
    }



intercepter : spring main dispatcher(controller 제어)에 접근하기 전 request와 response를 먼저 가로 채서 작업을 해줌 (주로 로그인에 사용함.)

lightsail aws 쌈



내일은 데이터 주고 받기!