소스 코드를 기록하는 남자

Visual Studio Code : Java 실행 시 한글 깨짐

카테고리 없음

Java를 Code Runner 로 실행하면 한글 인코딩 에러가 발생한다.

 

한시간동안 찾아보면서 문제점들을 찾아봤는데, Dfile 옵션을 줘도 소용이 없었다.

 

그러다 vs code java setting 관련 포스팅을 보게 되었는데 아주 간단하게 해결되었다.

 

java extension을 설치하게 되면 

위와 같이 Run | Debug 가 뜨는데, Run으로 실행하면 아주 잘 실행된다.

 

혹여 누가 나와 같은 문제점을 겪으면 스트레스 받지말고 해결하길 바란다.

Spring boot 기반 Restful api 구현 (3) - Spring boot 프로젝트 설정 문서

Spring/Spring Restful Api

이전까지 Spring boot 기반의 프로젝트 생성에 대하여 알아보았습니다. 

이번에는 프로젝트 설정을 하는법에 대해서 작성해볼게요

 

application.properties

Spring boot 프로젝트는 src/main/resources/application.properties 파일 아래 설정될 내용이 들어갑니다.

아래의 내용을 application.properties에 추가해주세요. 

Server의 포트 설정은 server.port = 원하는 포트넘버 로 가능합니다.

더보기

# root-context and port settings

server.servlet.context-path=/ssafyapi

server.port=8080

JSP( Java Servlet Page ) 사용법

Restful Api 프로젝트를 진행하는 과정에서는 JSP 를 사용하지 않으셔도 됩니다.

혹시라도 Spring MVC 기반을 사용하시는 분들의 jsp 설정에 도움이 될까하여 추가하였습니다.

1. dependency 추가

JSP( Java Servlet Page ) 를 사용하시는 분들은 다음과 같이 설정이 필요합니다.

pom.xml 파일에 아래 dependency를 추가해주세요.

추가한 이후에

프로젝트 파일 오른쪽 클릭 -> Maven -> Update Project 클릭 또는 Alt + F5

더보기

<dependency>

  <groupId>javax.servlet</groupId>

  <artifactId>jstl</artifactId>

</dependency>

<dependency>

  <groupId>org.apache.tomcat.embed</groupId>

  <artifactId>tomcat-embed-jasper</artifactId>

</dependency>

2. jsp path 지정

application.properties에 jsp 경로 지정합니다.

아래는 view의 경로의 prefix를 /WEB-INF/views/ 로 지정해주고 마지막에 .jsp 붙여준다는 의미입니다.

그럼 view 파일의 위치는 WEB-INF/views/ 아래가 되어야겠죠?

더보기

# jsp path

spring.mvc.view.prefix=/WEB-INF/views/

spring.mvc.view.suffix=.jsp

3. 폴더 생성

자 하위 폴더를 생성하여 봅시다.

src/main/webapp으로 가서 하위 폴더 생성 /WEB-INF/views/ 

 

생성했으면 간단하게 jsp 페이지로 데이터를 받아봅시다.

 

views 아래에 hello.jsp 파일을 생성합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <!DOCTYPE html>
   <html>
   <head>
   <meta charset="UTF-8">
   <title>Insert title here</title>
   </head>
   <body>
       Hello ${data }<br> 테스트입니다.
   </body>
   </html>

이제 Controller 를 만들어서 데이터를 한번 보내봅시다.

src/main/java 아래 com.anearly.rest.controller 패키지를 생성해줍니다.

생성된 패키지에 helloController.java 파일을 생성합니다.

@Controller
public class HelloController {
	
	@GetMapping("/hello")
	public String hello(HttpServletRequest req) {
		req.setAttribute("data", "테스트");
		return "hello";
	}
}

http://localhost:8080/anearlyapi/hello 로 접속하여

 

 " Hello 테스트 테스트입니다.  " 

 

가 출력되는지 확인합니다.

 

 

MyBatis 설정

본 프로젝트는 MariaDB를 사용할 예정입니다.

https://alpreah.tistory.com/77

 

[Spring] 스프링 마이바티스 마리아디비 연결

#1 Mybatis Spring과 MariaDB연결에 필요한 라이브러리를 다운 받자! 우선, STS와 인터넷에 구글을 켜주세요. 구글에 maven repository를 검색 해 주세요. 만약, 검색 결과가 필자와 다르게 나온다면 여기를 눌..

alpreah.tistory.com

위 블로그를 참고하셔서 MariaDB 설정을 해주세요

Spring boot 기반 Restful api 구현 (2) - Spring boot 프로젝트 생성

Spring/Spring Restful Api

아래와 같이 프로젝트 생성합니다.

 

 

더보기

※ maven 에서 artifact 란 용어는 메이븐 빌드의 결과로 얻을 수 있는 일반적인 jar 나 war 또는 여타의 실행 파일을 의미한다. maven 에서 artifact 는 시스템의 groupId, artifactId, version 에 의해 구분되며 이는 빌드시 필요한 의존성(일반적으로 다른 jar 파일들)을 구분하는데 사용된다

Packaging이 War로 되어있다면 Jar로 변경해줍니다.

Name :: 원하고자 하는 프로젝트 이름을 작성합니다. 저는 anAn-Early-Rest-Api 로 변경합니다.

Group :: com.anearly로 변경하였습니다.

Artifact :: rest로 변경하였습니다.

Package :: com.anearly.rest 로 변경하였습니다.

 

DevTools(자동 서버 로딩), Spring Web, Spring Web Services 3가지 Dependency를 기본적으로 추가하고 시작한다. 이곳에서 Mybatis를 추가 할 수 있으나 따로 pom.xml에서 추가하는것이 오류가 나지 않는다.

 

기존 eclipse에서 진행하던 프로젝트 설정 파일들은 Spring boot로 오면서 xml 기반의 설정파일 다 걷어내게 되었습니다. 대신 application.properties를 이용해서 설정을 추가해줘야 합니다.

 

위와 같이 프로젝트가 생성이 되었으면 실행해봅시다.

 

실행 테스트

"{Project이름}+Application.java" 에서 서버를 실행해 주어야합니다.

서버를 실행한 다음 콘솔창을 확인해봅시다.

아래와 같은 그림에서 에러가 없다면 서버가 문제없이 실행된거에요

boot는 기본적으로 tomcat이 내장되어 있습니다.

src/main/webapp에 hello.html을 추가한 뒤에 아래 페이지로 접속하면 접속이 가능합니다.

간단한 hello.html 파일을 추가해봅시다. 

 

boot의 기본적인 포트 설정은 8080임으로 다음 아래 링크로 접속을 하면 아래와 같은 페이지가 나타납니다.

http://localhost:8080/hello.html

Spring boot 기반 Restful api 구현 (1) - Maven 다운로드

Spring/Spring Restful Api

https://spring.io/tools3/sts/legacy

 

Spring Tool Suite™ 3 (STS 3) Download page

Use one of the links below to download an all-in-one distribution for your platform. Choose either a native installer or simple archive, they contain equivalent functionality

spring.io

1. 위 링크로 가서 STS 3.9.7 RELEASE 를 자신의 운영체제에 맞게 다운로드합니다.

 

2. 압축 해제

 

3. 자신이 사용하기 편한 경로에 폴더자체를 복사해줍니다.

 

더보기

필독

Spring Legacy project를 생성하게 되면 Online에서 필요한 Library를 설치합니다

이 때 C:\Users\UserName\.m2 경로로 다운로드 됩니다.

라이브러리 오류로 인해서 에러가 발생하면 .m2 폴더를 삭제합니다.

삭제하면 다음 실행때 다시 Online에서 라이브러리를 가져오게 됩니다.

 

Spring Project에서는 필요한 라이브러리를 pom.xml 파일에서 dependency 를 추가하여 관리합니다.

따라서 필요한 라이브러리가 있을때 라이브러리를 직접 다운로드 할 필요없이 아래의 링크에서 필요한 라이브러리를 검색한 후에 pom.xml 파일 안 dependencies 사이에 추가해주면 됩니다.

https://mvnrepository.com/

 

 

 

 

JavaScript - bool data type converting

JavaScript

 

False

Boolean(0)
Boolean(Nan)
Boolean('')
Boolean(null)
Boolean(undefined)

 

these 5 cases are returning false. Except these cases are returning true

 

Equality Operator  
== both side value are same
!= both side value are different
=== both side value and data type are same
!== both side value and data type are different

 

'JavaScript' 카테고리의 다른 글

JavaScript - typeof(), prompt(), String(), Number()  (0) 2019.09.14
JavaScript - Function Executing Process  (0) 2019.09.14
JavaScript - Global Variable  (0) 2019.09.14
JavaScript - Hoisting  (0) 2019.09.14
JavaScript - window.onload  (0) 2019.09.14

JavaScript - typeof(), prompt(), String(), Number()

JavaScript

typeof() : to check the data type like number, string, bool 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>title</title>
<script type="text/javascript">
var str = "This is String";
var num = 500;
var bool = true;
alert(typeof(str));
alert(typeof(num));
alert(typeof(bool));
</script>
</head>
<body>

</body>
</html>

alert(typeof(str));

 

alert(typeof(num));
alert(typeof(bool));

prompt(String message, String default) : a function to get a value for a variable

var input = prompt("Message", "Hello")

 

 alert(input) : Input is "Hello" 

Number() : coverting data type as number. if its not a number, converting to "Nan"

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>title</title>
<script type="text/javascript">

var input = prompt("number input", "number");
var numberInput = Number(input);

alert(typeof(numberInput)+": "+numberInput);
</script>
</head>
<body>

</body>
</html>

String() : same as Number() function

'JavaScript' 카테고리의 다른 글

JavaScript - bool data type converting  (0) 2019.09.14
JavaScript - Function Executing Process  (0) 2019.09.14
JavaScript - Global Variable  (0) 2019.09.14
JavaScript - Hoisting  (0) 2019.09.14
JavaScript - window.onload  (0) 2019.09.14

JavaScript - Function Executing Process

JavaScript

Because of JavaScript's Declaration Process, Every Declarations will go to the Top of Code

without value

 

Without Value is very important. Let's look the example

 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>함수의 동작원리 :: 선언적 함수 : 리턴타입+매개변수</title>
<script type="text/javascript">

	var calc = function (x, y) {//function declaration
		return x+y;
	}	
	console.log(calc(5,3)); //8
	
	

	var calc = function (x, y) {//function declaration
		return x*y;
	}
	console.log(calc(5,3)); //15
	
</script>
</head>
<body>

</body>
</html>

first console.log will print 8, second will print 15.

 

this is the process of this code.

 

1. var calc will go to the top

 

2. x + y function will be a value of calc.

 

3. first console.log print 5+3

 

4. x * y function will be a value of calc.

 

5. second console.log print 5 * 3

 

 

But it is different between function and variable, lets see the example

 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>선언적 함수 정의 및 재정의 | 익명함수 정의 및 재정의</title>
<script type="text/javascript">

 	
	var func = function(){alert("func inner");}// 2 second create
	function func(){alert("func declear");} //1 first create
	func(); //func inner; 
	
	
</script>
</head>
<body>

</body>
</html>

for this code, variable func and function func() will go to the top.

 

so this process is

 

1. func will be go to the top with first create function

 

2. func is overrided with second create.

 

3. func() executing

'JavaScript' 카테고리의 다른 글

JavaScript - bool data type converting  (0) 2019.09.14
JavaScript - typeof(), prompt(), String(), Number()  (0) 2019.09.14
JavaScript - Global Variable  (0) 2019.09.14
JavaScript - Hoisting  (0) 2019.09.14
JavaScript - window.onload  (0) 2019.09.14

JavaScript - Global Variable

JavaScript

In javaScript, it is different from other langauge.

 

Lets see the code.

 

after showAge function called, the variable "age" is changed to a Global Variable 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">

	// Global Variable Declaration (3) a Global variable connected to window object
/* 	var myName = "James";
	//
	firstName = "Gosling";
	//
	var name;
	name = "James Gosling";
	
	console.log(myName +' '+firstName+" "+name); */
	
	//2. A Global Variable with function
	
	function showAge() {
		age = 90;
		//console.log(age);
	}
	showAge(); //after function called, age will be a global variable
	console.log(age);
	
	
</script>
</head>
<body>

</body>
</html>

'JavaScript' 카테고리의 다른 글

JavaScript - typeof(), prompt(), String(), Number()  (0) 2019.09.14
JavaScript - Function Executing Process  (0) 2019.09.14
JavaScript - Hoisting  (0) 2019.09.14
JavaScript - window.onload  (0) 2019.09.14
JavaScript - Escape character, Operator  (0) 2019.09.14