​<![CDATA[

SELECT

     A.USER_NAME

    ,A.REG_DT

    ,A.AUTH_LV

  FROM TB_SYS_USER A

 WHERE A.USER_LV < 99

​]]>

이렇게 쿼리를 예제로 들겠습니다.

WHERE 절에 사용자 권한을 99와 비교를 하고 있는 상황입니다.

현재는 오류가 나지 않습니다.

하지만 CDATA 구문을 지워버린다면 어떻게 될까

저 쿼리문은 오류를 표출하게 될 것입니다.

그 이유는 바로 "<" 이것 때문에 오류가 나게 되는데요

바로 태그로 인식을 해버리는 이유입니다.

그래서 이것은 태그가 아닌것을 알려주기 위해서 CDATA를 사용하여 작성해 주는 것 입니다

 

JSTL 로 개발하면서 원하는 특정 문자가 있을때마다 개행을 해줘야 할 때가 필요합니다

이 글을 보시면 도움이 될 거에요.

JSP 상단에다

<%

pageContext.setAttribute("CR", ",");

pageContext.setAttribute("BR", "<br/>");

%>

선언을 해줍니다. (저는 컴마가 있을때마다 개행을 해주었어요.

<c:set var="type" value="${fn:replace(data.controlType,CR, BR)}" />

<c:out value="${type}" escapeXml="false"/>

위와 같이 하시면 간단히 해결 될 것입니다.

 

'JSTL' 카테고리의 다른 글

forEach/forTokens  (0) 2018.03.30

// 숫자 자동 컴마 붙혀넣기 Options

Highcharts.setOptions({

                        lang: {

                                    thousandsSep: ','

                        }

            });

 

 

// 옵션 제거

exporting: {

                  enabled: false

              }

개발을 하다보면 해당 맵에 KEY 값이나 VALUE 값이 필요할 때가 있습니다

그때를 위해서 약간의 도움을 드리고자 예제를 적어보겠습니다.

// 아래는 KEY 값이 있는지 확인 하는 것 입니다. 

// one 이라는 Key 값이 있으므로 ->true / seven 이라는 키 값은 없으므로 false 가 나오는 것을 확인 할 수 있습니다

 

// 아래는 VALUE 값이 있는지를 확인 하는 것 입니다.

// 3 이라는 Value 가 있으므로 -> true/ 4 라는 Value 는 없으므로 flase 가 나올 수 있겠네요!

개발하시면서 필요하실때 참고 하세요~!

'Java' 카테고리의 다른 글

변수  (0) 2018.09.11
Java 실행 구조  (0) 2018.09.10
10. 열번째 개발 공부  (0) 2018.03.28
9. 아홉번째 개발 공부  (0) 2018.03.28
8. 여덞번째 개발공부  (0) 2018.03.28

변수 


변수란 ?

- 데이터를 임시로 담아둘수 있는 메모리 공간


int i = 10;

int j = 20;


위와 같이 사용할 수 있다.



int  i = 10 ; 

위의 문법을 풀이 해 보겠다 

int  

 자료형이고 정수형을 선언할때 쓰인다.


변수값을 담을 변수명이다.


=

대입 연산자  or 할당 연산자 이다.

수학에서와 달리 오른쪽에 있는 데이터를 왼쪽으로 이동하려할때 사용한다.


10

i 의 변수 에다가 10으로 초기화 를 했다.


;

선언문이 종료 되었을때 ;(세미콜론)을 붙혀줘 작업이 끝났다는것을 컴퓨터에게 알려준다.


변수를 초기화를 하는 방법에는 두가지가 있다 .


1. 첫번째로는 변수를 선언 후 초기화를 한다.

ex)

int i ;

i = 10

System.out.println("변수 선언 후 초기화");




2. 두번째로 선언과 초기화를 동시에 해주는 방법이 있다.

int i = 10;

System.out.println("선언과 초기화를 동시에");


-변수에 저장된 데이터는 언제든지 변경할 수 있다.


ex)

int i = 10;

i=20;

System.out.println(" i : "+ i);

출력 =  i :  20


i=30;

System.out.println(" i : "+ i);

출력 = i : 30

i=40;

System.out.println(" i : "+ i);

출력 = i : 40






'Java' 카테고리의 다른 글

맵 Key,Value 값 확인하기  (0) 2021.01.04
Java 실행 구조  (0) 2018.09.10
10. 열번째 개발 공부  (0) 2018.03.28
9. 아홉번째 개발 공부  (0) 2018.03.28
8. 여덞번째 개발공부  (0) 2018.03.28

1. 환경변수 

환경변수를 설정하는 이유

-javac.exe, java.ext 를 다른 디렉토리에서도 실행 할 수 있도록 하기 위해 환경변수(path)에 bin 경로를 등록한다.

-java.exe  = java 구동 명령어

-javac.exe = 컴파일러


1. 제어판 ->시스템 및 보안 -> 시스템 에서  고급 시스템 설정을 들어갑니다.



2.환경변수를 클릭 합니다.

a1575에 대한 사용자 변수(U) 라는 곳은 이 컴퓨터에서 사용자에 따라  사용 할 수 있는것들을 구분지어놓은것 입니다.

그리고 밑에 시스템 변수(S) 라는 부분은 모든 컴퓨터의 모든 사용자들이 사용 할 수 있는 것입니다.


3.시스템 변수에서 새로 만들기를 클릭합니다.

그리고 저는 지금 되어있지만  변수 이름에다가 JAVA_HOME 을 입력 한 후 

변수 값에다가 jdk 의 경로를 입력 합니다.

4. 변수 입력이 끝났으면 확인 버튼을 누른 후  시스템 변수에서 path 를 찾습니다.

path 를 편집하기를 클릭 후 새로만들기를 하여 이전에 있던 경로에  세미콜론(;) 을 붙혀줍니다.

그리고 그 뒤에  java bin 까지의 경로를 입력 해 줍니다.

아래와 같이 되었다면 모두 확인버튼을 누르고  윈도우+R 버튼이나 cmd 를 검색합니다.

5.그럼 이러한 화면이 나오게 되는데

이곳에다가 java -version 을 입력합니다.


6.아래와 같이 나오면 성공입니다.

7. 그리고 마지막으로 javac를 입력 해줍니다.

아래와 같은 화면이 나온다면 환경변수 설정이 완료 되었습니다.

만약 javac/java -version 둘중 하나라도 나오지 않는다면 과정을 다시 따라해보세요.




1. java 소스 작성--> 프로그램 실행까지의 순서

1. java 소스 (hello.java)  javac.exe 를 이용하여 확장자가 class 로 변경

--> java 컴파일러 (javac.exe)   -->바이트 코드 파일 (hello.class) 

--> java.exe 구동 --> 기계어 --> 실행



이클립스가 아닌 메모장 장을 이용해서 java 프로그램을 실행 시킨다.

1.메모장에 기본 java 구조를 입력한다. 


2.그리고 파일을 저장 한 후

cmd 창을 실행시켜  아래와 같이 cd (파일을 저장 한 경로를 입력 해 준다.)

그리고 dir 명령어를 실행한다.


3.그런 후에 javac.exe (파일 이름) 을 하여 컴파일을 시켜준다(그럼 javaWorld.java  파일 밑에

 javaWorld.class 파일이 생겼을 겁니다.)

4. java (파일이름) 을 실행하게 되면 메모장에 적어놓았던 

helloWorld 가 실행 될 것입니다.


여기까지가 이클립스를 사용하지 않고 java 파일을 실행하는 방법입니다.



가비지 컬렉터(Gabage Collector)

프로그램 실행에 필요한 메모리를 Gabage Collector 가 자동으로 관리합니다.

C계열 프로그램

- 개발자가 직접 메모리 관리를 해야합니다.

-만약 메모리 관리를 잘못할 경우 메모리 누수가 발생하고 타 프로그램 동작이 멈출 수 있습니다.


JAVA 프로그램

- 개발자가 메모리에 접근할 수 없습니다.

- 따라서 개발자는 메모리를 관리 할 수 없고, 가비지 컬렉터가 불필요한 메모리를 회수해서 메모리 최적화를 합니다.





'Java' 카테고리의 다른 글

맵 Key,Value 값 확인하기  (0) 2021.01.04
변수  (0) 2018.09.11
10. 열번째 개발 공부  (0) 2018.03.28
9. 아홉번째 개발 공부  (0) 2018.03.28
8. 여덞번째 개발공부  (0) 2018.03.28

안녕하세요 . 밋밋한 개발자입니다. 오늘은제가 제게 도움을 주고있는분덕분에 게시판을 만들어보기로했습니다.


목적을말씀드리자만 결과물보다는 과정을 중요시생각하면서 작성할 것입니다.


 잘알지도 못하는 단어, 구조등을 copy & paste 하게된다면 실력은 향상하지않을것입니다.


그러면 100%중에서 30~40%의 효율밖에 얻지 못할것 입니다.


무조건 모르는게있으면 검색하고 찾아보세요 ,


잘안되는게있다면 잠시멈춰두고 이해하고 넘어가세요 그렇다고 한문제로 1주일이상 시간을 지체하고있다면 그건넘어가고 나중에 다시해보세요 ^^


결과가 중요하지않다는게아닙니다. 단지 과정을 잘이해하고 숙지하고있다면 결과는 좋을수 밖에 없다는 말씀을드리고싶습니다.


일단 첫번째로 Database 컬름으로 다음과 같이 만들어주세요 (데이터베이스는 mariaDB를 바탕으로 하고있습니다)



BRDNO -- 글번호

BRDTITLE -- 제목

BRDWRITER -- 작성자

BRDMEMO -- 내용

BRDDATE -- 작성일자


작성자(BRDWRITER,), 글제목(BRDTITLE), 내용(BRDMEMO) 사용자가 입력하는 곳이다.

글번호는 MariaDB가 자동으로 고유값(auto_increment) 을 적용했습니다.

앞으로 이글번호를 이용하여 데이터를 등록, 수정 , 삭제 를 할것입니다.




이렇게 테이블을 생성하였으면 다시 프로젝트로 돌아가서 boardVO 클래스르 생성합니다.


ps. 테이블 필드명과 boardVO클래스변수명은 동일하게 해주어야 합니다.


-boardVO

----

package board;


public class boardVO {

private String brdno, brdtitle, brdwriter, brdmemo, brddate;

public String getBrdno() {

return brdno;

}

public void setBrdno (String brdno) {

this.brdno = brdno;

}


public String getBrdtitle() {

return brdtitle;

}


public void setBrdtitle(String brdtitle) {

this.brdtitle = brdtitle;

}


public String getBrdwriter() {

return brdwriter;

}


public void setBrdwriter(String brdwriter) {

this.brdwriter = brdwriter;

}


public String getBrdmemo() {

return brdmemo;

}


public void setBrdmemo(String brdmemo) {

this.brdmemo = brdmemo;

}


public String getBrddate() {

return brddate;

}


public void setBrddate(String brddate) {

this.brddate = brddate;

}

}

----

위와같이 작성해준다. 

getters 와 setters 를 사용하면 자동적으로 입력되지만 우리는 하나하나 작성해보자. (실력이있는사람들은 해도 괜찮습니다.)


이해하고 넘어갔으면 좋겠습니다.


데이터베이스도설치해 보시고 public, private 등 접근제한자를 검색해보시고 모르는게있다면 무엇이든 검색해보시기바랍니다.



context-mvc.xml


- context-mvc.xml 의 역할은 무엇일까


--> DispatcherServlet 에게 아래의 정보를 제공한다,


사용자의 요청을 처리할 수 있는 Controller 목록과 사용자에게 보여줄 화면 url 을 만드는 ViewResolver




Controller


- Controller 의 역할은 무엇인까

- DispatcherServlet에 의해 호출되어 사용자의 Requset를 전달받고, 해당요청의 비즈니스 처리를 담당하는 서비스 객체를

Spring으로부터 주입받아서, 그 객체에 처리를 위임하고, 처리결과와 결과화면에 대한 정보를

 DispatcherServlet 에게 반환한다.


쉽게말해서 


1.한식 접수계에서는 주문을 검증하고, 한식 주방에 주문 

2.한식 요리가 나오면 배송지 태그 부착


1. 일식 접수계에서 주문을 검증하고, 일식 주방에 주문

2. 일식 요리가 나오면 배송지 태그 부착





@Controller, @RequestMapping, @Autowired

서비스 처리 결과를 Model에 담으면, 

컨트롤러 클래스의 RequestMapping값(/member) 과 핸들러 메서드의 RequestMapping 값(/list)을 기준으로, 

DisptcherServlet 이 viewResolver를 통해 화면 URL 생성






설정은 어디에다가할까 ?


-DispatcherServlet 이 참조하는 XML(여기에서는 context-mvc.xml) 에 설정



'Spring' 카테고리의 다른 글

mvc 흐름 이해하기  (0) 2018.03.30

SpringMVC 쓰는 웹 애플리케이션에서는 대략 9명이 등장해서 혼란스럽게만든다.


첫번째 알아보자.



DispatcherServlet 이란 ?


- 웹 애플리케이션의 최전방에서 사용자의 요청을 접수하여 URL 을 기준으로 요청을 처리할 Controller를 정해진 XML 에서 찾고

그 Controller 에 처리를 위임하고 결과를 받아서 사용자에게 처리 결과가 담긴 화면을 제공한다.


쉽게말하면 ARS ??

누가 어떤일을 할 줄 아는지만 알고 있다.

그래서 어떤일이 생기면 그거 잘 하는 놈에게 전달한다,

일식주문이면 일식 담당 접수계에게,

중식 주문이면 중식 담당 접수계에게 연결한다.






설정은 web.xml 에 되어있습니다.

정해진 XML(여기서는 context-mvc.xml) 의 정보활용

사용자 요청을 처리할 Controller 목록과

사용자에게 보여줄 화면을 찾는 VIewResolver

직접 코딩하지 않고 Spring에서 제공하는 Selvlet 재사용한다.



'Spring' 카테고리의 다른 글

2.SpringMVC 패턴 이해하기  (0) 2018.03.30

간단하게 jstl 태그 2개만알아보겠습니다.

C:forEach

<c:forEach var =”I” items=”${members}” begin=”0” varStatus=”status” end =”5”>
    Index : ${status.index} /
    count : ${status.count} <br>
    name : ${i.name} <br>
    email : ${i.email}<br>
</c:forEach>

forEach 문은 Var, items, begin, varStatus, end.. 총 5개의 속성들이 있습니다.

i라는 변수는 반복문이 한번 수행 될때마다 바뀌는변수가 되겠다.

그리고 items 라는 속성은 컬렉션 객체가 된다.

예를 간단히 들자면 리스트, 배열정도가 있겠다.

그리고 begin 은 시작값을 나타냅니다.

varStatus 은 반복문의 상태값을 가지는 변수인데 쉽게말해

forEach문의 상태정보를 담고있는 변수라고 알고있으면 되겠다,


C:forTokens
<c:forTokens>
<c:forTokens items = “123-456-789” delims =”-” var =”sel”>
   ${sel}<br>
</c:forTokens>

여기서 items 은 123-456-789라고했는데 일종의 소스이다

그리고 중요한건 delims 라는 건데 얘는 일종의 약속이다.

여기선 – 이 등장할때마다 띄어쓰기를 해달라고 요청을 했다.
그결과는 sel 라는 변수로 지정했다.

'JSTL' 카테고리의 다른 글

JSTL 개행  (0) 2021.01.04

+ Recent posts