server.xml 파일에서 Connector 부분에서 포트번호를 바꿀 수 있고 URIEncoding을 통해 한글 인코딩을 설정해야한다.

설치 시 UTF-8로 문자셋을 설정해주어야 한글이 깨지지 않는다. 

Use UTF8 as default server's character set 을 눌러주자.

 

Enable networking 을 체크해주어야 다른 컴퓨터에서도 접근이 가능하다.

이후 윈도우 시작탭에서 MySQL Client (MariaDB) 라고 생기므로 누르고 들어가면된다.

 

Show database;
SELECT database();

 

CREATE database mydb;
USE mydb;

CREATE TABLE bbs (

);

DESC bbs;

show databases;
-- use (디비이름); 후
show tables;

$(document.reportForm).serialize() 를 이용하면 알아서 폼데이터를 "문자=값1&문자=값2" 로 바꿔준다.

 

modal을 숨기고싶으면 $("모달객체").modal("hide"); 를 이용해서 숨겨야한다.

아주 기본적인 것인데, 설마하면 발견하는 에러. 객체 생성을 하지 않았을 때이다.

@Autowired 를 통해 객체생성을 Spring 에게 맡겨야 함.

게시판에서 리스트를 불러올 때 자주 보는 에러

자주 보는데 정리를 안해두니까 몇 번 씩 계속 봐도 이게 왜그러지? 싶어서 정리함.

 

리스트를 불러올 때 Oracle SQL query로 가져오는데, 

계속 start와 end가 안먹고 0과 -9로 나온다.

DataCount를 못가져왔을 때 발생하는 에러이다.

저기 dao.selectOne~ 를 result로 받아야하는데 안받았더니 발생했던 오류였다.

 

 

 

전역변수를 제일 바깥에 var run = false;로 주고 AJAX를 보내려는 부분 안쪽에서 비교후에 했더니 중복요청을 방지할 수 있었다.

한번만 갔다오면 되는데, 왜 여러번 가는 것인지...흠.. 문제인부분을 알았고 해결도 했는데 왜 여러번 갔었는지는 모르겠다..ㅠㅠㅠ 흠...왜죠? 

AOP (Aspect Oriented Programming) 란?

관점 지향 프로그래밍

핵심 비지니스 로직과 공통 모듈을 분리함으로써 개발자가 좀 더 비지니스 로직에만 집중해서 처리할 수 있는 방법을 제공 한다.

공통 모듈을 적용해서 발생하는 의존 관계의 복잡성과 코드 중복을 해소해 주는 프로그래밍 기법이다.

즉, 공통 모듈(로깅, 보안인증, 트랜잭션 등)을 별도로 작성한 후 코드밖에서 비지니스 로직 사이에 삽입하는 것이 AOP 기능을 사용해 개발한 것이라고 볼 수 있다.

AOP는 OOP(Object Oriented Programming)를 대신하는 새로운 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있도록 도와주는 개념이다.

 

AOP 특징

Spring은 프록시(Proxy) 기반 AOP를 지원한다.

- Spring은 타겟(target) 객체에 대한 프록시를 만들어 제공한다.

- 타겟을 감사는 프록시는 실행시간(Runtime)에 생성된다.

- 프록시는 Advice를 타겟 객체에 적용하면서 생성되는 객체이다.

 

프록시(Proxy)가 호출을 가로챈다(intercept)

- 프록시는 타겟 객체에 대한 호출을 가로챈 다음 Advice의 부가기능 로직을 수행하고 난 후에 타겟의 핵심기능 로직을 호출한다.(전 처리 Advice)

- 타겟의 핵심기능 로직 메소드를 호출한 후에 공통 기능(Advice)을 수행한다. (후 처리 Advice)

 

Spring AOP는 메소드 Join Point만 기원한다.

- Spring은 동적 프록시를 기반으로 AOP를 구현하므로 메서드 Join Point 만 지원한다.

- 핵심 기능(타겟)의 메소드가 호출되는 런타임 시점에만 공통 기능(Advice)을 적용할 수 있다.

- AspectJ 같은 고급 AOP 프레임워크를 사용하면 객체의 생성, 필드 값의 조회와 조작, static 메소드 호출 및 초기화 등의 다양한 작업에 공통기능을 적용 할 수 있다. 

import java.util.Random;

public void generatePwd() throws Exception {
		// 10자리 임시 패스워드 생성
		StringBuilder sb = new StringBuilder();
		Random rd = new Random();
		String s = "~!@#$%^&*+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
		for (int i = 0; i < 10; i++) {
			int n = rd.nextInt(s.length());
			sb.append(s.substring(n, n+1));
		}

		System.out.println(sb.toString()); // 생성된 10자리 임시 패스워드 확인용
		
	}

Random 클래스를 임포트해서 문자열 s에서 무작위로 뽑은 한 자리를 스트링 빌더객체 sb에 10번 붙여주고 마지막에 스트링빌더에 있던 것을 toString() 메소드를 이용해서 변환시켜준다.

+ Recent posts