반응형

* JSTL 이란

jsp 표준 태그 라이브러리.

연산이나 조건문이나 반복문인 if문, for문, DB를 편하게 처리할 수 있게 하는 태그 라이브러리.

내가 사용해본 라이브러리는 크게 세가지가 있음. core,function,formatting.

 

1. JSTL core 라이브러리

JSP의 헤더에 추가한다.

<% @taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

 

태그명 설명 예시 비고
<c:set> 변수를 세팅하여 값을 할당하거나
javaBean의 값을 변경할수 있음
<c:set var="myData" value="쩝" />

<c:set target="${myList}" property="content" value="어쩌구 저쩌구" />
 
<c:out> 값을 출력함 <c:out value="${myList.content}" />

<c:out value="<script type='text/javascript'>alert(123);</script>" escapeXml="true"/>
c:out에는 escapeXml 속성이 있으며 기본값이 true로, 문자를 텍스트로 그대로 내보낸다. false로 설정하는 경우 특문 escape가 안 되어 보안에 취약할 수 있음
<c:if> if문 <c:if test="${name eq '포도'}" >
 ${name}은 보라색
</c:if>
 
<c:choose>
<c:when>
<c:otherwise>
switch문과 같은 기능으로 여러 조건 중 하나를 선택 <c:choose>
   <c:when test="${number eq '1'}"> 
   </c:when>
   <c:when test="${number eq '2'}">
   </c:when>
   <c:otherwise>
   </c:otherwise>
</c:choose>
 
<c:foreach> 반복문 <c:forEach var="board" items="${boardList}">
    <c:out value="${board.title}" />
</c:forEach>
 

 


2. JSTL formatting 라이브러리

JSP의 헤더에 추가한다.

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

 

태그명 설명 예시
parseDate 문자열을 Date 타입으로 변경 <fmt:parseDate var="today" value="20230717" pattern="yyyyMMdd" />
formatDate  Date 타입을 문자열로 변경 <fmt:formatDate var="now_date" value="${now_date}" pattern="yyyyMMdd"/>

 


3. JSTL function 라이브러리

JSP의 헤더에 추가한다.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

 

태그명 설명 예시
fn:length 문자열 길이 <c:when test="${fn:length(myArray) > 0}">
fn:contains 문자열 포함여부판단 <c:if test="${fn:contains(arrayList, 'AA')}">

 

반응형

'코딩 관련 > JSP 관련' 카테고리의 다른 글

[JSP] EL 안에 EL 넣기  (0) 2020.09.24
[JSP] JSP 주석 관련 <!-- 와 <%--  (0) 2020.09.17
반응형

varbinary은(는) text과(와) 호환되지 않습니다.

내가 insert하려는 컬럼중에 text 타입인 컬럼이 있는데..

NULL이 가능한 컬럼인데.. NULL을 넣으려하니까 에러가난다...

 

 

NULL이 binary 형태의 값으로 변환되어서 들어가려는 모양이다..

 

해결) 그래서 null값이 아니라 ''로 넣음

 

반응형
반응형

환경) 백엔드와 프론트엔드가 분리되어있음

 

첫번째방법

PrintWriter 를 사용하여 script를 뿌려준다. javascript 소스를 텍스트로 넣으면 된다.

location.href='리다이렉트 시킬 주소'

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response,
            @RequestParam Map<String, Object> paramMap,Model model) throws Exception {
        PrintWriter out = new PrintWriter(response.getWriter());
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<meta charset=\"UTF-8\" />");
        out.println("<title>TITLE입니다.</title>");
        out.println("<head>");
        out.println("</head>");
        out.println("<body>");
        out.println("<script type='text/javascript'>");
        out.println("alert('경고~~');");
        out.println("location.href='https://www.google.com';");
        out.println("</script>");
        out.println("</body>");
        out.println("</html>");
        return null;
    }

 

 

두번째방법

HTTP 응답 상태 코드 301 Moved Permanently를 사용한다.

ResponseEntity를 리턴해주는 경우 상태코드를 Moved Permanently로 설정하고 

헤더에 리다이렉트시킬 url을 적어준다. 

@RequestMapping(value = "/redirect2")
    public ResponseEntity redirect2(@RequestBody Map<String, Object> paramMap)
            throws Exception {
        return ResponseEntity
                .status(HttpStatus.MOVED_PERMANENTLY)
                .contentType(MediaType.APPLICATION_JSON)
                .header("location", "http://localhost:8081/redirect2")
                .body("message");
    
}

 

세번째방법

서버페이지를 리턴해주고 서버페이지의 script에서 location.href에 리다이렉트 시킬 url을 적어준다.

@RequestMapping(value = "/redirect1")
    public void redirect1(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return "serverPage/index";
    }
<script type="text/javascript">
    parent.parent.location.href="[[${clientUrl}]]";
</script>
반응형
반응형

오류내용 ▼

기본 클래스 ''를 찾거나 로드할 수 없습니다.

 

 

1. java [java파일] 명령어를 실행하면 컴파일이 된다.

java MyClass.java

class파일이 현재 디렉토리에 생긴다

 

2. javac [클래스파일]  명령어로 클래스파일을 실행한다. (.class를 붙이지 말고..)

javac MyClass

나는 MyClass.class라고 확장자를 붙여 실행하려고 하니까 저 에러가 떴었음.

반응형
반응형

증상

- 잘 되던 무선마우스&키보드가 인식이 안 됨(MK450사용)

- 키보드를 누를 때 NUM 이 굉장히 짧게 짧게 깜빡임

- 마우스를 ON하면 센서가 짧게 깜빡이고 꺼짐.

 

시도

- 건전지 바꿔보아도 똑같음 

- 전날까진 정상적으로 작동했으므로 키보드/마우스 문제는 아닌 것 같았음.

 

진단

https://www.qsenn.co.kr/article/file-download/5/1194/#none

 

QSENN M1000 무선 마우스 리시버 주파수 연결 프로그램 및 펌웨어FILE DOWNLOAD - (주)큐센 공식 홈페이

DOWNROAD GLOBAL BUSINESS 현재 위치 DOWNROAD FILE DOWNROAD

www.qsenn.co.kr

큐센에서 알려준대로 해봤는데 초록불이 안들어옴. 

리시버를 뺐다 다시 꼽아도 PC에서 USB 인식하는 소리가 안 남 -> USB 리시버 고장이었다

 

해결

큐센 고객센터(070-4218-7026)로 전화를 때려서 무선마우스/키보드 USB리시버 구입을 요청했음. 흰색 검은색 선택지를 주셨다.

리시버+택배비 = 3500원을 계좌송금하였음.

배송받은 리시버를 꼽고 진단 프로그램을 돌리니 USB리시버 인식 잘 됨.

마우스의 경우 우클릭+휠을 6~7초정도 꾹 눌렀다가 떼면 센서에 빨간불이 쭉 들어온다. 그럼 성공.

키보드의 경우 ESC+Q를 꾹 눌렀다가 떼면 NUM 센서가 깜빡이는데 그때 NUM키를 몇번 눌러주면 더이상 깜빡이지 않고 연결 되었음을 알 수 있다.. 

키보드 연결을 아무리 해봐도 안 되길래 본체에 꼽아놓은 리시버 코앞에 키보드를 갖다대고 시도했더니 원큐에 됐다.

반응형
반응형

checkbox 여러개의 값을 넘겨서 쿼리에 그 값들을 이용하려고 함.

1. HTML 

form submit시에 check된 value들만 전달됨.

<form name="f" method="get" action="/checkMenu">
<input type="checkbox" name="menu" value="hamburger">
<input type="checkbox" name="menu" value="pizza">
<input type="checkbox" name="menu" value="spagetti">
<input type="checkbox" name="menu" value="french fries">

<button type="submit">

 

2. VO

checkbox의 값들을 담을 변수는 배열로 만들어준다.

public class menuVO {
	private String[] menus;
}

 

3. Controller

request.getParameterValues로 받았다.

@RequestMapping
public ModelAndView checkMenu(HttpServletRequest request, HttpServletResponse response) throws Exception {
	String[] menus = request.getParameterValues("menus");
}

 

4. 쿼리파일 (xml)

iterate를 사용했다.

property = 변수명

<select id="getMenuInfo" parameterClass="menuVO" resultClass="orderVO">
	SELECT MENU_CODE, MENU_PRICE FROM MY_MENU_TABLE
	WHERE MENU_NAME IN
	<iterate property ="menus" open="(" close=")" conjunction=",">
	#menus[]#
	</iterate>
</select>
반응형
반응형

친애하는 숙녀 신사 여러분

7편의 단편으로 이루어져 있음

한 번쯤은 읽어볼만 한 것 같다!

 

1. come com Kan!

문학의 거장 동상이 말을 걸어오며 소설가로서 성장하는 이야기.

동상이 말을 걸어온다는 설정이 재미있었으나

그 외에의 별로 재밌는 요소는 없었음

 

2. 둔치 호텔에서 만나요

자신이 아직도 굉장한 셀러브리티라고 생각하는 노작가가 자신을 극진히 대접해 온 한 호텔에 방문하면서 일어나는 이야기.
본인이 다른 젊은 여자들에게 플러팅하는게 자기 입장에서는 사연있는 로맨스지만 
상대방 여자에게는 그저 추접스러운 노인네가 들러붙는 것이라는 사실을 깨닫게 하는 장면이 있다. 

고전문학이나 어떤 소설들을 보면 이야기 속에서 주인공 남성의 여성편력을 
주인공만의 심오한 사연, 혹은 주인공의 방황/일탈, 혹은 주인공의 성장에 필요한 매개체 쯤으로 제법 잘 포장하곤 하는데, 
그걸 포장을 다 까버리고 현실적으로 민낯을 밝혀버린 느낌이었다.
사실 별 거 아닌 짧은 대사에 불과한 장면이라고 할 수 있지만 제법 통쾌했음.. 

 

3. 용사 다케루와 마법 나라의 공주

본인은 여성의 편이라고 믿으며 ‘여성전용칸’에 들어가 시위를 하는 주인공. 주인공이 들이미는 카메라 앞에서 승객들은 겁에 질린다.

”저는 여성 편입니다. 이 칸은 일본의 남녀평등을 가로막고 있습니다! 
그 사실을 알리기 위해 열차 내부를 촬영하겠습니다! 이건 도촬이 아닙니다!“ 

”지금 당장 나가게. 당신 때문에 다들 무서워하고 있잖은가.“ 

이 장면은 주인공같은 사람들이 여성전용칸이 만들어지게 된 이유라고 보여져서 오히려 웃겼다….

주인공은 그러던 중 갑자기 환각에 빠지게 되는데, 본인은 괴수를 물리치고 공주를 구해야하는 용사가 된다.

여성들의 사회생활을 용사의 모험에 빗대어 그려내고 있는데 비유가 사실 그럴듯 하지 않아서 
매끄럽게  연결이 잘 안되어 이해가 안 갔다. 
물론 몇몇 대사는 굉장히 현실적이라 바로 알아챌 수 있었다.

“저는 주어진 일을 다 해내고 있습니다! 그런데 왜 외모 가지고 이러쿵저러쿵하는 말까지 들어야 합니까?”

여성 정치인을 비롯해 화제가 된 여성들에 대한 평가, 혹은 비난에는 겉모습과 외모에 대한 이야기가 빠지지 않는다는 점이다.  
그 점을 꼬집었다는 게 기억에 남았다. 

하지만 ‘여성전용칸’ 과 주인공의 환각을 어떻게 연결시켜야 하나…
무슨 관련이 있는지 잘 모르겠다… 
'용사'의 이야기는 대충 느낌은 알겠는데 '여성전용칸'이 이야기속에 등장한 이유는 잘 모르겠다. 
사실 주인공이 표방했던 '나는 여성의 편'은 그저 말뿐인 위선이었으며 
주인공이 '용사'의 일을 겪고 진심으로 여성의 입장에서 생각하게 되었다는 것을 표현하려는 장치였으려나..?
잘 모르겠다.

4. 아기 띠와 불륜 초밥

사실 이 단편이 이 책을 사게 된 계기임. 광고에서 이 이야기를 봤는데 제법 흥미로웠음.

불륜 커플들이 모이기로 유명한 한 초밥집에 모유수유를 졸업한 아기를 데리고 한 여자가 식사를 하러 온다. 
그 아기엄마는 제법 미식에 대한 견문이 넓어 보이고 붙임성도 좋아 떠들썩하게 식사를 하는데 그런 여자를 주변 남자들이 못마땅하게 본다.

'마사미가 경멸해야 할 사람은 그 여성이 아니라, 어쩌면 옆에 있는 남자가 아닐까. 
그들이 이렇게 다림질이 잘된 셔츠를 입고 젊은 여자와 고급 초밥을 먹는 사이에, 
그 등 뒤에는 집안일과 육아에 쫓기는 여자들이 있다는 것이다. 
이 가게의 분위기가 묘하게 달라진 것은 본래는 숨어야 할 존재가 갑작스럽게 등장했기 때문이다.'

이 문장으로 이야기가 말하고자 하는 바가 축약이 된다.

내가 집 밖에서 좋은 옷을 입고 좋은 음식을 먹고 여러가지를 배우고 사회 생활을 맘 편하게 하는데에는 
가정의 대소사 및 집안일을 처리하는 사람의 기여가 굉장히 크다는 것.. 
하지만 정작 그 집안일을 맡은 사람은 사회 생활을 할 기회를 잃어버리고 지워진 존재가 된다는 것...

그런 것을 이야기에 잘 녹여낸 것 같다는 생각이 든다.

하지만 쓸데없이 너무 자세한 식사 재료와 술 등에 대한 묘사로 인해 스토리가 산만해져서 
그 부분은 좀 훌훌 넘기긴 했다. 
그래도 그렇게 자세한 묘사를 함으로서 아기 엄마가 그만큼 미식에 제법 식견이 있음을 충분히 느낄 수 있었다.

근데 음식점을 나서는 마지막 장면에서 여자들이 갑자기 함께 길을 나서는 건 너무 개연성도 없고 무슨..ㅋㅋㅋ 
너무 뜬금없고 인위적이어서 좀 짜쳤음.

 

5. 서 있으면 시아버지라도 이용해라

이혼한 남편의 아버지(전 시아버지)가 본인을 거둬달라고 해서 같이 지내게 된 이야기. 
애초에 남편과 외도로 이혼했는데 시아버지가 그런 아들이랑은 살지 못하겠다고 뛰쳐나온 것부터가 현실성이 뒤지게 없다 ㅋㅋㅋ 
근데 뭐 소설이니까 뭐~ 

모든 집안일과 육아를 책임져주는 조건으로 주인공은 시아버지를 거둬주게 되고, 
그런 시아버지로 인해 가사 및 육아에서 해방되는 이야기이다.

'누구보다 일찍 일어나서 엷게 화장을 하고 정원에 물을 준 다음, 
남편이 손수 느긋하게 내리는 커피에 맞춰 토스트와 햄에그를, 아들의 취향인 일식 조식을 만든다. 
아들을 회사에 출근시키면 포메라니안 강아지인 오찻피를 산책시키고 장을 봐 온 뒤에는 
이웃과 교류, 집 청소, 남편을 위해 또 점심을 차리고 다시 정원 손질, 청소, 저녁 준비..... 
솔직히 경쟁 카페가 많은 사무실 밀집 지역의 카페에서 점장을 했을 무렵의 나보다 시어머니의 루틴이 훨씬 힘들어 보였다.'


'밖에서 돌아오면 어김없이 음식이 준비되어 있고 에니시가 아무 탈 없이 잘 있다. 
그것만으로 경직되었던 몸의 중심이 스르르 녹는 것을 알 수 있었다.' 

사회생활에 기력을 다 빨리고 집에 돌아왔을 때 가사일과 육아에 신경을 안 써도 된다는 것이 얼마나 감사한 일인지 상기시켜주었다.

 

 

반응형

'' 카테고리의 다른 글

작은 땅의 야수들  (0) 2024.10.21
인간의 법정 - 조광희  (0) 2022.08.27
완전한 행복 - 정유정  (0) 2022.05.07
매일 인문학 공부 - 김종원  (2) 2021.11.03
포르노랜드 - 게일 다인스  (0) 2021.10.14
반응형

 

 

위치 : 신당동 250-15(서울 중구 퇴계로 373)

가게 전체적인 분위기는 스테이크집이라기 보다 약간 고기집과 스테이크집 그 사이 어딘가...

기본 반찬. 있을거 다 있고 진짜 다맛있음... 

샐러드는 넘 쓰고 시고해서 거의 안먹음.

 

한우 투뿔 티본 2인분. 2명이서 순삭가능하다.

직원분이 저 팬에 익힘정도를 취향에 맞춰 구워주심. 고기 진짜 맛있었다. 간이 잘 되어있음. ㅋㅋ 존맛탱 

매쉬드 포테이토는 버터맛+치즈맛이라 정말 고소하고 부드럽고 너무 맛있었음.

 

고기 다 굽고 나서 고기 기름 남은 팬에 부어주는 한우 된장 술밥.

고기기름이 들어가서 무척 맛있다 ㅋㅋㅋ 근데 좀 짬.

 

기름진 거 먹어서 매운게 땡겨서 시킨 해물짬뽕. 많이 맵지만 정말 맛있다. 불맛이 나는 짬뽕.

면이 라멘 면처럼 가늘어서 좋았다.  근데 너무매워

 

메뉴판~

 

반응형
반응형

대전 오면 꼭 먹어야 하는 오씨칼국수... 

물총(동죽)조개랑 칼국수 하는 집이다. 진짜진짜 맛있음

* 삼성동이 본점이며 도룡점만 찐 분점임. 그 외에는 모두 이름만 같고 다른 가게라고 함. 

 

* 오전 11시~ 오후 9시까지 영업

* 매주 월요일 휴일

삼성동 본점입니다~

 

대기실이 따로 있나봄. 

주차장은 따로 없음.

 

(왼)물총 13,000 (오) 칼국수 8,000

2명이서 칼국수1 물총1 시켰다.

진짜 국물 너무 시원하고.. 양도 많고 .. 

또먹고싶당..

물총조개 졸라 야들야들 쫄깃하고 국물도 시원하니 꼭 먹어야한다.

 

반응형
반응형

https://www.acmicpc.net/problem/9012

import java.util.Scanner;
import java.util.Stack;

public class MyClass {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
        int testcase = Integer.parseInt(sc.nextLine()); //case 수

	for(int i = 1; i <= testcase ; i++){
            String line = sc.nextLine();
            Stack<Character> stack = new Stack<>();
                for(int c = 0;c<line.length();c++){
                    //여는 괄호
                    if('(' == line.charAt(c)){
                       stack.push(line.charAt(c));
                    }else{
                    //닫는괄호
                        if(stack.empty()){
                            System.out.println("NO");
                            break;
                        }else{
                            stack.pop();
                        }
                       
                    }
                    
                    if(c==line.length()-1){
                        if (stack.empty()) {
			                System.out.println("YES");
	                   	}else{
	                   	    System.out.println("NO");
	                   	}
                    }
                    
                }
              
        }
    }
}

 

* 학습내용

1. String과 char의 비교

- char은 ''를 사용

- String은 ""를 사용

- str.equals(String.valueOf(ch))

- 그냥 '' == ch 해서 char끼리 비교하자...

 

2. Stack 타입 변수 사용

- 스택 선언하기 :  Stack<> stack = new Stack<>();

- push(), pop(), empty()

 

3. 메모리 사용 영역

JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 세부 영역으로 구분해서 사용한다.

1) Method 영역

- 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류하여 저장한다.

2) Heap 영역

- 객체와 배열이 생성되는 영역

- 생성된 객체/배열을 참조하는 변수나 필드가 없다면 Garbage Collector를 실행시켜 힙 영역에서 자동으로 제거한다.

3) JVM Stack 영역

- 각 스레드가 시작될 때 할당된다.

- 메소드를 호출할 때마다 프레임(메소드의 변수 및 기타 부가정보로 이루어짐)을 push 하고 메소드가 종료되면 pop 하는 동작을 수행함.

- 프레임 내부에는 로컬 변수 스택이 있는데, 최초로 변수에 값이 저장될 때 생성됨.

- 기본 타입 변수는 스택영역에 직접 값을 가짐

- 참조 타입 변수는 값이 아니라 객체 주소를 가짐.

반응형

+ Recent posts