'개발'에 해당되는 글 26건

  1. 2018.05.25 admin table
  2. 2018.05.24 여러값을 배열로 받아서 처리
  3. 2018.05.21 MemberDTO
  4. 2018.05.21 spring 파일 업로드
  5. 2018.05.21 Spring 흐름
  6. 2018.04.03 부모 추상 인터페이스
  7. 2018.03.27 Garbage Collector
  8. 2018.03.24 TDD와 BDD 차이점
  9. 2018.03.24 NoSQL
  10. 2018.02.03 Spring 1

2018. 5. 25. 06:40 개발

admin table

-- 보안상의 이유로 관리자 table 따로 생성

create table admin (

userid varchar2(50) not null,

paawd varchar2(50) not null,

name varchar2(50) not null,

email varchar2(100),

join_date date default sysdate,

primary key(userid)

);

'개발' 카테고리의 다른 글

spring 시큐리티  (0) 2018.05.31
코드로 spring  (0) 2018.05.27
여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Posted by 커다란꼬꼬마

@RequestMapping("update.do")

public String update(@RequestParam int[] amount,

  @RequestParam int[] product_id, HttpSession session) {

  String userid = (String)session.getAttribute("userid");

  if(userid != null) {

    for(int i=0; i < product_id.length; i++) {

      CartDTO dto = new CartDTO();

      dto.setUserid(userid);

      dto.setProduct_id(product_id[i]);

      dto.setAmount(amount[i]);

      cartService.modifyCart(dto);

    }

  }

  return "redirect:/shop/cart/list.do";

}



스프링 디버깅

1개의 프로젝트만 open

clean

- Project - clean : 소스 코드 강제 컴파일


Servers

- clean 서버 클리어

- clean Tomcat work di~ 톰캣 작업 디렉토리


maven - update project



'개발' 카테고리의 다른 글

코드로 spring  (0) 2018.05.27
admin table  (0) 2018.05.25
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
Posted by 커다란꼬꼬마

2018. 5. 21. 23:40 개발

MemberDTO

public class MemberDTO {

private String userid;

private String passwd;

private String name;

private String email;

private Date join_date;

}


public interface MemberDAO {

public boolean loginCheck(MemberDTO dto);

public MemberDTO viewMember(String userid);

}


public interface MemberService {

public boolean loginCheck(MemberDTO dto, HttpSession session);

public void logout(HttpSession session);

public MemberDTO viewMember(String userid); 

}




create table cart (

cart_id number not null primary key,

userid varchar2(50) not null,

product_id number not null,

amount number default 0

);


alter table cart add constraint cart_userid_fk

foreign key(userid) references member(userid);


alter table cart add constraint cart_productid_fk

foreign key(product_id) references product(product_id);



public class CartDTO {

private int cart_id;

private String userid;

private String name;

private int product_id;

private String product_name;

private int price;

private int money;

private int amount;

}


public interface CartDAO {

public List<CartDTO> cartMoney();

public void insert(CartDTO dto);

public List<CartDTO> listCart(String userid);

public void delete(int cart_id);

public void deleteAll(String userid);

public void update(int cart_id);

public int sumMoney(String userid);

// 장바구니에 이미 상품이 담겼는지 확인

public int countCart(String userid, int product_id);

// 장바구니 수량 변경

public void updateCart(CartDTO dto);

public void modifyCart(CartDTO dto);

}


select cart_id, m.userid, m.name, p.product_id, product_name, amount, price*amount money

from member m, cart c, product product_id

where m.userid=c.userid and p.product_id=c.product_id

and m.userid = #{userid}

'개발' 카테고리의 다른 글

admin table  (0) 2018.05.25
여러값을 배열로 받아서 처리  (0) 2018.05.24
spring 파일 업로드  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
Posted by 커다란꼬꼬마

2018. 5. 21. 16:02 개발

spring 파일 업로드

<!-- 파일 업로드 관련 라이브러리 -->

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.3</version>

</dependency>

<!-- 이미지 썸네일을 만들어주는 라이브러리 -->

<dependency>

<groupId>org.imgscalr</groupId>

<artifactId>imgscalr-lib</artifactId>

<version>4.2</version>

</dependency>



상품

public class ProductDTO {

private int productId;

private String productName;

private int price;

private String description;

private String pictureUrl;

private MultipartFile file1; // 첨부 파일

}


public interface ProductDAO {

List<ProductDTO> listProduct();

ProductDTO detailProduct(int productId);

void updateProduct(ProductDTO dto);

void deleteProduct(int productId);

void insertProduct(ProductDTO dto);

String fileInfo(int productId);

}


<td><fmt:formatNumber value="${row.price}" pattern="#,###" /></td>


<select name="amount">

<c:forEach begin="1" end="10" var="i">

<option value="${i}">${i}</option>

</c:forEach>

</select>

'개발' 카테고리의 다른 글

여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
Garbage Collector  (0) 2018.03.27
Posted by 커다란꼬꼬마

2018. 5. 21. 12:19 개발

Spring 흐름

MemberController -> MemberService -> MemberDAO -> SqlSession -> memberMapper.xml


@Inject

MemberDAO memberDao;


MemberDAO memberDao = new MemberDAOImpl();


위의 두 코드가 같은 의미


public class MemberController {

@Inject

MemberService memberService;

}


// @ModelAttribute : 폼에서 전달된 값을 저장하는 객체

@RequestMapping("member/insert.do")

public String insert(@ModelAttribute MemberDTO dto) {

return "redirect:/member/list.do";

}


@ModelAttribute 생략가능, insert.jsp에서 폼에서 넣긴 값을 받아서 넘기는 것.


public String insert(@RequestParam String userid,

@RequestParam String passwd) {

return "redirect:/member/list.do";

}


// 이런식으로도 사용가능 하지만 @ModelAttribute가 코드의 양을 줄일수 있어


insert.do -> MemberController -> MemberService -> MemberServiceImpl 

-> MemberDAO -> MemberDAOImpl -> memberMapper.xml


service는 계좌이체, 상품구매, 결제 등 제공되는 서비스의 단위


@Transactional

void method(){

memberDao.insertMember(dto);

memberDao.deleteMemberMember(dto.getUserid());

}

// 이렇게 되면 deleteMemberMember하다가 오류가 뜨면 전체가 rollback


<td><a href="${path}/member/view.do?userid=${row.userid}">${row.name}</a></td>


<input name="userid" value="${dto.userid}" readonly>


비밀번호 체크 sql
select count(*) from member
where userid = #{userid} and passwd = #{passwd}

컨트롤러 : @Controller, @RestController
서비스 : @Service 
모델(dao) : @Repository

dto -> json opensource lib
https://www.lesstif.com/pages/viewpage.action?pageId=24445183

servlet-conn
<resources location="/WEB-INF/views/include" mapping="/include/**"></resources>
<resources location="/WEB-INF/views/images" mapping="/images/**"></resources>

base-package = "com.example.spring02"
com.example.spring02 패키지 포함
base-package = "com.example.spring02.*"
com.example.spring02 패키지 제외

com.example.spring02.HomeController.java
com.example.spring02.memo.HomeController.java


<td><fmt:formatDate value="${row.post_date}" pattern="yyyy-MM-dd HH:mm:ss"/></td>


restful 주소 처리시
@RequestMapping("view/{idx}")
public ModelAndView view(@PathVariable int idx, ModelAndView mav) {
mav.setViewName("memo/view");
mav.addObject("dto", memoService.memo_view(idx));
return mav;
}



public interface MemoService {

public List<MemoDTO> list();

public void insert(MemoDTO dto);

public MemoDTO memo_view(int idx);

public void update(MemoDTO dto);

public void delete(int idx);

}

'개발' 카테고리의 다른 글

MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
Garbage Collector  (0) 2018.03.27
TDD와 BDD 차이점  (0) 2018.03.24
Posted by 커다란꼬꼬마

 부모

추상 

인터페이스 

모든걸 물려받고 그대로 사용

* Private 제외 

new 선언X 클래스

일반 메소드 사용

추상 메소드 선언 -> 자식에서 반드시 구현

모든 변수는 상수다.(따라서 대문자)

추상 메소드 만을 갖는다.

일반 메소드는 구현 할 수 없었다.


자식 클래스 -> 그대로 쓸 수 있는게 없다. (JDK 1.7) ->(JDK 1.8)에서 디폴트(일반메소드)/스태틱이 추가됨. 



인터페이스는 자바에서 Callback으로도 사용되기도 한다.


Callback

  - Ajax

  - 프로그래밍에서 콜백(callback)은 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.


콜백 패턴

  - 호출자가 피호출자를 부르는 것이 아니라 피호출자가 호출자를 부름.


function1(fun2()) {

  

}

// function1 이 호출자, fun2가 피호출자.



'개발' 카테고리의 다른 글

spring 파일 업로드  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
Garbage Collector  (0) 2018.03.27
TDD와 BDD 차이점  (0) 2018.03.24
NoSQL  (0) 2018.03.24
Posted by 커다란꼬꼬마

2018. 3. 27. 09:15 개발

Garbage Collector

Garbage Collector


http://d2.naver.com/helloworld/1329


http://wanzargen.tistory.com/15


http://12bme.tistory.com/57


Java - SE - 기본, 요즘은 SE로 가고 있다. 

- EE - 기업, 서블릿 lib 포함, -> Sun에서 지원 중단, 아파치 쪽에서 가져갈 듯.


JDK  - JVM + lib + 컴파일러(개발환경) -> 개발자들이 주로 사용.

     - 서버사이드에는 JDK를 깔지 않는다.(exe파일로 인한 해커들의 공격떄문에) 왜?


JRE  - JVM + lib  -> 실행환경


xx.java -> (use javac) -> class -> java -> jvm -> 윈도우, 리눅스


JVM 구조

  - 클래스, 메소드, static 영역 -> 메타데이터

  - 스택 -> 실행되는 메소드

  - 힙 -> 인스턴스


OOM -> out of memory -> XML 옵션의 줘서 설정가능.



GC - 대체적으로 잘 작동하지는 않아.

영역1 - Eden, Survivor 1, 2

영역2 - OLD

영역3 - PEM


처음에 무조건 Eden으로 올린다. -> 사이즈가 풀이 나면 에덴의 것을 Survivor 1 으로 옮기고 에덴을 비워줌.

Survivor 1이 차면 2로 옮기고 비워줌. -> 똑같이, 차면 OLD.

OLD가 차면 Major GC 가 작동(분단위, 시스템 프로세스가 정지되는 문제.), 앞쪽에서는 마이너 GC가 작동.


OLD를 너무 크게작으면 멈추고 넘기는 시간이 오래걸리는 JVM의 문제.

'개발' 카테고리의 다른 글

Spring 흐름  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
TDD와 BDD 차이점  (0) 2018.03.24
NoSQL  (0) 2018.03.24
Spring 1  (0) 2018.02.03
Posted by 커다란꼬꼬마

2018. 3. 24. 11:31 개발

TDD와 BDD 차이점

http://blog.aliencube.org/ko/2014/04/02/differences-between-bdd-and-tdd/


https://medium.com/@sryu99/%EB%8B%A8%EC%9C%84-%ED%85%8C%EC%8A%A4%ED%8A%B8-tdd-bdd%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-3d25fab5ccb2

'개발' 카테고리의 다른 글

부모 추상 인터페이스  (0) 2018.04.03
Garbage Collector  (0) 2018.03.27
NoSQL  (0) 2018.03.24
Spring 1  (0) 2018.02.03
Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Posted by 커다란꼬꼬마

2018. 3. 24. 10:37 개발

NoSQL

NoSQL(Not only SQL)

  - 관계형 데이터 모델과 SQL 문을 사용하지 않는 db 시스템 혹은 데이터 저장소. 기존 RDBMS가 분산환경에 적합하지 않기 때문에 이를 극복하기 위해 고안됨. row 단위가 아닌 집합형태로 저장됨. 또한, Sharding(샤딩)이라는 기능이 있어서 데이터를 여러 서버에 분산하여 저장함. 기존 RDBMS처럼 완벽한 데이터 무결성을 제공하지는 않음. 기업의 핵심 데이터는 RDBMS를 이용하고 핵심은 아니지만 데이터를 보관하고 처리해야하는 경우 Nosql이용.

  MongoDB, HBase 등 다양한 솔루션이 있음.

'개발' 카테고리의 다른 글

Garbage Collector  (0) 2018.03.27
TDD와 BDD 차이점  (0) 2018.03.24
Spring 1  (0) 2018.02.03
Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
Posted by 커다란꼬꼬마

2018. 2. 3. 23:14 개발

Spring 1

스프링의 주요 특징

  - POJO(Plain Old Java Object) 기반의 구성 : 별도의 API가 필요하지 않은 일반적인 자바 코드를 이용하여 개발 가능

  - 의존성 주입(DI)을 통한 객체간의 관계 구성

  - AOP(Aspect Oriented Programming) 지원 : 반복적인 코드를 줄이고 개발자가 비즈니스 로직에만 집중할 수 있도록 지원함.

  - 편리한 MVC 구조

  - WAS에 종속적이지 않은 개발 환경


1. IoC(Inversion of Control, 제어의 역전) - 객체에 대한 제어권

  - 기존에는 개발자에게 제어권이 있었음(new 연산자)

  - 객체의 제어권을 스프링에게 넘김

  - 인스턴스의 라이프 사이클(생성~소멸)을 개발자가 아닌 스프링 프레임웍이 담당


2. DI(Dependency Injection, 의존관계 주입)

  - 객체 간의 의존성을 개발자가 설정하는 것이 아닌 스프링 컨테이너가 주입시켜주는 기능

  - 객체를 쉽게 확장하고 재사용할 수 있음

  

'개발' 카테고리의 다른 글

TDD와 BDD 차이점  (0) 2018.03.24
NoSQL  (0) 2018.03.24
Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
Posted by 커다란꼬꼬마
이전버튼 1 2 3 이전버튼

블로그 이미지
커다란꼬꼬마

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
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

최근에 올라온 글

최근에 달린 댓글

글 보관함