파이썬은 자료형없이 변수명 쓰고 ; 필요 없다

   -> myVar = '아아'

 

파이썬은 메모리가 허락하는한 정수는 무한대, 실수는 8바이트

 

파이썬 한줄주석 #

파이썬 여러줄 주석 ''' '''

파이썬 블린값은 첫글자가 대문자 False , True


파이썬은 문자와 문자열을 구분하지 않는다.

'와 " 둘다 사용 가능

 

파이썬에서 자료형 보는 내장함수 : type()

 

파이썬의 형변환하기 : int() , str()

 

12 34

 

print(myStr + str(myInt) ) -> 1234

print(int(myStr) + myInt ) -> 46


 파이썬의 컨테이너 자료형 1. 리스트 [] : 중복 허용

     기본구조 : 변수명 = [ 'ㄱ' , 'ㄴ' , 'ㄷ' ]

     인덱스는 0번지 부터 시작한다. 출력방법 : print(변수명[4]) print(변수명[0])

     파이썬 리스트의

                            함수, len(길이) ,                            

                            리스트명.append(요소 추가) 요소를 하나씩 붙임,

                           리스트명.insert(2, '삽입') 2번째에 ^삽입^ 이라는 요소 추가,

                           리스트명.extend( [ '연장' , '리스트를 갖다 붙일수있따'] ) ,

                           리스트명.pop(3) 3번째 요소 삭제, 적지 않을시 맨 뒤 요소를 삭제,

                           리스트명.remove('사악제') 특정데이터 ^사악제^ 를 삭제

                           리스트명.clear() 모든 요소 삭제

                          리스트명.sort() 데이터 형식을 맞춰줘야 에러안남 디폴트는 오름차순

                          리스트명.sort(reverse = True ) 내림차순

                          리스트명.reverse() ㄱㄴㄷ -> ㄷㄴㄱ

                          리스트명[1:3] , 리스트명[:2] ㄱㄴㄷㄹㅁ -> ㄴㄷ 자른부분의 앞까지 가져옴

 

파이썬의 컨테이너 자료형 2. 튜플 () , 데이터수정불가

 

     길이 : len() 튜플끼리 결합 : + ( 'a' ,'b' )

     데이터자르기 : 튜플명[1:3]

     인덱스검색 : 튜플명.index('b')

     튜플의 요소 개수 : count()

 

파이썬의 컨테이너 자료형 3. 딕셔너리 {} , 키와 밸류

    dic = { 10:'크크' , 20:'느느', 30: '뜨뜨' }

    print(dic(20)) --> 느느

    del dic[20]

    print(dic) --> { 10:'크크' , 30: '뜨뜨' }

0. 파이썬은 컴파일을 하지 않고 바로 결과를 확인 할 수 있는 인터프리터 언어다.

 

1. 다운로드 주소

https://www.python.org/downloads/

 

19.3.27일 기준 3.7.2버전이 최신이지만 3.7.0 버전 설치

20. 8. 24일 기준 3.8.5 버전이 최신 3.7.9 버전 설치

 

 

1.1  다운로드 설치파일 형태

 

Windows x86-64 embeddable zip

압축된파일

fileWindows x86-64 executable installer

설치에 필요한 모든파일을 포함, 인터넷연결 불필요

Windows x86-64 web-based installer

설치에 필요한 최소 파일 , 인터넷을통해 남은것을받음 ->인터넷연결 필요

자료출처)  https://itissmart.tistory.com/71

 

 

2. 설치

 

 

 

 

3. 설치 확인

파이썬 설치 확인 ( 4.1 shell 모드 실행 )

 

 

cmd창에서 설치확인

 

4. 파이썬IDLE ( 통합개발툴, 자바로 치면 이클립스 , C로 치면 비스)

 

4.1 shell

   - 저장 기능 없이 바로 간단하게 확인 하고 날릴 수 있음

   

shell 모드 

4.2 code-editor

   - 저장하고 프로젝트 진행할 것이다.

   - shell 모드 에서 file - open 으로 열기

   - F5 로 실행

detail Form > update Form


detail 뷰(Form)

1
<form name="frmForm" id="_frmForm" method="post" action="bbsupdate.do">
cs


1
2
3
4
$("#_btnUpdate").click(function() {    
    alert('글수정하기');        
    $("#_frmForm").attr({ "target":"_self""action":"bbsupdate.do" }).submit();
});
cs

hidden으로 수정할 게시글의 seq 정보 넘김


컨트롤러( update.do : 수정 뷰 보여주기 )


    return "bbsupdate.tiles";
cs

가져올 게시판 정보에 해당하는 게시글의 seq 입력

update폼으로 해당 게시글의 정보 addAttribute "bbs"





디비에 수정된 정보 변경 , update Form> detail Form


10행 : 해당게시글의 seq값을 bbsupdateAf.do로 보낸다



1
2
3
4
5
6
7
@RequestMapping(value = "bbsupdateAf.do"
            method = RequestMethod.POST)
    public String bbsupdateAf(BbsDto bbs,Model model) throws Exception {
        logger.info("Welcome BBSController bbsupdateAf! "+ new Date());
        khBbsService.updateBbs(bbs);
        return "redirect:/bbslist.do";
    }
cs

5행: 들어온seq값(bbs)을 db.xml update문으로 보내줌 


서비스

1
2
3
4
@Override
    public void updateBbs(BbsDto bbs) throws Exception {
        khBbsDao.updateBbs(bbs);
    }
cs

이 코드는 db의 update쿼리로 넘겨주는 역할만 하고있다

만약 수정 실패시 에러를 띄우고 싶다면 void가 아니라 boolean또는 int로 결과값을 만들어 에러메시지를 띄울 수 있다


xml

1
2
3
4
5
6
<update id="updateBbs"
    parameterType="kh.com.a.model.BbsDto">
    UPDATE BBS SET
    TITLE=#{title}, CONTENT=#{content}, WDATE=SYSDATE
    WHERE SEQ=#{seq}
</update>
cs



Delete



detail 뷰

1
2
3
4
$("#_btnDel").click(function() {    
    alert('삭제하기');
    $("#_frmForm").attr({ "target":"_self""action":"bbsdelete.do" }).submit();
});
cs



컨트롤러

1
2
3
4
5
6
7
8
@RequestMapping(value = "bbsdelete.do"
            method = {RequestMethod.GET,RequestMethod.POST})
    public String bbsdelete(BbsDto bbs, Model model) throws Exception{
        logger.info("Welcome BBSController bbsdelete! "+ new Date());
        
        khBbsService.deleteBbs(bbs.getSeq());
        return "redirect:/bbslist.do";
    }
cs

6행 : 해당게시글의 seq넘겨주고 deleteBbs쿼리문 실행


서비스

1
2
3
4
@Override
    public void deleteBbs(int seq) throws Exception {
        khBbsDao.deleteBbs(seq);
    }
cs


db.xml

1
2
3
4
5
<update id="deleteBbs" parameterType="java.lang.Integer">
    UPDATE BBS
    SET DEL=1
    WHERE SEQ=#{seq}
</update>
cs



이전 뷰

bbslist 뷰에서 detail 뷰로 넘어갈때 seq를 넘겨준다



컨트롤러

컨트롤러에서 83행으로 seq값이 들어온다

88행에 들어온 seq값을 db로 보내준다

89행 다음뷰로 보낼 데이터(bbs) 전송 , 전송이름 bbs


서비스 

1
2
3
4
5
6
@Override
    public BbsDto getBbs(int seq) throws Exception {
 
        return khBbsDao.getBbs(seq);    
    }
 
cs

다오

1
2
3
4
@Override
    public BbsDto getBbs(int seq) {
        return sqlSession.selectOne(namespace+"getBbs", seq);
    }
cs


bbs.xml

1
2
3
4
5
6
7
8
9
<select id="getBbs"
parameterType="java.lang.Integer"
resultType="kh.com.a.model.BbsDto">
    SELECT SEQ, ID, REF, STEP, DEPTH, TITLE, 
    CONTENT, WDATE, PARENT, DEL, READCOUNT
    FROM BBS
    WHERE SEQ=#{seq}
</select>
 
cs

들어온 seq값을 7행에 parameterType

결과값 반환은 resultType BbsDto 형태



bbswrite.jsp (뷰)



컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RequestMapping(value = "bbslist.do", method = { RequestMethod.GET , RequestMethod.POST})
    public String bbsList(Model model) throws Exception{        
        logger.info("KhBbsController bbslist" + new Date());
        
        
        
        List<BbsDto> list = khBbsService.getBbsList();
        logger.info("bbslist~~" + list);
        
        
        model.addAttribute("bbslist", list);
 
        return "bbslist.tiles";
    }
cs

1
2
3
4
5
6
7
8
@RequestMapping(value="bbswrite.do", method = {RequestMethod.GET,    RequestMethod.POST})
    public String bbswrite(Model model) {
        logger.info("Welcome SistMemberController bbswrite! "+ new Date());
        
        model.addAttribute("doc_title""글 쓰기");
        
        return "bbswrite.tiles";
    }    
cs


2행 : public String bbswrite(Model model) {


Model model  페이지만 이동하는 것이기때문에  model객체가 특별히 필요하지 않다


타일즈.xml

1
2
3
<definition name="bbswrite.tiles" extends="bbslist.tiles">
        <put-attribute name="main" value="/WEB-INF/views/bbs/bbswrite.jsp"/>
</definition>
cs



bbs.xml (디비접근)

1
2
3
4
5
6
7
<insert id="writeBbs" parameterType="kh.com.a.model.BbsDto">
    INSERT INTO BBS
    (SEQ,ID,REF,STEP,DEPTH,TITLE,CONTENT,WDATE,PARENT,DEL,READCOUNT) 
    VALUES(SEQ_BBS.nextval,#{id},
        (SELECT NVL(MAX(REF),0)+1 FROM BBS),
        0,0,#{title},#{content},SYSDATE,0,0,0)
</insert>
cs


dao

boolean writeBbs(BbsDto bbs) throws Exception;


daoImpl

1
2
3
4
5
6
@Override
    public boolean writeBbs(BbsDto bbs) throws Exception {
        sqlSession.insert(namespace+"writeBbs",bbs);    
        return true;
    }
 
cs


service

public boolean writeBbs(BbsDto bbs) throws Exception;


serviceImpl

@Override

public boolean writeBbs(BbsDto bbs) throws Exception {

return khBbsDao.writeBbs(bbs);

}


컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    @RequestMapping(value="bbswrite.do", method = {RequestMethod.GET,    RequestMethod.POST})
    public String bbswrite(Model model) {
        logger.info("Welcome SistMemberController bbswrite! "+ new Date());
        
        model.addAttribute("doc_title""글 쓰기");
        
        return "bbswrite.tiles";
    }
    
    
    @RequestMapping(value = "bbswriteAf.do", method = RequestMethod.POST)
    public String bbswriteAf(BbsDto bbs, Model model) throws Exception {
        if(bbs.getContent().equals(""|| bbs.getTitle().equals("")){
            return "bbswrite";
        }
        logger.info("Welcome SistMemberController bbswriteAf! "+ new Date());
        khBbsService.writeBbs(bbs);
        return "redirect:/bbslist.do";
    }
cs


12행 : 글쓰기 버튼을 눌렀을때,


19행 : bbswriteAf.do 에서 bbslist.do 로 이동했을때 redirect











컨트롤러

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package kh.com.a.controller;
 
import java.util.Date;
import java.util.List;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
import kh.com.a.model.BbsDto;
import kh.com.a.model.BbsParam;
import kh.com.a.service.KhBbsService;
 
@Controller
public class KhBbsController {
    private static final Logger logger = LoggerFactory.getLogger(KhBbsController.class);
    
    @Autowired
    KhBbsService khBbsService;
    
    @RequestMapping(value = "bbslist.do", method = { RequestMethod.GET , RequestMethod.POST})
    public String bbsList(Model model) throws Exception{        
        logger.info("KhBbsController bbslist" + new Date());
        
        
        
        List<BbsDto> list = khBbsService.getBbsList();
        
        model.addAttribute("doc_title""list");
        
/*
        // paging 처리
                int sn = param.getPageNumber();
                int start = (sn) * param.getRecordCountPerPage() + 1;
                int end = (sn+1) * param.getRecordCountPerPage();
        
                param.setStart(start);
                param.setEnd(end);
                
                // 글의 갯수 
                int totalRecordCount = khBbsService.getBbsCount(param);
                List<BbsDto> bbslist = khBbsService.getBbsPagingList(param);
                model.addAttribute("bbslist", bbslist);
                
                model.addAttribute("pageNumber", sn);
                model.addAttribute("pageCountPerScreen", 10);
                model.addAttribute("recordCountPerPage", param.getRecordCountPerPage());
                model.addAttribute("totalRecordCount", totalRecordCount);
                        
                return "bbslist.tiles";
*/
        return "bbslist.tiles";
    }
}
 
cs


20행: Logger출력

31행 : list불러오기



bbs xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="bbs">
 
 
<select id="getBbsList" resultType="kh.com.a.model.BbsDto">
    SELECT SEQ, ID, REF, STEP, DEPTH, 
        TITLE, CONTENT, WDATE, PARENT, DEL, READCOUNT
    FROM BBS
    ORDER BY REF DESC, STEP ASC
</select>
 
</mapper>
cs


dao

1
2
3
4
5
6
7
8
9
10
11
package kh.com.a.dao;
 
import java.util.List;
 
import kh.com.a.model.BbsDto;
 
public interface KhBbsDao {
 
    List<BbsDto> getBbsList() throws Exception;
}
 
cs


daoImpl

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
package kh.com.a.dao.Impl;
 
import java.util.List;
 
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
 
import kh.com.a.dao.KhBbsDao;
import kh.com.a.model.BbsDto;
 
@Repository
public class KhBbsDaoImpl implements KhBbsDao{
 
    @Autowired
    SqlSession sqlSession;
 
    private String namespace = "bbs.";
    
    @Override
    public List<BbsDto> getBbsList() throws Exception {
        List<BbsDto> list = sqlSession.selectList(namespace + "getBbsList"); 
                
        return list;
    }
    
}
 
cs


service

1
2
3
4
5
6
7
8
9
10
11
package kh.com.a.service;
 
import java.util.List;
 
import kh.com.a.model.BbsDto;
 
public interface KhBbsService {
 
    public List<BbsDto> getBbsList() throws Exception;
}
 
cs


serviceImpl

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
package kh.com.a.service.Impl;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import kh.com.a.dao.KhBbsDao;
import kh.com.a.model.BbsDto;
import kh.com.a.service.KhBbsService;
 
@Service
public class KhBbsServiceImpl implements KhBbsService {
    
    @Autowired
    KhBbsDao khBbsDao;
 
    @Override
    public List<BbsDto> getBbsList() throws Exception {
    
        return khBbsDao.getBbsList();
    }
    
    
}
 
cs





컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package kh.com.a.controller;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
 
import kh.com.a.service.KhBbsService;
 
@Controller
public class KhBbsController {
    private static final Logger logger = LoggerFactory.getLogger(KhBbsController.class);
    
    
    
}
 
cs

bbs.xml

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="bbs.xml">
 
</mapper>
 
cs


dao

1
2
3
4
5
6
package kh.com.a.dao;
 
public interface KhBbsDao {
 
}
 
cs


daoImpl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

package kh.com.a.dao.Impl;
 
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
 
import kh.com.a.dao.KhBbsDao;
 
@Repository
public class KhBbsDaoImpl implements KhBbsDao{
 
    @Autowired
    SqlSession sqlSession;

private String namespace = "KhBbs.";

    
}
 
cs


service

1
2
3
4
5
6
package kh.com.a.service;
 
public interface KhBbsService implements KhBbsService{
 
}
 
cs

serviceImpl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package kh.com.a.service.Impl;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import kh.com.a.dao.KhBbsDao;
 
@Service
public class KhBbsServiceImpl {
    
    @Autowired
    KhBbsDao khBbsDao;
    
    
}
 
cs


다시 컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package kh.com.a.controller;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
 
import kh.com.a.service.KhBbsService;
 
@Controller
public class KhBbsController {
    private static final Logger logger = LoggerFactory.getLogger(KhBbsController.class);
    
    @Autowired
    KhBbsService khBbsService;
    
    
}
cs




regiAF


xml 추가

1
2
<definition name="regi.tiles" template="/WEB-INF/views/login/regi.jsp">
</definition>
cs


컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
    @RequestMapping(value="regiAf.do"
            method={RequestMethod.GET, RequestMethod.POST})
    public String regiAf(MemberDto mem, Model model) throws Exception{
        logger.info("KhMemberController regiAf" + new Date());
        
        boolean b = khMemberService.addMember(mem);
        
        if(b) {
            return "login.tiles";
        }else {
            return "regi.tiles";
        }
    }
cs


Model model객체:  없어도 가능


service

1
2
3
4
5
6
7
8
9
10
11
12
package kh.com.a.service;
 
import kh.com.a.model.MemberDto;
 
public interface KhMemberService {
    
    public int idCheck(String id) throws Exception;
 
    public boolean addMember(MemberDto mem) throws Exception;
/*  public boolean addMember(MemberDto mem);                */
    
}
cs



d

serviceImpl

dao


daoImpl

1
2
3
4
5
6
@Override
    public boolean addMember(MemberDto mem) {
        
        int n = sqlSession.insert(namespace + "addMember", mem);
        return n>0?true:false;
    }
cs


sql.xml

1
2
3
4
<insert id="addMember" parameterType="kh.com.a.model.MemberDto">
    INSERT INTO MEMBER(ID, PWD, NAME, EMAIL, AUTH)
    VALUES(#{id}, #{pwd}, #{name}, #{email}, 3)
</insert>
cs




loginAF


컨트롤러

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RequestMapping(value="loginAf.do"
            method={RequestMethod.GET, RequestMethod.POST})
    public String loginAf(HttpServletRequest req, MemberDto mem) throws Exception {
        
        logger.info("KhMemberController loginAf" + new Date());
        
        MemberDto login = null;
        // login을 DB 확인
        login = khMemberService.login(mem);
        
        if(login != null && !login.getId().equals("")) {
            req.getSession().setAttribute("login", login);
            return "redirect:/bbslist.do";            
        }else {
            req.getSession().invalidate();
            return "login.tiles";
        //    return "forward:/login.do";
        }        
    }
cs


9행 : // login을 DB 확인

13행 : 서블릿(loginAF.do) 에서 서블릿 (bbslist.do) 로 이동할 때 redirect:/



service

serviceImpl


dao

daoImpl


sql.xml

1
2
3
4
5
6
<select id="login" parameterType="kh.com.a.model.MemberDto"
    resultType="kh.com.a.model.MemberDto">
    SELECT ID, NAME, EMAIL, AUTH
    FROM MEMBER
    WHERE ID=#{id} AND PWD=#{pwd}    
</select>
cs




'자바 과정 11회차 > spring mvc1 게시판' 카테고리의 다른 글

[MVC] bbsDetail  (0) 2019.02.06
[MVC] bbs write  (0) 2019.01.23
[MVC] ajax로 회원가입시 아이디 중복확인  (0) 2019.01.09
[MVC] 스프링 셋팅 autowired  (0) 2019.01.09
[MVC] 회원가입 제어  (0) 2019.01.09

+ Recent posts