2017년 3월 22일 수요일

JSP 변수를 자바스크립트(JavaScript)에서 사용하는 법





JSP로 웹 프로젝트를 개발하다 보면 JSP의 변수를 JavaScript에서 사용해야 할 일이 종종발생한다.
간단한 JSP 변수로부터 ArrayList의 값을 자바스크립트에서 사용해야 할 경우도 있다.
아래 코드는 JSP의 변수를 JavaScript에서 사용하는 간단한 코드이다.

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- 
아래 코드는 JSP의 변수를 자바스크립트에서 사용하는 방법에 대한 코드이다.
 -->
<script type="text/javascript">
<%
ArrayList<String> arr = new ArrayList<String>();
arr.add(0, "첫 번째");
arr.add(1, "두 번째");
arr.add(2, "세 번째");
arr.add(3, "네 번째");
arr.add(4, "다섯 번째");
for(int i=0; i<5; i++)
{
%>
//alert("i: "+ i); //이런 식으로는 다음 에러 발생 Uncaught ReferenceError: i is not defined 
//이런식으로 해야 정상적으로 JSP 변수의 값을 자바스크립트에서 사용 가능
//JSP쪽 변수 i의 값을 자바스크립트에서 다음과 같이 사용한다.
alert("i~: " + <%= i %>); 
//아래 코드의 경우는 다음 에러 발생. Uncaught SyntaxError: missing ) after argument list
//따옴표로 감싸야한다. 왜냐하면 데이터가 문자열이기 때문이다.
//console.log("arr : ", <%= arr.get(i) %>); 
console.log("arr[", <%= i %>, "] ⇒ ", '<%= arr.get(i) %>'); //가능
//위 console.log()에서 다음과 같이 출력된다.
//arr[ 0 ] ⇒  첫 번째
//arr[ 1 ] ⇒  두 번째
//arr[ 2 ] ⇒  세 번째
//arr[ 3 ] ⇒  네 번째
//arr[ 4 ] ⇒  다섯 번째
<%
}
%>

</script>
</body>
</html>

2017년 3월 9일 목요일

mysqldump시 unknown variable 'symbolic-links=0'라는 에러에 대해






centos 7.0하에서 mysqldump로 DB를 백업받고자 다음과 같이 하면

# mysqldump -u사용자id -p DB명 > 백업할_파일명
ex) # mysqldump -uuserid -p testDB > mybackup.sql
과 같이하면 아래와 같은 에러가 발생하는 경우가 있다.

mysqldump: unknown variable 'symbolic-links=0'

해법은 /etc 디렉토리 아래에 있는 my.cnf 파일을 vi로 열어서

symbolic-links=0

를 주석처리하면 된다.

그런 다음 mysqld를 restart해 줘야 한다.

# service mysqld restart

혹 위의 작업을 했는데 mysqldump 명령시 다음과 같은 에러가 발생한다면

mysqldump: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'

역시 my.cnf 파일에서 아래를 주석처리하면 된다.

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

그런데 이상의 항목을 주석처리하고 db를 dump 후에는 원상복귀하는 것이 보안상 좋을것이다.

Servlet에서 로그 출력 및 확인하기





Java, JSP로 웹 프로그래밍을 하다 보면 로그를 출력해서 데이터의 흐름을 봐야할 때가 있다.
로그를 출력하는 것이야 모든 프로그램들이 다 기능을 제공해 준다.

JSP의 경우는 JavaScript의 alert()이나 console.log()를 이용해서 웹브라우저에서 확인할수가 있으나
Servlet 상에서 변수의 값을 로그로 출력할경우는 alert()이나 console.log()를 사용하기가 어려워진다.

Servlet의 경우는 보통 System.out.println()과 같은 방식으로 로그를 확인할수 있겠는데
local상에서 개발할 때는 물론 이클립스의 경우 로그를 볼수가 있다.
그러나 웹 서버에서 돌아가는 Servlet에서 System.out.println()의 결과를 어떻게 확인해야할지 난감해진다.
그런데 의외로 간단하게 이 문제를 해결할수 있다.

tomcat이 설치되어 있는 디렉토리의 하위에 logs라는 디렉토리가 있고 logs 디렉토리에는
많은 종류의 로그 파일들이 저장되어 있다.
이 디렉토리에 가면 catalina.out이라는 로그 파일이 있는데 여기에 System.out.println()에서 출력한 값들이 저장되어 있다.
이 파일을 vi로 열어서 확인하면 웹 서버 상에서 돌아가는 Servlet의 로그를 확인할수가 있다.