Today I Learned

2021.03.18(Thu) 📌 TIL

Elin J 2021. 3. 18. 19:32

📃 [어제 복습]


 웹서버실행 = 구동=스타트 , 자동인식하는 문서
   ㅣ- pom.xml
   ㅣ- web.xml
         ㅣ- root-context.xml --------> 스프링 교재보고
         ㅣ- servlet-context.xml
                  ㅣ- 파일업로드, jsp뷰, 맨마지막 ccs base-패키지=net.hb.*
                  ㅣ- dao-context.xml문서를 여기에 연결

 

 

 

src/main/java 컨트롤,다오,디티오
src/main/resources 문서세팅 XML/properties

   ㅣ- config.mybatis
         ㅣ- board.xml
         ㅣ- sqlMapConfig.xml
         ㅣ- dao-context.xml
   ㅣ- db.properties
src/main/webapp 웹으로 가는 웹문서
   ㅣ- resource 이미지가 있는 리소스
         ㅣ- images폴더 복붙
         ㅣ- upload

   ㅣ- WEB-INF
   ㅣ- index.jsp

 

 

 

 

==========================3월 18일 목요일===============================

 

💻 [오늘의 수업]

 

★★스프링은 new키워드 최대한 자제하고 한번 자동으로 인스턴스를 생성되면 개체를 유지★★
      BoardDAO dao = new BoardDAO( ); 대신
      @Autowired BoardDAO; 라고 기술합니다.
       jsp에서는 ==> <jsp:useBean id=dao class=net.hb.crud.BoardDAO /> 사용

 

 

★★스프링은 내부적으로 데이터를 연결시킬 때 이름name으로 연결★★

      <input type="text" name="title"> 이라하면
      BoardDTO.java 문서의 private String title필드와 연결
      hobby테이블 title필드와도 연결
      board.xml문서 insert ~ values( #{ title } )
      BoardController.java문서에서
           public String board_insert(BoardDTO dto) {
             //jsp에서는 뷰문서의 데이터를 넘길때는 request.getParameter("title")사용
      }

 

 

board.xml문서
   <네임영역board> 퀴리문 </네임역역>

 

==>반드시 네임영역 .@@@ board.add 접근해야한다 !
                 (네임영역 중복되면 X)
==> 네임영역 .@@@ 에 접근하는 클래스 SqlSessionTemplate
      BoardDAO.java문서와 board.xml문서 연결하는 클래스 SqlSessionTemplate입니다
      그래서 BoardDAO.java문서에 객체화 @Autowired SqlSessionTemplate temp기술

 

 


💻 [전체출력 순서 설명]

board.xml문서 => BoardDAO.java => BoardController.java => boardList.jsp문서

 

1> BoardDTO.java 순수자바
           게터/세터 행번호rn필드 추가 img_file_name, upload_f

 

2> board.xml 문서

      <select id="selectAll" resultType="net.hb.crud.BoardDTO"> select rownum rn, h.* from hobby h </select>

    

       비교설명 : GuestSQL.java문서 testList.jsp문서 guestList.jsp문서서에서 전체데이터출력

               ==> while(RS.next()==true){

                      GuestDTO dto = new GuestDTO( );

                       dto.setTitle(RS.getString("title"); ~~~

                       list.add(dto);

                     }    

 

3> BoardDAO.java
             public List dbSelect( ){
            ~~ return temp.selectList("board.selecAll") }

4> BoardController.java
         public String board_list( ){
         List LG = dao.dbSelect( );
          값전달 request.setAttribute("가짜", "진짜");, session.setAttribute("가짜", "진짜");
          스프링 Model, ModerlAndView클래스로 값전달
               => model.addAtrribute("LG", LG);
                    return "boardList" ;
                   }

 

5> boardList.jsp문서 상단에 jstl태그선언 prefix=c, prefix=fmt
          <c:forEach var="dto" items="${LG}">
           제목: ${dto.title} ${ dto.getTitle( ) }

          <img src = '${pageContext.request.contextPath}/resources/upload/${dto.img_file_name}'

                   width=100 height=30 border=0> <c:/forEach>



💻📃 [한번 더 정리]

 

1> BoardDTO.java  ==> 추가 private int rn; //행번호
2> board.xml         ==> 추가<select id="selectAll" resultType="net.hb.crud.BoardDTO"></select>

3> BoardDAO.java   ==> 추가 return temp.selectList("board.selectAll");
4> BoardController.java  ==> 추가 List<BoardDTO> LG = dao.dbList( ); model.addAttribute("LG", LG);
5> jstl, fmt 태그 상단에 기술
6> boardList.jsp           ==> <c:forEach var="dto" items="${LG}">${dto.title}
7> index.jsp문서          ==> 변경 boardList.do (=boardList.jsp)
8> boardList.jsp문서  행번호,이름,제목,성별,취미,이미지

     <table>

         <tr> <td> 6개 항목만 출력 </td> </tr>

          그림출력 <img src ='${pageContext.request.contextPath}/resources/upload/${dto.img_file_name}' > 
     </table>

9> BoardController.java
       public String board_insert(BoardDTO dto) {
        ~~ dto.dbInset(dto) ;
           //return "boardList"; //에러는 없지만 내용없이 제목만 출력
          return "redirect:/boardList.do" ; //boardList.do표식 맨 마지막에 return "boardList"
           //저장서브릿 response.sendRedirect("glist.do") ;
         }

 

10> src/main/webapp
        l- index.jsp문서 먼저 실행

 

11> 자동실행되는문서 pom.xml, web.xml, root-context.xml, servlet-context.xml
   servlet-context.xml문서
       ㅣ- <beans:import resource="classpath:config/mybatis/dao-context.xml" />

    src/main/webapp
       ㅣ- congif.mybatis

            ㅣ- board.xml문서 id를 BoardDAO.java문서 SqlSessionTemplate temp접근

            ㅣ- sqlMapConfig.xml  => board.xml

            ㅣ- dao-context.xml => db.propertiest + SqlMapConfig.xml +SqlSessionTemplate temp클래스기술

       ㅣ- db.properties

 

 


////////////////////////////////////////////////////////////////////////////////////////////////

SQL> desc hobby
set linesize 1200;
set pagesize 1200;

col title for a10;
col content for a10;
col img_file_name for a25;
col name for a14;
SQL> commit ;
SQL> select hobby_idx, name, title, img_file_name from hobby ;

////////////////////////////////////////////////////////////////////////////////////////////////

 


---------------------------------------------------오후 수업--------------------------------------------------

 

💻[한건 상세]

 

1> boardList.jsp문서 제목클릭
    <a href="boardDetail.do?idx=${dto.hobby_idx}" ${dto.title} </a>

 

 

 

2> BoardController.java문서
           @RequestMapping("/boardDetail.do")
            public String board_detail(@RequestParam("idx") int data , Model model){
            BoardDTO dto = dao.dbDetail(data) ;
             model.addAttribute("dto", dto) ;
             return "boardDetail" ; 
           }

 

 

3> boardDetail.jsp문서 생성

          ${dto.title} ${dto.gender} ~~~

 

 

 

4> board.xml문서

    <select id="detail" parameterType="int" resultType="net.hb.crud.BoardDTO">

        select * from hobby where hobby_idx = #{data}

     </select>

 

 

5> BoardDAO.java문서

      public BoardDTO dbDetail(int data){ return temp.selectOne("board.detail", data); }

 

 

==> 입력한 상세페이지 화면 

 

========================================================================================================================================================