: java se가 아닌 java ee 환경(jdbc도 java ee 환경)
1. Servlet : class 사용
2. jsp : html과 유사하게 사용
: 확장자 .jsp
: 4가지의 특수기호를 사용
달력 소스
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar" %>
<%
request.setCharacterEncoding("utf-8");
String strYear = request.getParameter("year");
String strMonth = request.getParameter("month");
// 설정 날짜
int year = Integer.parseInt(strYear);
int month = Integer.parseInt(strMonth);
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
sDay.set( year, month-1, 1 );
eDay.set( year, month, 1-1 );
int startDayOfWeek = sDay.get( Calendar.DAY_OF_WEEK );
int endDyaOfWeek = eDay.get( Calendar.DAY_OF_WEEK );
int endDay = eDay.get( Calendar.DATE );
StringBuilder sbHtml = new StringBuilder();
sbHtml.append( "<table width='800' border='1'>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td colspan='7'>" + year + "년" + month + "월</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td>SU</td><td>MO</td><td>TU</td><td>WE</td><td>TH</td><td>FR</td><td>SA</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "<tr>" );
for( int i=1 ; i<startDayOfWeek ; i++ ) {
sbHtml.append( "<td></td>" );
}
for( int i=1, n=startDayOfWeek ; i<=endDay ; i++, n++ ) {
if( n % 7 == 1 ) sbHtml.append( "<tr>" );
if( n % 7 == 1 ) {
sbHtml.append( "<td bgcolor='red'>" + i + "</td>" );
}else if( n % 7 == 0 ) {
sbHtml.append( "<td bgcolor='skyblue'>" + i + "</td>" );
}else{
sbHtml.append( "<td>" + i + "</td>" );
}
if( n % 7 == 0 ) sbHtml.append( "</tr>" );
}
for( int i=endDyaOfWeek ; i<=6 ; i++ ) {
sbHtml.append( "<td></td>" );
}
sbHtml.append( "</tr>" );
sbHtml.append( "</table>" );
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml.toString() %>
</body>
</html>
출력 소스
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function() {
document.getElementById('btn').onclick = function() {
//alert('버튼 클릭');
if(document.frm.year.value.trim() == '') {
alert('오류 : 년도를 입력하세요.');
return; // 입력 잘못 될 시 return을 만나면 함수를 벗어남(break와 비슷)
}
if(document.frm.month.value.trim() == '') {
alert('오류 : 월을 입력하세요.');
return;
} else {
let month = document.frm.month.value;
if(month <=0 || month >=13){
alert('오류 : 월을 정확하게 입력하세요.');
return;
}
}
document.frm.submit();
};
};
</script>
</head>
<body>
<form action="calendar_ok1.jsp" method="post" name="frm">
년도 <input type="text" name="year"/>
월 <input type="text" name="month"/>
<input type="button" id="btn" value="달력 보기"/>
</form>
</body>
</html>
달력 소스는 위의 소스와 똑같다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 년과 월 부분의 selected="selected"를 바꿔가면서 사용하면 된다 -->
<!-- calendar3.jsp -->
<form action="calendar_ok1.jsp" method="post">
년도
<select name="year">
<option value="2022">2022 년</option>
<option value="2023" selected="selected">2023 년</option>
<option value="2024">2024 년</option>
</select>
월
<select name="month">
<option value="1">1 월</option>
<option value="2">2 월</option>
<option value="3">3 월</option>
<option value="4" selected="selected">4 월</option>
<option value="5">5 월</option>
<option value="6">6 월</option>
<option value="7">7 월</option>
<option value="8">8 월</option>
<option value="9">9 월</option>
<option value="10">10 월</option>
<option value="11">11 월</option>
<option value="12">12 월</option>
</select>
<input type="submit" value="달력보기"/>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar" %>
<%
request.setCharacterEncoding("utf-8");
StringBuilder sbHtml = new StringBuilder(); // 선언 위치를 변경
if(request.getParameter("year") == null || request.getParameter("month") == null) {
// 입력 데이터가 없는 경우
} else {
// 입력 데이터가 있는 경우
String strYear = request.getParameter("year");
String strMonth = request.getParameter("month");
// 설정 날짜
int year = Integer.parseInt(strYear);
int month = Integer.parseInt(strMonth);
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
sDay.set( year, month-1, 1 );
eDay.set( year, month, 1-1 );
int startDayOfWeek = sDay.get( Calendar.DAY_OF_WEEK );
int endDyaOfWeek = eDay.get( Calendar.DAY_OF_WEEK );
int endDay = eDay.get( Calendar.DATE );
sbHtml.append( "<table width='800' border='1'>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td colspan='7'>" + year + "년" + month + "월</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "<tr>" );
sbHtml.append( "<td>SU</td><td>MO</td><td>TU</td><td>WE</td><td>TH</td><td>FR</td><td>SA</td>" );
sbHtml.append( "</tr>" );
sbHtml.append( "<tr>" );
for( int i=1 ; i<startDayOfWeek ; i++ ) {
sbHtml.append( "<td></td>" );
}
for( int i=1, n=startDayOfWeek ; i<=endDay ; i++, n++ ) {
if( n % 7 == 1 ) sbHtml.append( "<tr>" );
if( n % 7 == 1 ) {
sbHtml.append( "<td bgcolor='red'>" + i + "</td>" );
}else if( n % 7 == 0 ) {
sbHtml.append( "<td bgcolor='skyblue'>" + i + "</td>" );
}else{
sbHtml.append( "<td>" + i + "</td>" );
}
if( n % 7 == 0 ) sbHtml.append( "</tr>" );
}
for( int i=endDyaOfWeek ; i<=6 ; i++ ) {
sbHtml.append( "<td></td>" );
}
sbHtml.append( "</tr>" );
sbHtml.append( "</table>" );
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 자기 자신을 불러옴 -->
<form action="calendar_ok2.jsp" method="post">
년도
<select name="year">
<option value="2022">2022 년</option>
<option value="2023" selected="selected">2023 년</option>
<option value="2024">2024 년</option>
</select>
월
<select name="month">
<option value="1">1 월</option>
<option value="2">2 월</option>
<option value="3">3 월</option>
<option value="4" selected="selected">4 월</option>
<option value="5">5 월</option>
<option value="6">6 월</option>
<option value="7">7 월</option>
<option value="8">8 월</option>
<option value="9">9 월</option>
<option value="10">10 월</option>
<option value="11">11 월</option>
<option value="12">12 월</option>
</select>
<input type="submit" value="달력보기"/>
</form>
<%= sbHtml.toString() %>
</body>
</html>
데이터베이스 풀링 - 미리 만들어 놓은 접속
tomcat 시작 시 풀링 생성 -> JNDI(이름을 통한 접근) -> 프로그램 접근
: 설정파일과 JNDI가 필요함
<?xml version="1.0" encoding="utf-8" ?>
<Context>
<!-- Database 정보들을 Datasource에 건내주고(type) name에 넘겨줌 -> 톰캣(Container)이 관리-->
<Resource
name="jdbc/mariadb1"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.mariadb.jdbc.Driver"
url="jdbc:mariadb://localhost:3306/sample"
username="root"
password="123456" />
<Resource
name="jdbc/mariadb2"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.mariadb.jdbc.Driver"
url="jdbc:mariadb://localhost:3306/project"
username="project"
password="1234" />
</Context>
실행할 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingEnumeration" %>
<%@page import="javax.naming.NamingException"%>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.SQLException" %>
<%
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource)envCtx.lookup("jdbc/mariadb1");
conn = dataSource.getConnection();
System.out.println("데이터베이스 연결 성공");
} catch(NamingException e) {
System.out.println("에러 : " + e.getMessage());
} catch(SQLException e) {
System.out.println("에러 : " + e.getMessage());
} finally {
if(conn != null) conn.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
실행할 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="javax.naming.NamingException"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingEnumeration" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource)envCtx.lookup("jdbc/mariadb1");
conn = dataSource.getConnection();
String sql = "select * from dept";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("deptno"));
}
} catch(NamingException e) {
System.out.println("에러 : " + e.getMessage());
} catch(SQLException e) {
System.out.println("에러 : " + e.getMessage());
} finally {
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.SQLException" %>
<%
String url = "jdbc:mariadb://localhost:3306/sample";
String user = "root";
String password = "123456";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
StringBuilder sbHtml = new StringBuilder();
//try catch 수동 작성(오류 판별)
try {
Class.forName("org.mariadb.jdbc.Driver");
System.out.println("드라이버 로딩 성공");
conn = DriverManager.getConnection(url, user, password);
System.out.println("데이터베이스 연결 성공 <br>");
String sql = "select deptno, dname, loc from dept";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
sbHtml.append("<table width='800' border='1'>");
while(rs.next()) {
sbHtml.append("<tr>");
sbHtml.append("<td>" + rs.getString("deptno") + "</td>");
sbHtml.append("<td>" + rs.getString("dname") + "</td>");
sbHtml.append("<td>" + rs.getString("loc") + "</td>");
sbHtml.append("</tr>");
}
sbHtml.append("</table>");
} catch(ClassNotFoundException e) {
System.out.println("[에러] : " + e.getMessage());
} catch(SQLException e) {
System.out.println("[에러] : " + e.getMessage());
} finally {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= sbHtml %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.SQLException" %>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%
request.setCharacterEncoding("utf-8");
StringBuilder sbHtml = new StringBuilder();
if(request.getParameter("dong") != null) {
String strDong = request.getParameter("dong");
String url = "jdbc:mariadb://localhost:3306/project";
String user = "project";
String password = "1234";
Connection conn = null;
PreparedStatement pstmt= null;
ResultSet rs = null;
try {
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
String sql = "select zipcode, sido, dong, ri, bunji from zipcode where dong like ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, strDong + "%");
sbHtml.append("<table width='800' border='1'>");
rs = pstmt.executeQuery();
while(rs.next()) {
sbHtml.append("<tr>");
sbHtml.append("<td>" + rs.getString("zipcode") + "</td>");
sbHtml.append("<td>" + rs.getString("sido") + "</td>");
sbHtml.append("<td>" + rs.getString("dong") + "</td>");
sbHtml.append("<td>" + rs.getString("ri") + "</td>");
sbHtml.append("<td>" + rs.getString("bunji") + "</td>");
sbHtml.append("</tr>");
}
sbHtml.append("</table>");
} catch(ClassNotFoundException e) {
System.out.println("[에러] : " + e.getMessage());
} catch(SQLException e) {
System.out.println("[에러] : " + e.getMessage());
} finally {
if(conn != null) conn.close();
if(pstmt != null) conn.close();
if(rs != null) conn.close();
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="./zipcode.jsp" method="post" name="frm">
<fieldset>
<legend>우편번호 검색</legend>
<label for="dong">동이름 입력</label>
<input type="text" id="dong" name="dong" size="40" placeholder="동이름 입력"/>
<input type="submit" id="btn" value="우편번호 입력"/>
</fieldset>
</form>
<%= sbHtml %>
</body>
</html>