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