$2a$10$6NpCCOeugVUvvhk1/Bg8Bea2ka6bSPvOGBg# Linux(CentOS7)


1. vmware 프로그램 다운로드 한다. 리눅스 iso 파일 다운로드 


2. 명령어

- 설치 가능한 자바 목록
> yum list java*

- ip 주소 확인
> ip addr

- 'ONBOOT' 값 'no' > 'yes' 변경
> vi /etc/sysconfig/network-scripts/ifcfg-ens33

- ip 할당해주는 녀석 호출
> dhclient

- ip 주소 재확인
> ip addr


3. X Window Install

- X window 설치
> yum groupinstall "X Window System" "Fonts"

- 세션, 터미널, 폰트 설치
> yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts

startx

y
4. ftp 설치

- Terminal 명령어
패키지 설치
> yum -y install vsftpd

서버 설정
> vi /etc/vsftpd/vsftpd.conf

/로 찾기 
- /anony, anonymous_enable=NO
- /chroot_list, /chroot_list_enable= YES 주석해제 ,/chroot_list_file=~ 주석 해제
- /listen=YES, /listen_ipv6=NO
- vi etc/vsftpd/chroot_list 파일 생성 후 root 기입 > 저장 후 나가기

* 방화벽 해제
> firewall-cmd --permanent --add-service=ftp
> firewall-cmd --permanent --add-port=21/tcp
> firewall-cmd --reload

* SELINUX 해제 ( 보안 최소화 ) 
> vi /etc/selinux/config
SELINUX=enforcing 을 disabled로 변경

* 데몬 재시작
> systemctl enable vsftpd
> systemctl restart vsftpd

* 프로세스 데몬 확인 
> ps -ax | grep vsftpd
 -- grep은wLk5eSami7gg9/NZmK


파일질라로 로컬 => 리눅스 파일 전송 

1. 리눅스 사용자 계정으로 로그인
2. ip addr로 ip 확인
3. 파일 질라에 ip값 사용자 계정 패스워드 port 21 입력 
4. 전송 할 파일 더블 클릭 

리눅스 시스템에 jar 파일을 전송하여 서비스 하기 
1. 인텔리제이 오른쪽에 Gradle 클릭 => Tasks => build => bootJar 실행 ( 더블 클릭 ) 
2. 프로젝트 build => libs => SNAPSHOT.jar 생성 된거 확인 
3.  port 번호 확인 
3. SNAPSHOT.jar 파일 복사해서 c에 폴더 생성해서 복사해서 넣기 
4. 파일질라로 로컬에 있는 SNAPSHOT.jar 리눅스에 전송 
5. root로 접속 후 입력 firewall-cmd --permanent --zone=public --add-port=3306/tcp / port 번호 넣기  
6. 방화벽  firewall-cmd --reload
7. 사용자로 로그인 java -jar SNAPSHOT.jar 실행 
7. http://192.168.180.129:8195/ ip:port

nohub ( 사용자 로그아웃 해도 접속 가능 ) 
nohup java -jar [jar file name] &

마지막 파일 확인 
tail nohup.out

'코드 정리' 카테고리의 다른 글

Vue.js 실전_ 연습 순서  (0) 2023.11.08
스프링 시큐리티_구글 소셜로그인_DB연결  (0) 2023.11.01
Vue.js basic  (0) 2023.11.01
local=> Git  (0) 2023.11.01
파이썬 기초_1  (1) 2023.10.24

JPA_ Ajax 

 

@Entity

package org.zerock.ajax1.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class Memo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mno;

    private String memoText;
}

repository

package org.zerock.ajax1.repository;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.zerock.ajax1.entity.Memo;

import javax.transaction.Transactional;
import java.util.List;

//@Repository
public interface MemoRepository extends JpaRepository<Memo, Long> {
    List<Memo> findByMnoBetweenOrderByMnoDesc(Long from, Long to);

    Page<Memo> findByMnoBetween(Long from, Long to, Pageable pageable);

    void deleteMemoByMnoLessThan(Long num);

    @Query("select m from Memo m order by m.mno desc")
    List<Memo> getListDesc();

    @Transactional
    @Modifying
    @Query("update Memo m set m.memoText = :memoText where m.mno = :mno")
    int updateMemoText(@Param("mno") Long mno, @Param("memoText") String memoText);

}

 

 

controller

package org.zerock.ajax1.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
import org.zerock.ajax1.entity.Memo;
import org.zerock.ajax1.repository.MemoRepository;

import java.util.List;
import java.util.Optional;

@Controller
public class TestController {

    @Autowired
    MemoRepository memoRepository;

    @GetMapping("/ajax")
    public String ajax1() {
        return "ajaxTest";
    }
    @GetMapping("/ajax2")
    public String ajax2() {
        return "ajaxTest2";
    }

    @GetMapping("/list/{page}")
//    @ResponseBody
    public String  list(@PathVariable int page, Model model){
        Sort sort1 = Sort.by("mno").descending();
        Pageable pageable = PageRequest.of(page-1, 10, sort1);
        Page<Memo> list = memoRepository.findAll(pageable);

        model.addAttribute("list", list.getContent());
        return "page";

//        return list;
    }

    @GetMapping("/update/{mno}/{memoText}")
    @ResponseBody
    public Memo update1(@PathVariable Long mno, @PathVariable String memoText, Model model){

        memoRepository.updateMemoText(mno, memoText);
        Optional<Memo> memo = memoRepository.findById(mno);
        return memo.get();
    }


}

 

 

 

package org.zerock.ajax1.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.zerock.ajax1.entity.Memo;
import org.zerock.ajax1.repository.MemoRepository;

import java.util.Optional;

@RestController
@Slf4j
public class MyController {

    @Autowired
    MemoRepository memoRepository;

    @GetMapping("/memo/{id}")
    public ResponseEntity<Optional<Memo>> getList(@PathVariable("id") Long id) {
        log.info("id: {}", id);
        return new ResponseEntity<>(memoRepository.findById(id), HttpStatus.OK);
    }

    @PostMapping("/input")
    public ResponseEntity<Long> register(@RequestBody Memo memo) {
        log.info("memo: {}",memo);
        memoRepository.save(memo);
        return new ResponseEntity<>(memo.getMno(), HttpStatus.OK);
    }

}

 

jsp & js

 

ajaxTest.jsp

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-13
  Time: 오전 10:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div id="here">
</div>
<input type="text" id="memoId"/>
<button id="btn">클릭</button>

<label>
  <p>
    <input type="text" name="memoText" />
    <button id="btn2">입력</button>
  </p>
</label>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
    $(document).ready(function () {
        $("#btn").on("click", function () {
            let id = $('#memoId').val();
            $.getJSON('/memo/'+id, function (data) {
                console.log(data);
                //$("#here").text(data);
                let str = "<p>"+data.mno+"<br/>"+data.memoText+"</p>";
                $("#here").html(str);
            });
        });

        $('#btn2').on("click", function () {
            let memo = {
                memoText: $('input[name="memoText"]').val(),
            };
            console.log(memo);

            $.ajax({
                url: '/input/',
                method: 'post',
                data: JSON.stringify(memo),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (data) {
                    console.log(data);

                }
            })
        });

    });
</script>
</body>
</html>

 

ajaxTest2.jsp

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-13
  Time: 오전 10:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div id="here">
</div>
<input type="text" id="memoId"/>
<button id="btn">클릭</button>

<label>
  <p>
    <input type="text" name="memoText" id="id2"/>
    <button id="btn2">입력</button>
  </p>
</label>
<script>

    let btn = document.querySelector("#btn");
    let id = document.querySelector("#memoId");
    let here = document.querySelector("#here");
    let btn2 = document.querySelector("#btn2");
    btn.addEventListener("click", function () {
        let val = id.value;
        console.log(val);
        fetch("/memo/"+val, {
            method: "GET",
        }).then((response) => response.json()).then((data) => {
                console.log(data);
                here.innerHTML = "<p>"+data.mno+"<br/>"+data.memoText+"</p>";
            });
    });
    btn2.addEventListener("click", function () {
        const val = document.querySelector("#id2").value;
        let memo = {
            memoText: val,
        };
        fetch("/input/", {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify(memo),
        })
            .then((response) => response.json())
            .then((data) => console.log(data));
    });
</script>
</body>
</html>

 

page.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1">
    <tr>
        <th>mno</th>
        <th>memoText</th>
    </tr>
    <c:forEach var="memo" items="${list}">
        <tr>
            <td>${memo.mno}</td>
            <td>${memo.memoText}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

 

결과

 

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-09-14 83일차  (0) 2023.09.14
2023-09-13 82일차  (0) 2023.09.13
2023-09-12 81일차  (0) 2023.09.12
2023-09-11 80일차  (0) 2023.09.11
2023-09-08 79일차  (0) 2023.09.08

스프링부트_JPA_H2

 

H2_build.gradle ( dependencies )

implementation 'org.springframework.boot:spring-boot-starter-jdbc' // Jdbc, Driver
    implementation 'com.h2database:h2' // h2 : implementation
    //runtimeOnly 'com.h2database:h2'

 

 

application.properties

spring.h2.console.enabled=true
#H2 URL 주소
spring.h2.console.path=/h2-console
#JDBC URL
spring.datasource.url=jdbc:h2:mem:test;
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

 

@Entity

package com.example.demo.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@Table(name="mydata")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class MyData {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long id;

    @Column(length = 50, nullable = false)
    private String name;

    @Column(length = 200, nullable = true)
    private String mail;

    @Column(nullable = true)
    private int age;

    @Column(nullable = true)
    private String memo;

}

 

인터페이스 Jpa 상속

package com.example.demo.repository;

import com.example.demo.entity.MyData;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MyDatarepository extends JpaRepository<MyData, Long> {
}

 

 

cotroller에서 데이터 넣어서 테스트 해보기

    @PostConstruct
    public void init(){

        MyData d1 = new MyData();
        d1.setName("kim");
        d1.setAge(123);
        d1.setMail("kim@gitbut.co.kr");
        d1.setMemo("this is my data!");
        myDatarepository.saveAndFlush(d1);

        MyData d2 = new MyData();
        d2.setName("lee");
        d2.setAge(15);
        d2.setMail("lee@gitbut.co.kr");
        d2.setMemo("my girl my data!");
        myDatarepository.saveAndFlush(d2);

        MyData d3 = new MyData();
        d3.setName("choi");
        d3.setAge(33);
        d3.setMail("choi@gitbut.co.kr");
        d3.setMemo("my boy!");
        myDatarepository.saveAndFlush(d3);

    }

 

 

 

타임리프( thymeleaf ), JSP ( JPA, @Entity는 기존꺼 사용 ) 

 

dependencies

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

 

application.properties

#JSP
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp

#타임리프
spring.thymeleaf.enabled=true
spring.thymeleaf.prefix=classpath:templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.cache=false
spring.thymeleaf.view-names=th/*

 

controller

package com.example.demo.controller;

import com.example.demo.entity.MyData;
import com.example.demo.repository.MyDatarepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import javax.annotation.PostConstruct;
import java.util.Optional;

@Controller
public class MyController {

   @Autowired
    MyDatarepository myDatarepository;
    
   // static
    @GetMapping("/main")
    public String index(Model model){
        model.addAttribute("list", myDatarepository.findAll());
        return "th/index";
    }
    
    //타임 리프
    @GetMapping("/test1")
    public String test1(Model model){
        model.addAttribute("msg", "테스트 자료");
        return "th/index2";
    }
    
    // 타임리프
    @GetMapping("/data/{id}")
    public String index3(@PathVariable Long id,
    Model model){
        Optional<MyData> myData = myDatarepository.findById(id);
        MyData data = myData.get();
        model.addAttribute("msg", "id");
        model.addAttribute("object", data);
        System.out.println("-------------------"+myData.get());
        return "th/index3";
    }

    // JSP
    @GetMapping("/list")
    public String list(Model model){
        model.addAttribute("list", myDatarepository.findAll());
        return "list";
    }
    }

 

 

 

/list ( list.JSP )

 

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-14
  Time: 오전 11:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>list.jsp</h1>

<c:forEach var="dto" items="${list}">

    <li>${dto.name}, ${dto.mail}</li>

</c:forEach>
</body>
</html>

 

 

resources => static ( 타임리프 )

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>static 처음페이지</h1>
</body>
</html>

 

타임 리프 ( 자료형식 출력 해보기 ) / test1

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>index2.html</h1>

<p th:text="${#dates.format(new java.util.Date(),'dd/MM/yyyy HH:mm')}"></p>
<p th:text="${#numbers.formatInteger(1234,7)}"></p>
<p th:text="${#strings.toUpperCase('Welcome')}"></p><br/>

<input type="text" th:value="${msg}" /><br/>

<p class="msg" th:text="${msg}"></p>

<p>[[${msg}]]</p>
</body>
</html>

 

타임리프 ( id값 가져와서 테이블 출력 ) / index3

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>top page</title>
    <meta http-equiv="Content-Type"
          content="text/html; charset=UTF-8" />
    <style>
        h1 { font-size:18pt; font-weight:bold; color:gray; }
        body { font-size:13pt; color:gray; margin:5px 25px; }
        tr { margin:5px; }
        th { padding:5px; color:white; background:darkgray; }
        td { padding:5px; color:black; background:#e0e0ff; }
    </style>
</head>
<body>
<h1 th:text="#{content.title}">Helo page</h1>
<p th:text="${msg}">message.</p>
<table th:object="${object}">
    <tr><th>ID</th><td th:text="*{id}"></td></tr>
    <tr><th>NAME</th><td th:text="*{name}"></td></tr>
    <tr><th>MAIL</th><td th:text="*{mail}"></td></tr>
</table>
</body>
</html>

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-09-15 84일차  (0) 2023.09.21
2023-09-13 82일차  (0) 2023.09.13
2023-09-12 81일차  (0) 2023.09.12
2023-09-11 80일차  (0) 2023.09.11
2023-09-08 79일차  (0) 2023.09.08

스프링 부트_Spring Data JPA_2 

 

프로젝트 구조

 

 

entity

package org.zerock.ex2.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@Table(name = "tb1_memo")
@ToString
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mno;

    @Column(length = 200, nullable = false)
    private String memoText;
}

 

 

JPA 관련 application.properties

auto= create 하면 기존 테이블 삭제 후 다시 생성되기떄문에 데이터가 전부 사라짐 ( 테스트 할 때 사용 )

테스트 완료되면 auto = none로 설정을 바꿔줘야 됨 

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

 

MemoRepository 인터페이스 생성 JpaRepository 상속 

사용할 때는 엔티티의 타입 정보 (Memo 클래스 타입)와 @Id의 타입을 지정하게 됨 

package org.zerock.ex2;

import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.ex2.entity.Memo;

public interface MemoRepository extends JpaRepository<Memo, Long> {



}

 

 

CRUD 테스트 

insert 작업 : save(엔티티 객체)

select 작업 : findById(키 타입), getOne(키 타입)

update 작업 : save(엔티티 객체) 

delete 작업 : deleteById(키 타입), delete(엔티티 객체)

 

 

 

 

package org.zerock.ex2;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.zerock.ex2.entity.Memo;

import java.util.stream.IntStream;

@SpringBootTest
class Ex2ApplicationTests {

    @Autowired
    MemoRepository memoRepository;

    @Test
    void contextLoads() {
    }

    @Test
    public void testClass(){

        System.out.println(memoRepository.getClass().getName());

    }

    @Test // insert 테스트 
    public void testInsertDummies(){

        IntStream.rangeClosed(1,10).forEach(i -> {
            Memo memo = Memo.builder().memoText("Sample..." + i).build();
            memoRepository.save(memo);
        });
    }

    @Test // select 테스트
    public void testSelect(){
//        System.out.println(memoRepository.findAll());
//        Long mno = 10L;


    }


}

 

 

controller

package org.zerock.ex2.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.zerock.ex2.MemoRepository;
import org.zerock.ex2.entity.Memo;

import java.util.List;

@Controller
public class TestController {

    @Autowired
    MemoRepository memoRepository;

    @GetMapping("/list")
    public String list(Model model) {

        List<Memo> list = memoRepository.findAll();
        model.addAttribute("list", list);

        return "test";
    }



}

 

JSP

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-12
  Time: 오전 11:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
나옴

    <ul>

        <c:forEach var="memo" items="${list}">
           <li>${memo.memoText}</li>

        </c:forEach>
    </ul>




</body>
</html>

 

 

 

 

 

 

 

Ajax Json Jquery fetch

 

@Entity

package org.zerock.ajax1.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@ToString
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mno;

    @Column(length = 200, nullable = false)
    private String memoText;
}

 

 

JpaRepository

package org.zerock.ajax1.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.ajax1.entity.Memo;

public interface MemoRepository extends JpaRepository<Memo, Long> {
}

 

 

Controller

package org.zerock.ajax1.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.zerock.ajax1.repository.MemoRepository;

@Controller
public class TestController {

    @Autowired
    MemoRepository memoRepository;

    @GetMapping("/ajax")
    public String ajax1(){
        return "ajaxTest";
    }

    @GetMapping("/ajax2")
    public String ajax2(){
        return "ajaxTest2";
    }
}

 

package org.zerock.ajax1.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.zerock.ajax1.entity.Memo;
import org.zerock.ajax1.repository.MemoRepository;

import java.util.Optional;

@RestController
@Slf4j
public class MyController {

    @Autowired
    MemoRepository memoRepository;

    @GetMapping("memo/{id}")
    public ResponseEntity<Optional<Memo>> getList(@PathVariable("id") Long id){
        log.info("id: {}", id);
        return new ResponseEntity<>(memoRepository.findById(id), HttpStatus.OK);
    }

    @PostMapping("/input") // @RequestBody : JSON형식
    public ResponseEntity<Long> reqister(@RequestBody Memo memo){
        log.info("memo: {}", memo);
        memoRepository.save(memo);
        return new ResponseEntity<>(memo.getMno(), HttpStatus.OK);
    }
}

 

 

 

 

Jquery 

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-13
  Time: 오전 10:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
<div id="here">
</div>

<input type="text" id="memoId" />
<button id="btn">클릭</button>

<label>
    <p>
        <input type="text" name="memoText" />
        <button id="btn2">입력</button>
    </p>
</label>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
    /*jquery 값 가져오기*/
    $(document).ready(function (){
       $("#btn").on("click", function (){
          let id = $('#memoId').val();

          $.getJSON('/memo/'+id, function (data){


              console.log(data);

              let str;
              str = "<p>" + data.mno+"<br/>"+data.memoText+"</p>";
              $("#here").html(str);
          });
       });
    });

    /* jquery 값 넣기*/
    $(document).ready(function (){

        $('#btn2').on("click", function (){
            let memo = {
                memoText: $('input[name="memoText"]').val()
            };
            console.log(memo);

            $.ajax({

                url: '/input/',
                method: 'post',
                data: JSON.stringify(memo),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',

                success: function (data){
                    console.log(data);
                }

            });
        });
    });




</script>

</body>
</html>

 

 

 

fetch

<%--
  Created by IntelliJ IDEA.
  User: 1
  Date: 2023-09-13
  Time: 오전 10:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
<div id="here">
</div>

<input type="text" id="memoId" />
<button id="btn">클릭</button>

<label>
    <p>
        <input type="text" name="memoText" id="id2" />
        <button id="btn2">입력</button>
    </p>
</label>

<script>

    /*패치 select */
    let btn = document.querySelector("#btn");
    let id = document.querySelector("#memoId");
    let here = document.querySelector("#here");
    let btn2 = document.querySelector("#btn2");


    btn.addEventListener("click", function (){

        let val = id.value;
        console.log(val);

        fetch("/memo/"+val, {

            method: "GET",
        })
            .then((response) => response.json())
            .then((data) => {
                console.log(data);
                here.innerHTML = "<p>"+data.mno+"<br/>"+data.memoText+"</p>"
            })
    });

    /*패치 insert */
    btn2.addEventListener("click", function (){
       const val = document.querySelector("#id2").value;
       let memo = {
           memoText: val,
       };

       fetch("/input/", {
           method: "POST",
           headers: {
               "Content-Type" : "application/json",
           },
           body : JSON.stringify(memo),
       })
           .then((response) => response.json())
           .then((data) => console.log(data));
    });

</script>

</body>
</html>

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-09-15 84일차  (0) 2023.09.21
2023-09-14 83일차  (0) 2023.09.14
2023-09-12 81일차  (0) 2023.09.12
2023-09-11 80일차  (0) 2023.09.11
2023-09-08 79일차  (0) 2023.09.08

스프링 부트 DATA_JPA ( My SQL )

 

 

Memo 클래스 ( @Entity ) 

package org.zerock.ex2.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@Table(name = "tb1_memo")
@ToString
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Memo {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mno;

    @Column(length = 200, nullable = false)
    private String memoText;
}

 

 

 

application.properties

#server.port=9797

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp

# mysql 설정
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/spring5fs?serverTimezone=UTC&characterEncoding=UTF-8

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/spring5fs?serverTimezone=Asia/Seoul&characterEncoding=UTF-8

# 로그인
spring.datasource.username=spring5
spring.datasource.password=spring5

spring.messages.basename=message
spring.messages.encoding=UTF-8

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

 

 

build.gradle

plugins {
    id 'java'
    id 'war'
    id 'org.springframework.boot' version '2.7.15'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'org.zerock'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '11'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

//  jdbc 연결 관련
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.33'

//  jdbc log 관련
    implementation('org.slf4j:jcl-over-slf4j')
    implementation('ch.qos.logback:logback-classic')
    implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'

//  JSP, Jstl 관련
    implementation 'javax.servlet:jstl'
    implementation "org.apache.tomcat.embed:tomcat-embed-jasper"

}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

 

 

 

 

MemoRepository 인터페이스 

package org.zerock.ex2;

import org.springframework.data.jpa.repository.JpaRepository;
import org.zerock.ex2.entity.Memo;

public interface MemoRepository extends JpaRepository<Memo, Long> {



}

 

 

Test DB에 값 넣기 

package org.zerock.ex2;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.zerock.ex2.entity.Memo;

import java.util.stream.IntStream;

@SpringBootTest
class Ex2ApplicationTests {

    @Autowired
    MemoRepository memoRepository;

    @Test
    void contextLoads() {
    }

    @Test
    public void testClass(){

        System.out.println(memoRepository.getClass().getName());

    }

    @Test
    public void testInsertDummies(){

        IntStream.rangeClosed(1,10).forEach(i -> {
            Memo memo = Memo.builder().memoText("Sample..." + i).build();
            memoRepository.save(memo);
        });
    }

    @Test
    public void testSelect(){
//        System.out.println(memoRepository.findAll());
//        Long mno = 10L;


    }


}

 

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-09-14 83일차  (0) 2023.09.14
2023-09-13 82일차  (0) 2023.09.13
2023-09-11 80일차  (0) 2023.09.11
2023-09-08 79일차  (0) 2023.09.08
2023-09-07 78일차  (0) 2023.09.07

+ Recent posts