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>


JSP에서 MySQL 사용하기


JSP에서는 보통 Oracle DB와 연동을 하는 경우가 많은데 

MySQL과 연동하는 경우도 있다. 이를 위한 설정 작업에 대해서이다.


(1) APM을 설치하는 방식

Apache, PHP, MySQL을 설치한 경우에도 JSP에서 간단히 MySQL과 연동할수 있다.

APM은 설치하기가 간단하기 때문에 이 방식이 편리할수도 있다.


 ① MySQL용 JDBC 드라이버 설치

APM을 통해서 MySQL이 설치가 되었다면 JSP에서 MySQL에 접속하기 위해서는 JDBC라는 드라이버를 설치해야 한다. 이를 설치하기 위해서는


http://www.mysql.com/ ⇒ Downloads 탭 ⇒ Community라는 하위 탭 ⇒ 우측의 MySQL Connectors 항목 클릭 ⇒ Connector/J  ⇒ Connector/J 5.1.40 하위의 ZIP 파일 다운로드 ⇒ 압축을 푼 후 mysql-connector-java-5.1.40-bin.jar를 Java가 설치된 폴더 중 jre7/lib/ext 폴더에 복사해 넣는다. 그리고 JSP 프로젝트의 WEB-INF/lib 폴더에도 복사해 넣는다.

여기까지가 되면 JSP에서 MySQL을 사용할 준비가 된것이다.


※ MySQL Connectors가 각 언어별(C++, .Net, Python...) 접속 드라이버를 제공하는데 그 중에서 Connector/J가 Java를 위한 연결(접속) 드라이버이다. 즉 JDBC 라이브러리이다.


(2) MySQL을 독립적으로 설치하기

http://www.mysql.com/ ⇒ Downloads 탭 ⇒ Community라는 하위 탭 ⇒ 우측의 MySQL Community Server 클릭 ⇒ Download MySQL Community Server로 이동 ⇒ MySQL Community Server 5.7.17에대한 다운로드들 중 ZIP 압축파일이 아닌 MSI 형태의 Installer를 다운로드 할 것 즉 Windows (x86, 32-bit), MSI Installer를 다운로드 할 것  ⇒ 설치


※ 설치 방법은 좀 복잡한데 다음 사이트 참조

http://withcoding.com/26


(3) JSP에서 사용하기

<%@page import="java.sql.ResultSet"%>

<%@page import="java.sql.Statement"%>

<%@page import="java.sql.Connection"%>

<%@page import="java.sql.DriverManager"%>


... 중 략 ...

<%

Class.forName("com.mysql.jdbc.Driver");


/*

Connection java.sql.DriverManager.getConnection(String url, String user, String password) throws SQLException

Parameters:

url - a database url of the form jdbc:subprotocol:subname

user - the database user on whose behalf the connection is being made

password - the user's password

Returns:

a connection to the URL

Throws:

SQLException - if a database access error occurs

*/

//아래에서 world는 DB 이름이다.

//2번째 매개인자 aabb : world라는 DB의 계정 id

//3번째 매개인자 ccee : world라는 DB의 계정 비번

Connection conn = null;

  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/world?useUnicode=true&characterEncoding=utf8", "aabb", "ccee");

String qry = "select Name, Population, CountryCode from city";

Statement stmt = null;

ResultSet rt = null;

if (conn != null){

out.println("world DB로 연결 성공<br/>");

stmt = conn.createStatement();

rt = stmt.executeQuery(qry);

%>

<table border="1" cellspacing="0" cellpadding="5" valign="middle">

<tr>

<th>국가명</th>

<th>인 구</th>

<th>국가코드</th>

</tr>

<%

  while(rt.next())

{

%>

<tr>

<td><%= rt.getString("Name") %></td>

<td><%= rt.getString("Population") %> 명</td>

<td><%= rt.getString("CountryCode") %></td>

<tr>

<%

} //while 

%>


</table>

<%

conn.close();

out.println("DB close~<br/>");

} else {

out.println("world DB로 연결 실패<br/>");

}

%>



Oracle DB 접속 시 ORA-12560: TNS:protocol adapter error 발생 시


1) DOS 창에서 sqlplus로 접속시 다음과 같은 에러 발생시

ORA-12560: TNS:protocol adapter error




2) Oracle SQL developer로 접속시 다음과 같은 에러 발생시

IO 오류: The Network Adapter could not establish the connection


해갤책은

“내 컴퓨터 - 관리 - 서비스 및 응용프로그램 - 서비스”에서 Oracle 관련 서비스들이 실행이 되지 않아서의 문제이다.

아래와 같이 최소한 3개의 서비스 프로그램이 시작 상태이어야 한다.

  • OracleServiceXE 

  • OracleXEClrAgent 

  • OracleXETNSListener



'Oracle Database' 카테고리의 다른 글

Oracle의 ROLLUP 함수의 개념  (0) 2020.07.16
오라클에서 Primary Key 변경하기  (0) 2020.05.12


JSP의 자바빈(JavaBeans) 사용시 <jsp:setProperty ... property="*"에 대해서


jsp:setProperty에서 property="*"는 개발자들의 손가락의 수고를 많이 덜어주는 유용한 기능이다.

JavaBeans가 다음과 같이 구성되어 있다고 할때


package com.joe.test;


public class Student {

private String sName;

private int sAge;

private int sGrade;

private int sID;

public Student() {

}


public String getsName() {

return sName;

}


public void setsName(String sName) {

this.sName = sName;

}


... 나머지는 생략 ...

}



JSP에서 자바빈 사용시 원래는 다음과 같은 방식이다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<jsp:useBean id="myStudent" class="com.joe.test.Student" scope="page"/>  


... 중략 ...


<jsp:setProperty name="myStudent" property="sName" value="고길동"/>

<jsp:setProperty name="myStudent" property="sAge" value="10" />

<jsp:setProperty name="myStudent" property="sGrade" value="3"/>

<jsp:setProperty name="myStudent" property="sID" value="12345"/>


그런데 만일 폼으로부터 JSP가 JavaBeans를 이용해서 값을 넘겨 받는다면 이런식으로 처리된다.

form의 내용이 만일 다음과 같다고 할때


<form action="showStudent.jsp" method="post">

이름 : <input type="text" name="name" size="10"><br/>

나이 : <input type="text" name="age" size="3"><br/>

학년 : <input type="text" name="grade" size="3"><br/>

학번 : <input type="text" name="id" size="10"><br/>

<p/>

<input type="submit" value="전송">&nbsp;&nbsp;&nbsp;<input type="reset" value="취소">

</form>


showStudent.jsp에서는 다음과 같이 값을 받는다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<jsp:useBean id="myStudent" class="com.joe.test.Student" scope="page"/>


<!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:setProperty name="myStudent" property="sName" param="name"/>

<jsp:setProperty name="myStudent" property="sAge" param="age"/>

<jsp:setProperty name="myStudent" property="sGrade" param="grade"/>

<jsp:setProperty name="myStudent" property="sID" param="id"/>


학생이름 : <jsp:getProperty name="myStudent" property="sName"/><br/>

학생나이 : <jsp:getProperty name="myStudent" property="sAge"/><br/>

학&nbsp;&nbsp;&nbsp;년 <jsp:getProperty name="myStudent" property="sGrade"/><br/>

학생번호 : <jsp:getProperty name="myStudent" property="sID"/> 

</body>

</html>


그런데 만일 form의 파라미터 이름을 JabaBeans에 있는 변수명과 동일하게 한다면


<form action="showStudent.jsp" method="post">

이름 : <input type="text" name="sName" size="10"><br/>

나이 : <input type="text" name="sAge" size="3"><br/>

학년 : <input type="text" name="sGrade" size="3"><br/>

학번 : <input type="text" name="sID" size="10"><br/>

<p/>

<input type="submit" value="전송">&nbsp;&nbsp;&nbsp;<input type="reset" value="취소">

</form>


showStudent.jsp에서는 아래 4개의 코드를 


<jsp:setProperty name="myStudent" property="sName" param="sName"/>

<jsp:setProperty name="myStudent" property="sAge" param="sAge"/>

<jsp:setProperty name="myStudent" property="sGrade" param="sGrade"/>

<jsp:setProperty name="myStudent" property="sID" param="sID"/>


다음과 같이 간단히 사용할수 있다(showStudent.jsp의 나머지 내용은 동일).


<jsp:setProperty name="myStudent" property="*" />




+ Recent posts