Spring 기본설정(pom.xml, web.xml, encoding)
2019-04-19 00:00:00 +0000최소한의 Spring 기본 설정
프로젝트 기본 설정
- File - New - Spring Legacy Project - Spring MVC 프로젝트 선택
- Spring Verison 5.0.7로 변경
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
pom.xml 설정
- Java Version 변경
- 스프링 5.x 버전을 사용할 때 JDK 1.8을 사용하는 것이 가장 좋다
- maven-compiler-plugin 내용을 1.6에서 1.8로 수정(version도 바꿨다)
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
- lombok 설정
- lombok 공식 사이트
- lombok 공식 사이트에서 lombok 다운로드하여 설치한 후 pom.xml에 설정 추가
<!-- lombok -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<scope>provided</scope>
</dependency>
- junit 설정 추가
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
한글 설정
- web.xml에 한글 인코딩을 하도록 utf-8 filter를 설정한다
<!-- 한글 인코딩 설정 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- tomcat server.xml에서 Connector에 Encoding 설정을 추가한다
<Connector connectionTimeout="20000" port="60000" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
- View단에서도 Encoding 설정을 추가한다
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
</body>
</html>
Vue.js computed, methods, watch
2019-04-15 00:00:00 +0000Vue.js computed, methods, watch
computed 속성
- 템플릿 안에 간단한 코드를 넣는 것이 좋다
- 20 이 소스는 복잡하다. 간단하게 표현할 수 있는 Computed 속성을 사용해야 한다
- computed 속성에 함수를 정의한 후 안에 호출하면 된다
<div id="test">
</body>
<script>
new Vue({
el: '#test',
computed: {
checkEvenNumber: function(){
return 20 % 2 == 0 ? '짝수' : '홀수';
}
}
})
</script>
- computed는 캐싱을 사용하여 저장된 곳에 변경사항이 있을 때만 함수를 실행.
- method는 렌더링을 다시 할 때 마다 함수를 실행
vue.js 메소드
- method 속성에 사용자 정의 함수를 선언하는 것
<div id="test">
<h1> 더하기 는 입니다</h>
<h1> 빼기 는 입니다</h>
</div>
</div>
</body>
<script>
var memberData = {
firstNum : 10,
secondNum : 20
};
var memberMethod = {
addNum : function(num1, num2){
return num1 + num2;
},
MinusNum : function(num1, num2){
return num1 - num2;
}
}
var option = {
el : '#test',
data : memberData,
methods : memberMethod
};
var vue = new Vue({
el : '#test',
data : memberData,
methods : memberMethod
});
watch
- 변경을 감시하고 변경됨에 따라 실행할 동작을 정의
- computed는 호출한 함수를 실행하는 것이고 watch는 어떤 동작을 감시하여 변경될 때 동작을 실행함(트리거)
- 멤버변수를 더하는 것은 행위를 실행하는 함수이므로 computed를 사용한다
- 더한 결과값이 바뀔 때마다 추가적인 동작을 하고 싶다면 watch를 사용한다
<div id="test">
제 이름은 입니다 <br>
<input v-model="myName">
</div>
</body>
<script>
var vm = new Vue({
el: '#test',
data: {
myName: 'wwwwww',
text: '변경 전입니다'
},
watch: {
myName: function (val) {
text = '이름이'+this.myName+'으로 변경되었습니다';
}
}
})
</script>
javascript onkeyup
2019-04-15 00:00:00 +0000javascript onkeyup
onkeyup
- 보통 사용자가 로그인을 하기 위해서 id나 password를 적은 후 엔터키를 누르면 로그인이 된다
- 키를 눌렀는지 여부는 onkeyup 이벤트를 호출하면 알 수 있다.
- onkeyup 이벤트는 key를 누른 후 땠을 때 호출된다.
- Enterkey는 window.event.keyCode 값이 13이다
onkeydown Example
- 아래 소스를 실행하면 input text 상자안에서 enter 키를 입력할 때마다 console 창에 글자가 출력된다
<script>
function requestLogin(){
if(13 == window.event.keyCode){
console.log('enterKey누름');
}
}
</script>
</head>
<body>
<input onkeyup="requestLogin();" type="text" value="" />
Maria DB Incorrect string value Error
2019-04-12 00:00:00 +0000상황
- 회원가입 구현 중 이름에 영어를 넣으면 성공적으로 회원가입이 되지만 한글을 넣으면 회원가입 실패가 뜸.
- 서버에서 아래 에러 발생
- Incorrect string value: ‘\xED\x85\x8C\xEC\x8A\xA4…
[ERROR][][2019-04-12][16:35:46.145] c.a.d.m.d.controller.UserController - [exceptionHandler] [org.springframework.dao.DataIntegrityViolationException] [999] [UNKNOWN_ERROR] [
Error updating database. Cause: java.sql.SQLDataException: (conn:19) Incorrect string value: '\xED\x85\x8C\xEC\x8A\xA4...' for column 'NAME' at row 1
Query is: INSERT INTO user
(
user_seq
, id
, password
, name
)
VALUES
(
?
,?
,?
,?
), parameters [<null>,'test','MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY=','테스트']
The error may involve user.createUserVO-Inline
The error occurred while setting parameters
SQL: INSERT INTO user ( user_seq , id , password , name ) VALUES ( ? ,? ,? ,? )
Cause: java.sql.SQLDataException: (conn:19) Incorrect string value: '\xED\x85\x8C\xEC\x8A\xA4...' for column 'NAME' at row 1
해결방법
- 테이블 Charset이 utf8이 아니기 때문에 변환이 실패하여 한글을 넣지 못하는 것으로 추측
- 테이블 생성 시 기본 CHARSET을 utf8로 설정해준다
- 한글 데이터가 잘 들어가는 것을 확인
CREATE TABLE `user` (
`USER_SEQ` bigint(20) NOT NULL AUTO_INCREMENT,
`ID` varchar(20) NOT NULL,
`password` varchar(50) DEFAULT NULL,
`NAME` varchar(30) DEFAULT '',
PRIMARY KEY (`USER_SEQ`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
javascript 암호화(md5, base64)
2019-04-11 00:00:00 +0000암호화(MD5, Base64)
Hash(MD5)
- Hash함수는 text를 고정길이의 hash값으로 바꿔주는 역활을 한다.
- 같은 입력에 대해 같은 값이 나온다.
- 암호화 알고리즘이 공개되어 있어서 보안이 취약하다. 그렇기 때문에 Hash 후 다시 암호화를 해야한다.
Encryption(base64)
- 정보의 형태나 형식을 보안을 위해 다른 형태로 변경하는 것.
- Base64란 Binary Date를 Text로 바꾸는 Encoding이다.
- 둘의 차이는 Hash는 암호화 기능만 있고, Encryption은 암호화, 복호화 기능을 가지고 있다.
Javascript Example
- CryptoJS 라이브러리
- CryptoJS.MD5 함수로 쉽게 MD5, Base64를 사용할 수 있다
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script>
$(document).ready(function(){
// encode
var hash = CryptoJS.MD5("hello");
var key = CryptoJS.enc.Utf8.parse(hash); // hex로 변환
var base64 = CryptoJS.enc.Base64.stringify(key); // hex를 원래 포멧으로 변환
console.log("hash:"+hash);
console.log("base64:"+base64);
// decrypt
var decrypt = CryptoJS.enc.Base64.parse(base64);
var hashData = decrypt.toString(CryptoJS.enc.Utf8);
console.log("decrypt hash:", hashData);
});
</script>
</head>
</html>
Posts
Interceptor(인터셉터)
Android Studio Install
계층형 게시판
VirtualBox Ubuntu 18.04.2 LTS
TransactionAwareDataSourceProxy Error
Java Coding Conventions
Java Long과 long의 차이
Mybatis 객체 안에 객체 매핑
JavaConfig mariadb 연결
DataTable
관리자 페이지
MappingJackson2JsonView
Spring Javaconfig
게시판 만들기-제품 등록
게시판 만들기-제품 페이지 제작
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
footer 하단에 고정시키기
bootstrap4 사용법
Spring 데이터 검증 @Valid, BindingResult
brackets 실시간 미리보기
Spring 기본설정(pom.xml, web.xml, encoding)
Vue.js computed, methods, watch
javascript onkeyup
Maria DB Incorrect string value Error
javascript 암호화(md5, base64)
Vue.js template
Vue.js 소개
Nexacro 설명
ControllerAdvice
Batch
html 페이지 로딩 순서
소수구하기(PrimeNumber)
최소공배수,최대공약수
Stream
Lambda(람다식)
inner class(내부 클래스)
final 키워드
file upload
파이썬 빅 데이터 K-평균(K-means)
아나콘다(Anaconda), 주피터 개발환경 세팅
텐서플로우(TensorFlow) 아키텍쳐 및 Session
텐서플로우(TensorFlow)상수, 변수, 함수
머신러닝 기초
한글 리스트 오름차순, 내림차순
연속된 글자의 갯수 출력
java spring5 프로젝트 설정
restController
spring 세팅 및 기본설정
mybatis trim
jquery datepicker
ajax로 데이터 전달/응답 받는법
mybatis error
mybatis 게시판 만들기 순서
Java Jsp Mybatis Dynamic Query
mybatis
git 소개
node.js 개발환경 구축
node.js 기본 내장 모듈
node.js의 전역 객체
node.js http module
node.js event
jdbc
자바빈
jsp, servlet 정리
java null object pattern
다음지도 key 등록(kakao map)
공공 데이터 open api
facebook login api
sourcetree 사용법
JavaScript event3
JavaScript jquery
JavaScript dom
JavaScript ajax
JavaScript 이벤트2
JavaScript 캡슐화
JavaScript Array,내장객체
JavaScript var
JavaScript 객체,생성자
JavaScript 함수,클로저
JavaScript Event
javascript eclipse 자동완성(with tern)
CSS position
HTML5,CSS 선택자
자바 시간 측정
git,eclipse 연동
HTML 기초 정리
Eclipse Web 환경세팅
피보나치의 수
Oracle 반복문,커서,예외,저장 서브프로그램
Oracle PL/SQL
Oracle 다중쿼리(Multiple row query)
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
Oracle JOIN 정리
Oracle DDL, DML 정리
Oracle 문자열 함수 정리
Oracle 숫자,날짜,자료형 변환 함수 정리
Oracle 제약조건 정리
Oracle 기초 쿼리 정리
문제2775
DFS
junit
json
algorithmus basic
circular queue(원형큐)
binary search(이진탐색)
port forwarding(포트포워딩)
kakao chatbot(카카오 챗봇)
java io
sort comparable, comparator
Unresolved compilation problem
ArrayList, HashMap
Regular(정규표현식)
Enum Class
String Function
refactoring 이란(상수,제어플래그,assert)
reference,abstract 정리
FileNotFoundException Solve
static
Thread Synchronization(스레드동기화,원자성)
Java Exception(예외처리)
Java 생성자, this, super
roomnum
BeeHouse
Git Reset, Revert
Git Log
Array
stack
pyramid draw
Star Draw(별 그리기4)
Star Draw(별 그리기3)
Star Draw(별 그리기2)
Star Draw(별 그리기1)
Loop(While, For)
자바 데이터 타입, 데이터 연산
시계방향 달팽이 그리기
정수값의 짝수,홀수 갯수 구하기
java, Scanner 정리
draw dog
subscribe via RSS