231005

한라봉봉·2023년 10월 5일
0

HTMl css

form

form_test01확인

get 과 post method

<form action="join.do" method="post" name="frm">

*form은 디폴트로 get을 사용한다. 하지만 협업자를 위해 보통 표시해준다.

GET은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드이다.
예를들면 게시판의 게시물을 조회할 때 쓸 수 있다.
GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링 (query string) 이라고 부른다.
방식은 URL 끝에 " ? " 를 붙이고 그다음 변수명1=값1&변수명2=값2... 형식으로 이어 붙이면 된다.(&로 구분)

예를들어 다음과 같은 방식이다.

www.example.com/show?name1=value1&name2=value2

서버에서는 name1 과 name2 라는 파라미터 명으로 각각 value1 과 value2 의 파라미터 값을 전달 받을 수 있다.

POST는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드다. 예를들면 게시판에 게시글을 작성하는 작업 등을 할 때 사용할 된다.

POST는 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 보낸다. ( body 의 타입은 Content-Type 헤더에 따라 결정 된다.)
GET에서 URL 의 파라미터로 보냈던 name1=value1&name2=value2 가 body에 담겨 보내진다 생각하면 된다.
POST 로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러나는건 아니라서 보안이 필요한 부분에 많이 사용된다.
( 하지만 데이터를 암호화하지 않으면 body의 데이터도 결국 볼 수 있는건 똑같다. )

POST를 통한 데이터 전송은 보통 HTML form 을 통해 서버로 전송된다.

action과 name

<form action="join.do" method="post" name="frm">

action으로 정보를 넘겨받아 저장등의 동작을 수행
->위 라인을 사용하지 않고 input type="submit" value="확인"을 수정하여 JS로 유효성검사 후 제출할수도 있다.
<input type="button" value "확인" onclick= Validate()>
name은 회원정보 폼인 경우 frmMember 등으로 설정. frm을 붙임

자바에서 GUI 구현하는 방법

AWT-> Swing -> FX 순으로 발전해 왔다.
하지만 이방법은 사용하지 않는다. 윈도우 GUI나 웹에서 구현할 것이므로(폼)

윈도우 컴포넌트

  1. text input 글자입력, (+ placeholder 사용으로 안내문, autofocus로 사용자 포커스)
  2. option 단 한개만 선택(그룹화 시켜야함. 한개 선택시 나머지 취소됨)
  3. check box 여러개 선택
  4. combo(select) 아래 화살표로 펼쳐서 선택
  5. list 전체목록
  6. 스크롤바(수직/수평)
  7. Dialog box(대화창) Modal/ Modeless
    • Modal 대화창 외 기존 창 조작 불가 / Modeless 대화창 외 기존 창 조작 가능
  8. 탭 메뉴

==> UI 구현

table

table_test01 참고

rowspan 과 colspan으로 테이블 병합해서 만들기

  1. 테이블 칸에 숫자 부여
  2. 가장 길고 넓은 칸을 파악
    세로로 5 길면 rowspan 5으로 행 병합
    병합전에 내용 지우기(td 지우기)
    가로로 길면 colspan으로 열 병합
  3. abc 폼 넣어서 연습

java

p.114부터

배열이란? 같은 속성의 데이터를 나란히사용

  • 1차원배열 a[]
  • 2차원배열 b[][]
  • 3차원배열 c[][][]

다른속성이 나란히 있다면?

  1. C언어 에서는
    • 구조체를 사용
      struct 구조체명{ }
    • 각 변수를 따로 처리시 구조체내부에 함수를 넣음
      struct 구조체명{ year(); money;}
    • 변수에 함수를 추가 + 초기화기능(생성자)
      이것이 클래스
  2. C++에서는
    • 구조체에 함수가 들어갈수 있지만 사용하지 않음
    • 클래스에는 변수와 함수 및 생성자, 파괴자가 들어감 -> 멤버변수, 멤버함수, construct, destruct
  3. Java 에서는
    • List사용. 행과 열로 데이터 정리되어 있어 정형데이터라고 한다.
    • 클래스의 경우 변수는 필드, 함수는 method, 생성자, 파괴자x 로 한다. -> 파괴자는 객체를 java가 자동 정리하여 불필요
  • 정형데이터
    oracle, MySQL, MariaDB
  • 비정형 데이터 : 행과 열을 무시하고 키와 값으로 구분. 요즘 떠오르는 개념 -> Map사용
    MongoDB(Off-Line), Redis(On-Line)

최근 지향

  1. 순차 ->
    Basic C
    Fortran Pascal
    COBOL

  2. 구조적 ->
    C
    Pascal

  3. 객체지향 ->
    C++
    윈도우

  4. 다시 구조적
    자바 람다식
    리액트 클래스형 / 함수형<- 클래스 자체를 기능으로

데이터 타입 분류

  1. 기본타입
    스택영역에 값을 가진다.
    - 정수, 실수, 논리타입
  2. 참조타입
    스택 영역에 참조값(주소)을 가진다.
    힙 영역에 실제 값을 가진다.
    - 배열, 열거, 클래스, 인터페이스

메소드

  • 사용자 정의 함수
  • 표준함수 표준클래스 예약어

메모리 사용영역

  1. 메소드영역 : 바이트코드 파일을 읽은 내용이 저장. 클래스별 상수 정적필드,메소드코드, 생성자 코드등이 저장
  2. 힙영역: 객체가 생성되는 영역 객체의 번지는 스택영역의 상수와 변수에서 참조
  3. 스택영역 : 메소드를 호출할때마다 생성되는 프레임이 저장되는 영역. 호출이 끝나면 프레임은 자동제거

객체생성

new == Instance
같은 클래스로 인스턴스를 생성해도 각 인스턴스는 == 비교시 다르다.

null

참조 타입 변수는 아직번지를 저장하지 않았다는 의미로 null을 가질수 있다.

컬렉션 변수 선언시 부모를 사용하는 이유

최근 선언시에는 앞에 부모타입을 사용. 자식은 부모 클래스를 이용할수 있기때문
https://limreus.tistory.com/9
Map으로 선언할 경우, HashMap으로 선언할 때보다 가짓수가 많아진다.
결국 코드의 유연성을 높일 수 있게 되는 것이다.
https://myeongdev.tistory.com/23
또한, Map이 인터페이스여서 선언만 가능하며 객체 생성이 불가능하다.

List myData = new ArrayList();
Map myValue = new HashMap();

배열

  1. 배열은 같은 타입의 값만 관리한다.
  2. 한번 결정된 배열의 길이는 늘리거나 줄일 수 없다.

동적할당, 정적할당, 가비지컬렉터

  1. 동적할당
코드int[] a; 
a = new int[5];
  • new 연산자 등을 사용해 프로그램 도중 필요한 양 만큼 할당하는 것 heap 메모리에 저장된다.
    (프로그램 종료시 garbage collector가 정리한다)
  1. 정적할당
  • 메모리를 미리 stack memory에 확보해둔다.
  • 아래의 배열처럼
int[] a = new int[10];
  • 함수종료될때까지 안쓰는 메모리가 낭비된다.
  • 함수 호출이 끝나면 사라진다.
  1. 가비지컬렉터
  • 자바에서는 메모리를 가비지컬렉터라는 알고리즘을 통해 관리한다.
  • 개발자가 메모리를 처리하기 위한 로직을 만들필요도, 만들어서도 안된다.
  • 자바에서 쓰레기는 객체다. 하나의 객체는 메모리를 점유하고, 필요하지 않으면 메모리에서 해제되어야 한다.
  • 메모리 점유란 코드에서 a라는 객체가 만들어지고 메모리의 한 부분을 점유하게 되고, 특정 메소드 호출 후 수행이 완료되어 필요없어진 객체를 쓰레기라고 한다. 이 쓰레기를 효과적으로 처리하는작업을 가비지 콜렉션 (Garbage Collection) 이라고 부른다.

사용자 정의 메서드(함수) 사용할 때 주의사항

  1. return 은 한개의 값만 가질 수 있다.
    그래서 여러 값을 리턴해야 할때는 패킹작업을한다.
    정해진 형식으로: list, map 등 사용
    비규격으로 직접 형식정의: 제네릭
  2. return과 함수명 앞 형식은 일치해야 한다.
  3. 메서드 내 정의된 파라미터와 메서드 호출시 파라미터는 갯수와 형식이 일치해야 한다.
  4. 첫글자는 소문자
  5. void는 무형식으로 return을 가지지 못함
public class FunctionEx01 {
//static으로 메모리에 정적으로 머무를 수 있게 해야함
	public static int functionTest(int a, int b) {
		int sum;
		sum = a + b;
		return sum;
	}
	
	public static void main(String[] args) {
		int x = 10;
		int y = 2;
		System.out.println("x와 y의 합? " + functionTest(x, y));
	}
}

접근 제한자(Access Modifier)

접근 제한자(Access Modifier)는 말 그대로 접근을 제한하기 위해 사용된다. 여기서 접근이란 클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 말한다.

public: 접근을 제한이 없음. 외부 클래스가 자유롭게 사용할 수 있음.
protected: 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 합니다.
default : 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근이 가능
private: 자기 자신의 클래스 내에서만 접근이 가능. 직접 접근할 수 없으므로 getter, setter함수를 통해서만 가능하다.

업로드중..

main() 메소드 String[] args 매개변수 용도

  • 프로그램 실행시에 요구하는 값이 있을 수 있다. 이때 String 타입 args 배열로 받아온다.
  1. 운영체제가 main을 호출한다.
  2. 운영체제가 main을 실행한다. 이때 args 배열은 크기를 정해두지 않았기 때문에 인자는 몇개가 입력되도 괜찮다.
profile
백엔드 개발공부 로그를 기록합니다

0개의 댓글