java spring5 프로젝트 설정
2019-01-29 00:00:00 +0000Spring 프로젝트 생성
- 1.8 jdk 설치
- Java EE 사용 시 Convert Maven, Controller, View 생성 등을 해야한다. 하지만 STS Spring 프로젝트를 생성하면 기본 세팅이 되어있다
- 프로젝트 창 - Spring Regacy Project - Spring MVC Project 선택
프로젝트 창 설명
- src/main/java : service, controller, 도메인 등 대부분의 자바 코드가 들어가 잇다
- src/main/resources : xml 같은 설정파일들이 있다. log4j가 들어가 있다
- src/test/java, resources : 테스트 클래스를 만드는 곳
- src/resource : 리소스 파일이 들어가있음
- src/main/webapp/WEB-INF/spring/appServelt : 디스패쳐에 의해서 생성되는 컨테이너 서블렛. mvc 설정
- src/main/webapp/WEB-INF/spring/root-context : 리스너를 이용해서 스프링 컨테이너를 생성할 수 있다. db, mybatis, service 등의mvc 외 설정
- src/main/webapp/WEB-INF/web.xml: 디스패쳐와 리스너는 부모관계.리스너에서 만들어진 것도 디스패쳐에서 사용할 수 있다.
LIB 버전 설정
- jdk 버전 1.6 -> 1.8 로 변경
<java-version>1.8</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>
- junit 버전 1.6 -> 1.8 로 변경
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
- maven compile 1.6 -> 1.8 버전 변경
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
- log4j 라이브러리 추가
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
- pom.xml lib 추가 완료 후 프로젝트 오른쪽 클릭 - maven - update project 해당 프로젝트 업데이트
Lombok 라이브러리 설치
- setter, getter, toString() 생성자를 자동으로 만들어주는 라이브러리
- https://projectlombok.org/download
- cmd 창 열고 lib 파일 다운로드 받은 곳으로 이동
- java -jar lombok.jar
- specify locatic 클릭
- sts spring 위치로 이동. sts 실행파일 선택 그 후 install update 클릭
- 이클립스 재실행
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
- 사용법
- org.zerock.sample 패키지 생성
- @Data 어노테이션은 lombok 라이브러리에 포함된 어노테이션
- @Setter(onMethod_ = {@Autowired}) 어노테이션을 사용해서 자동으로 set,get 메서드를 만들어준다
- @ContextConfiguration(“file:src/main/webapp/WEB-INF/spring/root-context.xml”)
- 설정파일을 지정해주는 어노테이션. ContextConfiguration 괄호 안에 설정파일 경로를 적어준다.
@Component @Data public class Restaurant { @Setter(onMethod_ = {@Autowired}) private Chef chef; }
커넥션 풀 설정
- jdbc는 원래 톰캣 lib에 있었기 때문에 lib를 가져온다
- 히카리 lib 가져와야함
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
- db 접속
<!-- hikari lib 이용해서 db 접속 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="username" value="kosta192"/>
<property name="password" value="1234"/>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 이 패키지를 읽어 들이겠다 -->
<mybatis-spring:scan base-package="org.zerock.mapper"/>
restController
2019-01-29 00:00:00 +0000RestController 정리
@RestController
- Controller 어노테이션은 view를 반환다
- RestController 어노테이션은 return 시 Json, xml 등 객체를 반환한다
json lib 추가
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
Member.java
- model
package kosta.model; public class Member { private String name; private String email; public Member(){} public Member(String name, String email) { super(); this.name = name; this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Member [name=" + name + ", email=" + email + "]"; } }
index.html
- index.html 접속 시 client url로 이동한다
JsonController.java
- JsonController에서 client view를 전달한다. 매핑에 의해서 view/client.jsp 로 치환한다
@Controller public class JsonController { @RequestMapping("/client") public String client(){ return "client"; } }
client.jsp
- client.jsp에서 페이지 로드와 동시에 $(function())함수가 호출된다
- 이 때 getJSON 함수로 spring_json url로 이동을 요청한다
- ajax 결과 json 데이터를 출력한다
ListController.java
- ListController에 @RestController가 선언되어있다. 그래서 모든 함수의 return 값은 view가 아닌 데이터이다
@RestController
public class ListController {
@RequestMapping("spring_json")
public List<Member> spring_json(){
List<Member> list = new ArrayList<>();
list.add(new Member("백종원", "aa@aa.com"));
list.add(new Member("조보아", "bb@bb.com"));
return list;
}
}
spring 세팅 및 기본설정
2019-01-28 00:00:00 +0000Spring 프로젝트 만들기 및 기본예제
Spring 기본 세팅
-
- Eclipse 말고 STS 사용
- Dynamic project 생성(xml 생성)
- 프로젝트 오른쪽마우스 클릭 - Configure - Convert to Maven
pom.xml
- 사용하는 lib 추가
- maven lib 는 https://mvnrepository.com/ 에서 검색
- lib의 버전은 맞춰줘야 한다. 예를 들어 spring 버전이 4.3.3이면 같은 버전으로 맞춰주는것이 좋다
- lib는 감싸는 build 태그 다음에 dependencies 태그를 추가한 후 그 안에서 lib 사용을 선언한다
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
</dependencies>
springapp-servlet
- 스프링의 장점인 di, aop, transaction 등을 쉽게 사용할 수 있게 만들어주는 spring bean configuration file
- context:component-scan 함으로써 base-package에 있는 controller를 전부 생성한다
- default-servlet-handler를 선언하면 @RequestMapping 어노테이션과 요청을 매칭시켜준다. 만약 mvc 선언이 되어있지 않다면 404 에러가 뜬다
- InternalResourceViewResolver는 url의 위치와 타입, 우선순위를 정할 수 있다
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:annotation-config/>
<context:component-scan base-package="kosta"/>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<!-- <bean id="JsonController" class="kosta.controller.JsonController"></bean> -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/view/"/>
<property name="suffix" value=".jsp"/>
<property name="order" value="1"/>
</bean>
</beans>
web.xml
- Dispatcher Servlet은 client의 요청을 받고 Handler Mapping, Controller, ViewResolver,View 에 요청 및 응답을 받은 후 다시 client로 전달하는 역활을 한다. 아래와 같이 servlet-class 태그로 정의할 수 있다
- url 패턴을 정의할 수 있다. 아래 예제에서는 ‘/’로 오는 모든 요청을 처리한다
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>test</display-name>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
index.html
- index.html 호출 시 client라는 url 을 요청
- @RequestMapping 에 /client 라는 매핑이 있다면 매핑되는 함수를 호출하고 없다면 404 에러가 뜬다
Controller.java
- @Controller 어노테이션을 붙이면 웹 요청을 처리하는 컨트롤러라는 의미
- @Controller 어노테이션을 붙여야 component-scan 했을 때 bean이 생성된다
- “client”를 return 하는데 이는 view/client.jsp 를 호출한다는 의미이다 ( prefix, suffix 설정)
@Controller
public class JsonController {
@RequestMapping("/client")
public String client(){
return "client";
}
}
mybatis trim
2019-01-19 00:00:00 +0000mybatis trim
여러개의 질의어 사용
- if 조건을 사용해서 쿼리문을 동적으로 만들면 어느 데이터가 마지막에 붙는지 모르므로 콤마(,)가 붙어서 에러가 발생한다
- 이 때 trim을 사용해서 마지막 붙은 조건의 콤마를 삭제할 수 있다
- 질의문을 < trim > 으로 감싸준다
- suffixOverrides=”,” 을 사용하면 마지막 조건의 콤마를 삭제해준다
<update id = "editCalender" parameterType="ScheduleCalender">
update calender
<trim prefix="SET" suffixOverrides=",">
<if test="title != null">
title = #{title},
</if>
<if test="startDt != null">
start_dt = #{startDt},
</if>
<if test="endDt != null">
end_dt= #{endDt},
</if>
<if test="backgroundColor != null">
background_color= #{backgroundColor},
</if>
<if test="completionPer != null">
completion_per= #{completionPer},
</if>
</trim>
where calender_id = #{calenderId}
</update>
jquery datepicker
2019-01-19 00:00:00 +0000jquery Datepicker 사용법
jquery import
<link href="http://www.jqueryscript.net/css/jquerysctipttop.css"
rel="stylesheet" type="text/css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
사용법
var jb = jQuery.noConflict();
$( function() {
jb( "#addDatepickerStart").datepicker({
dateFormat: "yy-mm-dd"
});
<div>시작날짜 <input type="text" id="addDatepickerStart" data-date-format='yy-mm-dd' ></div>
import multiple jquery 문제
- 여러 jquery버전을 사용하면 충돌이 발생해서 함수를 못찾는 에러발생
- jquery 사용 범위를 정해놓고 사용 해야한다
- jquery import 후 해당 jquery를 이용하는 코드를 작성한다. 그리고 script를 닫은 후 다른 jquery 를 import한다. 그리고 방금 import 한 jquery만 사용한다
- ’$’을 쓰지말고 noConflict 함수로 해당 jquery를 사용해야한다
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
var jb = jQuery.noConflict();
$( function() {
jb( "#editDatepickerEnd").datepicker({
dateFormat: "yy-mm-dd"
});
});
</script>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$('#clickbutton').function({
});
<script>
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