자바 웹 에서 데이터베이스 에 접근 하 는 데 필요 한 DAO 와 VO
VO 는 일반적인 자바 빈 이 고 자바 빈 에 대한 중요 한 응용 은 데이터 베 이 스 를 조회 하 는 코드 로 jsp 에서 자바 빈 에 이식 하 는 것 이다.jsp 를 진정한 표현 층 으로 하고 jsp 에서 이 특정한 클래스 가 제공 하 는 방법 을 호출 하여 데이터 베 이 스 를 조작 합 니 다.
DAO 는 Data Access Object 류 라 고 하 는데 데이터 베 이 스 를 방문 하 는 것 을 전문 적 으로 책임 집 니 다. 분명히 데이터 베 이 스 를 조회 하 는 코드 를 DAO 에 쓸 수 있 습 니 다. 보통 VO (value object) 를 사용 하여 DAO 에 맞 춰 사용 할 수 있 습 니 다. DAO 에서 기록 을 조회 할 때마다 VO 의 대상 으로 봉 할 수 있 습 니 다.마지막 으로 모든 실례 화 된 대상 을 하나의 집합 에 넣 고 되 돌려 줍 니 다. 그러면 차원 의 분 리 를 실현 하고 결합 도 를 낮 출 수 있 습 니 다. DAO 를 사용 할 때 해당 하 는 가방 을 가 져 와 야 실현 할 수 있 습 니 다. 그 다음 에 DAO 류 를 사용 하여 인 스 턴 스 를 통 해 데이터 베 이 스 를 방문 할 수 있 습 니 다.
2. 실현:
다음은 VO 와 DAO 를 사용 하여 데이터 에 대한 접근 을 실현 합 니 다. 먼저 작업 원 리 를 확인 하고 데이터 베 이 스 를 모두 DAO 에 밀봉 해 야 합 니 다. 데이터 베이스 에서 조회 한 정 보 를 VO 로 예화 하여 Array List 배열 에 넣 고 되 돌려 야 합 니 다. DAO 류 의 코드 는 다음 과 같 습 니 다.(이 코드 는 Oracle 데이터 베 이 스 를 방문 하 는 데 사용 되 며, 표 new message 구조 가 구축 되 었 으 며, 실현 되 는 기능 은 기본 적 인 뉴스 발표 시스템 입 니 다) 클래스 를 구축 하여 뉴스 리 얼 즈 라 고 명명 합 니 다. 아래 그림 은 일부 파일 의 레이아웃 입 니 다. 다음 과 같 습 니 다.
VO 와 DAO 의 부분 클래스 만 들 기
package dao;
import com.lut.beans.NewsRealese;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class NewsRealeseDao {
public ArrayList queryAllNews() throws Exception {
Connection conn = null;
ArrayList newsRealese = new ArrayList();
try {
//
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
conn = DriverManager.getConnection(url, "scott", "wjk139");
// SQL
String sql = "select * from newmessage";//
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) { // VO
NewsRealese news = new NewsRealese();
news.setNewsId(rs.getString("newsid"));
news.setClassId(rs.getString("CLASSID"));
news.setKindId(rs.getString("KINDID"));
news.setMyOther(rs.getString("MYOTHER"));
news.setHeadTitle(rs.getString("HEADTITLE"));
news.setContent(rs.getString("CONTENT"));
news.setConnectRealtive(rs.getString("CONNECTREALTIVE"));
news.setAuthor(rs.getString("AUTHOR"));
news.setEditor(rs.getString("EDITOR"));
news.setNewsFrom(rs.getString("NEWSFROM"));
news.setTop(rs.getString("TOP"));
news.setNewsTime(rs.getString("NEWSTIME"));
news.setHits(rs.getString("HITS"));
news.setState(rs.getString("STATE"));
news.setTag(rs.getString("TAG"));
newsRealese.add(news);
}
rs.close();
stat.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception ex) {
}
return newsRealese;
}
}}
다음은 VO 를 실현 하 는 코드 예제 입 니 다. 그 중에서 각 항목 은 데이터베이스 에 있 는 표 항목 내용 입 니 다. 집합 은 기본 적 인 뉴스 속성 요 소 를 정 의 했 습 니 다. 패 키 징 함 수 를 사용 하여 패 키 징 하면 됩 니 다. 여기 서 우 리 는 JavaBean 류 를 만들어 뉴스 Realese 라 고 명명 하고 이 를 웹. xml 에 배치 합 니 다.package com.lut.beans;
public class NewsRealese {
private String newsId;
private String classId;
private String kindId;
private String myOther;
private String headTitle;
private String content;
private String connectRealtive;
private String author;
private String editor;
private String newsFrom;
private String top;
private String newsTime;
private String hits;
private String state;
private String tag;
public String getNewsId() {
return newsId;
}
public void setNewsId(String newsId) {
this.newsId = newsId;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getKindId() {
return kindId;
}
public void setKindId(String kindId) {
this.kindId = kindId;
}
public String getMyOther() {
return myOther;
}
public void setMyOther(String myOther) {
this.myOther = myOther;
}
public String getHeadTitle() {
return headTitle;
}
public void setHeadTitle(String headTitle) {
this.headTitle = headTitle;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getConnectRealtive() {
return connectRealtive;
}
public void setConnectRealtive(String connectRealtive) {
this.connectRealtive = connectRealtive;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getEditor() {
return editor;
}
public void setEditor(String editor) {
this.editor = editor;
}
public String getNewsFrom() {
return newsFrom;
}
public void setNewsFrom(String newsFrom) {
this.newsFrom = newsFrom;
}
public String getTop() {
return top;
}
public void setTop(String top) {
this.top = top;
}
public String getNewsTime() {
return newsTime;
}
public void setNewsTime(String newsTime) {
this.newsTime = newsTime;
}
public String getHits() {
return hits;
}
public void setHits(String hits) {
this.hits = hits;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
}
현재, 우 리 는 새로운 jsp 페이지 를 만 들 고 index. jsp 라 는 이름 을 데이터베이스 에 접근 하기 위해 서 입 니 다. 그 코드 는 다음 과 같 습 니 다. 물론 사용 하 는 과정 에서 필요 한 패키지 파일 을 가 져 와 야 합 니 다. 구체 적 인 레이아웃 에 대해 서 는 자세히 설명 하지 않 습 니 다.
<%@page contentType="text/html" import="java.util.*,java.sql.*,com.lut.beans.NewsRealese,dao.NewsRealeseDao"
pageEncoding="UTF-8" language="java"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> -- 、 、 </title>
<link type="text/css" rel="stylesheet" href="newsRealese.css"/>
</head>
<body id="body">
<a href="adminLogin.jsp" style="table-layout: right"> </a><h1 id="p"> </h1><br>
<table border="0" style="width:100%; height:100%" align="center">
<tr>
<td style="width: 10%"> </td>
<td>
<%
NewsRealeseDao newsRealeseDao = new NewsRealeseDao();
ArrayList newsRealese = newsRealeseDao.queryAllNews();
%>
<%
for (int i = 0; i < newsRealese.size(); i++) {
NewsRealese newRealese = (NewsRealese) newsRealese.get(i);
%>
<center><table border="0" width="100%" id="table">
<tr>
<td width="128"><p> </p>
<p> </p>
</td>
<td ><table border="0" width="100%">
<tr>
<td width="11%" > :</td>
<td colspan="3"><%=newRealese.getMyOther()%> </td>
<td width="10%" > :</td>
<td width="44%" ><%=newRealese.getHeadTitle()%> </td>
</tr>
<tr>
<td colspan="6"> :</td>
</table>
<table width="100%" border="0">
<tr>
<td>
<a target="_blank" href="newRealese_detail.jsp?newsid=<%=newRealese.getNewsId()%>"/>
<table width="100%" border="0" align="center">
<tr>
<td>
<%=newRealese.getContent()%>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table border="0" width="100%">
<tr>
<td width="51" height="30"> :</td>
<td width="203"><%=newRealese.getAuthor()%> </td>
<td width="97"> :</td>
<td width="167"><%=newRealese.getNewsTime()%> </td>
<td width="99"> :</td>
<td width="191"><%=newRealese.getHits()%> </td>
</tr>
</table></td>
</tr>
<tr>
<td height="21" colspan="2"><hr></td>
</tr>
</table></center>
<%
}
%>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>
다음은 그 실현 효과 이다.
그림 1 데이터베이스 접근 의 실현 효과
그러나 DAO 와 VO 를 사 용 했 기 때문에 jsp 페이지 에서 자바 코드 를 완전히 제거 하지 못 한 것 같 습 니 다. 그러나 예전 에 JDBC 코드 를 직접 썼 을 때 많이 좋아 졌 습 니 다. 또한 jsp 페이지 에 jdbc 와 관련 된 코드 가 나타 나 지 않 았 고 프로그래머 들 은 데이터 뱅 크 의 세부 사항 과 구 조 를 알 필요 가 없 기 때문에 분업 개발 에 편리 합 니 다.
이상 은 DAO 와 VO 를 사용 하여 데이터 베 이 스 를 방문 하 는 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.