반응형

인스턴스 변수

 - 객체를 생성해야지 사용 할 수 있는 변수


class Car{

String color;

int speed;

// 클래스 변수

static int count;

}


Car mycar1 = new Car()

Car mycal2 = new Car()


인스턴스가 생성될때 각각 독립적인 변수 공간 할당 

(mycar1.color , mycar2.color)


클래스 변수

- 인스턴스 생성과 상관없이 클래스 전체에서 공유한다

- 클래스 변수는 static 키워드가 붙는다


테스트 코드


class Car2 {


String color;

int speed;

static int count = 0;


// 생성자

Car2() {

count++;

}


}


public class car_Sub2 {

public static void main(String[] args) {
Car2 mCar = new Car2();
System.out.println("현재 생산된 자동차 수" + mCar.count);

Car2 mCar2 = new Car2();
System.out.println("현재 생산된 자동차 수" + mCar2.count);

Car2 mCar3 = new Car2();
System.out.println("현재 생산된 자동차 수" + mCar3.count);

System.out.println("static 변수는 공유된다");
}

}

실행 결과






반응형
반응형

코드를 짜면서 기초 개념이 좀 부족한거 같아서 빠르게 한번 정리


speed  에 private  접근 제어 수식어를 지정했기 때문에 

mycar 인스턴스에서 직접 speed 변수 접근 하여 수정이 불가함

그러므로 200 넘는 값이나  마이너스 속도를 speed에 입력하는 실수를 미연에 막아준다

speed 값을 수정하려면 메서드를 꼭 이용해야 한다.


public class Car {
	
	//String color;
	//int speed;
	// private 직접 접근 불가
	private String color;
	private int speed =0;
	
	public void upSpeed(int value){
		if(speed + value > 200){
			speed = 200;
		}else{
			speed = speed + value;	
		}
		nowSpeed();
	}
	
	public void downSpeed(int value){
		if(speed - value < 0){
			speed = 0;
		}else{
			speed = speed - value;	
		}
		
		nowSpeed();
	}
	
	public void nowSpeed(){
		System.out.println("현재 속도는 == " + getSpeed());
	}
	
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public int getSpeed() {
		return speed;
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}

}


실행 코드

public class car_Sub {

	public static void main(String[] args) {
		Car mycar = new Car();
		
		//mycar.color= "빨강";
		//mycar.speed =0;
		//System.out.println("자동차 1 의 색상은 " + mycar.color + "이며 현재 속도는 " + mycar.speed + " KM 입니다");
		mycar.setColor("빨강");

		mycar.upSpeed(100); //100
		mycar.upSpeed(150); //250 
		
		mycar.downSpeed(50); //200 -50
		mycar.downSpeed(160); // 150 - 160
		//System.out.println("자동차 2 의 색상은 " + mycar.getColor() + "이며 현재 속도는 " + mycar.getSpeed() + " KM 입니다");
		
	}
	
}


실행 결과





반응형
반응형


CALL JSP

$.ajax({
url: "외부컨트롤러호출.do",
headers : { "Content-Type" : "application/json; charset=UTF-8" },
dataType : 'json',
type: "GET",
success: function(data) {
console.log("성공");
},
error: function (data) {
console.log("실패");
console.log(data);
}
});

CONTROLL JAVA
@RequestMapping("외부컨트롤러호출.do")
public ModelAndView myPageMain(HttpServletRequest req, HttpServletResponse res) throws Exception {
Map<String, Object> dataMap = new HashMap<String, Object>();
HashMap<String, String> hMap = new HashMap<String, String>();
hMap.put("전달파라미터"   , "아이디");
dataMap.put("ajaxcallReturn", 서비스.메소드명(hMap));
return dataMap;
}
SERVICE JAVA

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import java.io.InputStreamReader;
import java.net.URL;

public List<Map<String, Object>> 메소드명(HashMap<String, String> hMap) throws Exception {

JSONArray bodyArray = new JSONArray();
//URL 호출
URL url = new URL("http://호출 URL"+ "?아이디="+hMap.get("전달파라미터"));
//한글 처리 및 데이터 읽기
InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream(),"UTF-8");
//JSON Parsing // 예외처리
JSONObject items = (JSONObject) JSONValue.parseWithException(isr);
// 항상 넘어오는 데이터를 잘 확인해야함 
// 데이터에 :: 두개 있어서 삽질4시간
//===items.toString()=== 전달받은 데이터 {"data":[{"test1":"200","test2":"dummy1"},{"test1":"100","test2":"dummy2"}]}
// JSON 배열 변환
bodyArray = (JSONArray) items.get("data");
return bodyArray;
}​


반응형
반응형



스프링 부트 공부하던중


요거 서버에 올릴려면 빡셀려나 고민했는데 검색해보니 너무 간단..


mvn install 후 targer 폴더에 




해당 jar 파일 적당한곳에 올리고


java -jar demo...jar 실행만 치키면 ㅎㅎ



바로 실행된다 .. 


서버 올리고 내리는게 편할지 jar 올리고 재실행이 편할지는 고민해 봐야겠다. ㅋㅋ



반응형
반응형


저장

첫 게시물에 파일 첨부 할때는 

글 번호를 먼져 추출한다 (시퀀스 / MAX 등등)


하여 글 번호 와 매핑 되는 파일 테이블에 분리 등록


수정 / 삭제 


첨부된 파일 리스트 중 선택 삭제 


선택된것 플래그 비교 하여 삭제

첨부 파일 리스트 갱신(AJAX)


DB 저장시 해당 글 번호 조건으로 파일 테이블 등록 데이터 모두 삭제 후


현 기준 첨부 파일 리스트만 받아서 새로 등록한다..



오픈소스 파일 첨부 로직을 좀 살펴 봐야겠다.

내가 구현한게 최선인지 햇갈림...




반응형
반응형
Public ActionForward Reg(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)

System.out.println("mapping============= " + mapping)

FormFile[] formFile = (FormFile[]) htmlForm.getFiles();
//폼에서 파일 파라미터


If (formFile != null && formFile[0] != null) {

POIFSFileSystem filein = new POIFSFileSystem(formFile[0].getInputStream());


HSSFWorkbook wb = new HSSFWorkbook(filein);


HSSFSheet ws = wb.getSheetAt(0);


For (int i = 1; i < 1000; i++) {


Row row = ws.getRow(i);

If( row ==null) continue;



For( int j =0; j < 1; j++) {

If( row.getCell( j) ==null) continue;


try {

//셀 타입 체크


If( row.getCell( j).getCellType() ==Cell.CELL_TYPE_STRING) {
row.getCell( j).getStringCellValue();
}

Else{

String.valueOf((int) row.getCell( j).getNumericCellValue();
}


} catch(Exception e){

}

}// end for j
}// end for i

}












반응형
반응형


AJAX 로 체크박스 던짐

--HTML

<input type="hidden" id="userId"  name="useridTest" value="abcd">

<input type="checkbox" name="hobby" value="1">

<input type="checkbox" name="hobby" value="2">

<input type="checkbox" name="hobby" value="3">


--SCRIPT


function onSuccess(json, status){alert($.trim(json));}

function onError(data, status){alert("error");}


function ajaxExample(){

 // 폼 데이타 전체 직렬화

var formData = $("#pageform").serialize();

    

$.ajax({

type : "POST",

url : "받을 URL /test/home",

cache : false,

data : formData,

success : onSuccess,

error : onError

});

}


서블릿 메서드


public void getChkCnt(HttpServletRequest request, HttpServletResponse response) throws Exception {


// HTML에서 넘어온 파라미터 네임

String []item= request.getParameterValues("hobby");


if(  item.length > 0){

for(int x=0; x<item.length;x++){

System.out.println(item[x]);

}

}


}


끝 심플



반응형
반응형



https://projectlombok.org/


class 파일 만들때

위 라이브러리 사용하면 get set 및 여러가지 기본 세팅을 자동으로 만들어준다

@Data 어노테이션을 이용하면 ~!!!


편리하다


스프링 부트 공부하면서 알게된 라이브러리 ㅎㅎ


다운받고 

cmd

해당 폴더에서 

java -jar lombok.jar


설치할 IDE 선택하라고 나온다 설치 후 재시작


잘된다 ㅋ 








반응형
반응형

자바에서 사용하는 용어 중 혼동하기 쉬운 JVM, JRE, JDK에 대해서 정리해 보자.

JVM

JVM은 자바 가상머신(Java Virtual Machine)의 약자이다.

JVM은 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. 또한 JVM은 플랫폼에 의존적이다. 즉 리눅스의 JVM과 윈도우즈의 JVM은 다르다. 단, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다.

JVM은 다음과 같은 역할을 한다.

  • 바이너리 코드를 읽는다.
  • 바이너리 코드를 검증한다.
  • 바이너리 코드를 실행한다.
  • 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일)

JRE

JRE는 자바 실행환경(Java Runtime Environment)의 약자이다.

JRE는 JVM 이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다.

JDK

JDK는 자바 개발도구(Java Development Kit)의 약자이다.

JDK는 JRE + 개발을 위해 필요한 도구(javac, java등)들을 포함한다.


출처 : https://wikidocs.net/257

반응형
반응형

가끔 햇갈려서 생활코딩 강좌 보며 정리


Conversion


암시적 형 변환 ..


더 넒은 영역이면 자동 형변환


byte - short -int - long - float - double

char


ex)


int a = 3;

float b = 1.0F;

double c = a + b ;


요렇게 자동으로 가능


명시적 형 변환(수동으로 형 변환 Ecplict Conversion)


애러코드 (정보손실..)

float  a = 100.0 

int b = 100.0F


명시적...변환..


float a = (float)100.0;  double -- float 으로 명시적 변환

int b = (int)100.0F;  100.1F 를 (int) 로 명시적 형변환 하면 뒤에 .1 날라가고 100 만 남아서 형변환 된다..





반응형

+ Recent posts