Spring 강의 day 18

주세환·2023년 5월 24일
0

Spring

목록 보기
18/18

VMware

Install

VMware을 열어 Create a New Virtual Machine을 클릭한다.

ubuntu iso파일을 찾는다.

이름과 암호를 입력한다. ubuntu, 1234를 입력했다.

15GB를 설정한 후

8GB를 설정한다.

finish를 누른다. 용량이 15GB, 램이 8GB인 임의의 pc를 하나 생성하게 된다.

영어를 선택하고

업데이트를 하지 않는다.

완료

이렇게 엔터를 누르며 다음 창으로 넘어간다.

192.168.42.128 이것이 내 서버 주소이다.


여기까지 넘어온 후,

아까 입력한 이름과 암호를 입력한다.

스페이스바를 눌러 X를 활성화 한 후 Done

여기서 Done을 누르면

이렇게 설치가 실행된다.

이렇게 Reboot Now가 활성화 될 때까지 기다린다.

Reboot가 실행되었다. 이대로 냅두면 된다.

x를 눌러 PowerOff를 누르면 된다. pc를 끄는 거라고 생각하면 된다.

그럼 VMwawre가 종료된다.

VMware를 다시 실행하여 Ubuntu 64-bit을 누르면 다시 실행된다.


MobaXterm

다운받은 MobaXterm_Portable.zip 압축을 풀고 안에 있는 MobaXterm_Personal_23.1.exe 를 실행한다.

왼쪽 위 Session을 누르고

서버주소를 입력하고 OK를 누르면

다음 창으로 넘어간다. login as에 아까 만든 ubuntu를 입력하고 엔터를 누르면
아래 ubuntu@192.168.42.128's password : 라는 글자가 나온다.
여기서 아까 설정한 암호를 입력하면 된다. 입력해도 창이 변하지 않으니 입력하고 엔터를 누르면 된다.

No를 누른다.

위 화면이 나오면 성공


자바 설치

sudo apt update -y 를 입력한 후 엔터를 누른다.

password for ubuntu가 나오면 암호를 입력한다.

성공한 모습.


자바를 설치하는 명령어인 sudo apt install openjdk-11-jdk -y 를 입력한다.

자바가 설치되었고, java -version을 입력하면 설치된 자바의 버전을 확인할 수 있다.

pc에 자바를 설치하면 환경 변수에 java가 추가된다. 이제 직접 해보자.


환경변수

nano ~/.bashrc를 입력한다.

이런 화면으로 전환된다.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export Path=PATH:PATH:JAVA_HOME/bin

를 입력한다.

Ctrl + S를 눌러 저장한다.

Ctrl + X를 눌러 밖으로 나온다.
source ~/.bashrc까지 입력해준다.


Tomcat 설치

sudo apt install tomcat9 -y를 입력하여 Tomcat을 설치한다.


192.168.42.128:8080 주소로 접속하여 tomcat9이 나오면 성공적으로 설치되었다.

--

var - lib - tomcat9 - webapps 위 폴더에 파일을 불러와야 한다.

강사님 화면을 캡쳐하였다. 권한이 없어 파일을 넣을 수 없다고 한다.

권한을 지급하자.


sudo usermod -aG tomcat ubuntu를 입력하면 권한을 지급하게 된다.


파일 불러오기

...
	</properties>

	<!-- 개발용 jar -->
	<!-- 서버 배포용 war -->
	<packaging>war</packaging>
	
	<dependencies>
...    

vscode로 가서 pom.xml에 위 코드를 추가한다.

public class Boot20230427Application extends SpringBootServletInitializer{

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
		return application.sources(Boot20230427Application.class);
	}

Boot20230427Application.java에 extends를 추가한다.


MAVEN을 눌러 Lifecycle의 package를 실행해준다.


target안에 war 파일이 하나 생긴다.


ROOT1.war로 이름을 변경한다.

war파일을 /var/lib/tomcat9/webapps/ 에 추가한다.

자동으로 war 압축이 풀리면서 폴더가 생성된다.

192.168.42.128:8080/ROOT1 주소로 접속한다.

수업시간 때 만들었던 파일을 불러올 수 있다.


Spring

RestApi

@RestController
@RequestMapping(value = "/api/test1")
@RequiredArgsConstructor
@Slf4j
public class RestTestController {
    
    // 127.0.0.1:9090/ROOT/api/test1/select.do?aaa=a&bbb=b&ccc=c
    // 조회용 @ReqeustParam(name="aaa") String aaa, 
    @GetMapping(value="/select.do")
    public Map<String,Object> get1(       ){
        Map<String, Object> retMap = new HashMap<>();
        try{
            //db처리
            retMap.put("status", 200);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return retMap;
    }

    // 추가
    // @RequestBody 엔티티 obj
    @PostMapping(value="/insert.do")
    public Map<String,Object> get2(       ){
        Map<String, Object> retMap = new HashMap<>();
        try{
            //db처리
            retMap.put("status", 200);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return retMap;
    }

    // 수정
    // 127.0.0.1:9090/ROOT/api/test1/update.do
    // // @RequestBody 엔티티 obj
    @PutMapping(value="/update.do")
    public Map<String,Object> get3(       ){
        Map<String, Object> retMap = new HashMap<>();
        try{
            //db처리
            retMap.put("status", 200);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return retMap;
    }

    // 삭제
    // // @RequestBody 엔티티 obj
    @DeleteMapping(value="/delete.do")
    public Map<String,Object> get4(       ){
        Map<String, Object> retMap = new HashMap<>();
        try{
            //db처리
            retMap.put("status", 200);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return retMap;
    }
    
}

ajax.html

<body>
    <button th:onclick="init()">버튼누르면 함수호출</button>
    <button th:onclick="init()">버튼누르면 함수호출</button>
    <select th:onchange="init()"></select>

    rest로 만든 controller은 반드시 script로만 자료를 처리할 수 있음.
    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.3.5/axios.min.js"></script>
    <script th:inline="javascript">
        async function init() { //함수는 자동으로 호출되지 않음.
            const url = /*[[@{/api/test1/select.do(aaa='a')}]]*/"";
            const headers = {"Content-Type":"application/json"};
            const { data } = await axios.get(url, { headers:headers });
            console.log('반환되는 결과', data);

            const url = /*[[@{/api/test1/insert.do}]]*/"";
            const headers = {"Content-Type":"application/json"};
            const body = {id:"aaa", name:"bbb"};
            const { data } = await axios.post(url, body, { headers:headers });
            console.log('반환되는 결과', data);

            const url = /*[[@{/api/test1/update.do}]]*/"";
            const body = {id:"aaa", name:"bbb"};
            const headers = {"Content-Type":"application/json"};
            const { data } = await axios.put(url, body, { headers:headers });
            console.log('반환되는 결과', data);

            const url = /*[[@{/api/test1/delete.do}]]*/"";
            const body = {id:"aaa", name:"bbb"};
            const headers = {"Content-Type":"application/json"};
            const { data } = await axios.delete(url, { headers:headers, data:body });
            console.log('반환되는 결과', data);
        }

        // init(); //수동으로 함수 호출함.
    </script>

</body>

0개의 댓글