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