
데이터베이스 긁어올때
헤이베이지 HeyBeige
·2021. 3. 23. 17:43
package com.sist.dao;
import lombok.Getter;
import lombok.Setter;
/*
NO NOT NULL NUMBER
TITLE NOT NULL VARCHAR2(300)
SUBJECT NOT NULL VARCHAR2(300)
POSTER NOT NULL VARCHAR2(260)
LINK NOT NULL VARCHAR2(260)
*/
@Getter
@Setter
public class FoodCategoryVO {
private int no;
private String title;
private String subject;
private String poster;
private String link;
}
|
cs |
package com.sist.dao;
import java.util.*;
import java.sql.*;
import com.sist.jdbc.*;
//DBCP => 웹에서만 가능
public class FoodDAO {
private DAOManager dm = new DAOManager();
private Connection conn;
private PreparedStatement ps;
public void foodCategoryInsert(FoodCategoryVO vo)
{
try
{
conn=dm.getConnection();
System.out.println("conn:"+conn);
String sql = "INSERT INTO food_category VALUES("
+ "(SELECT NVL(MAX(no)+1,1) FROM food_category),?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1, vo.getTitle());
ps.setString(2, vo.getSubject());
ps.setString(3, vo.getPoster());
ps.setString(4, vo.getLink());
//실행
ps.executeUpdate(); //Commit
}
catch (Exception e) {e.printStackTrace(); }
finally
{
dm.disConnection(conn, ps);
}
}
public List<FoodCategoryVO> foodCategoryData(int index)
{
List<FoodCategoryVO> list = new ArrayList<FoodCategoryVO>();
try
{
conn =dm.getConnection();
int start = 0;
int end = 0;
if(index==1)
{
start=1;
end=12;
}
else if (index==2)
{
start=13;
end=18;
}
else
{
start=19;
end=30;
}
String sql = "SELECT * FROM food_category "
+ "WHERE no BETWEEN ? AND ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, start);
ps.setInt(2, end);
ResultSet rs = ps.executeQuery();
while(rs.next())
{
FoodCategoryVO vo = new FoodCategoryVO();
vo.setNo(rs.getInt(1));
vo.setTitle(rs.getString(2));
vo.setSubject(rs.getString(3));
vo.setPoster(rs.getString(4));
vo.setLink(rs.getString(5));
list.add(vo);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
dm.disConnection(conn, ps);
}
return list;
}
}
|
cs |
package com.sist.dao;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
/*
NO NOT NULL NUMBER
TITLE NOT NULL VARCHAR2(300)
SUBJECT NOT NULL VARCHAR2(300)
POSTER NOT NULL VARCHAR2(260)
LINK NOT NULL VARCHAR2(260)
*/
public class FoodManager {
private FoodDAO dao =new FoodDAO();
public void foodCategoryData()
{
try
{
int k=1; //카테고리 번호
//연결 => 소스읽기
Document doc = Jsoup.connect("https://www.mangoplate.com/").get();
//System.out.println(doc);
Elements title = doc.select("div.toplist-slider span.title"); //CSS 선택자
Elements poster = doc.select("div.toplist-slider img.center-croping");
Elements subject = doc.select("div.toplist-slider p.desc");
Elements link = doc.select("div.toplist-slider a");
for(int i=0;i<title.size();i++)
{
System.out.println("번호: "+k);
System.out.println("제목: "+title.get(i).text());
System.out.println("부제목: "+subject.get(i).text());
System.out.println("이미지: "+poster.get(i).attr("data-lazy"));
System.out.println("링크: https://www.mangoplate.com"+link.get(i).attr("href"));
System.out.println("==========================================");
FoodCategoryVO vo = new FoodCategoryVO();
vo.setTitle(title.get(i).text());
vo.setSubject(subject.get(i).text());
vo.setPoster(poster.get(i).attr("data-lazy"));
vo.setLink("https://www.mangoplate.com"+link.get(i).attr("href"));
dao.foodCategoryInsert(vo);
k++;
}
}
catch
(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
FoodManager fm = new FoodManager();
fm.foodCategoryData();
}
}
|
cs |
package com.sist.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class DAOManager {
private Connection conn;
private PreparedStatement ps;
private final String URL = "jdbc:oracle:thin:@localhost:1521:XE";
public DAOManager() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception ex) {
}
}
public Connection getConnection() {
try {
conn = DriverManager.getConnection(URL, "hr", "happy");
} catch (Exception ex) {
}
return conn;
}
public void disConnection(Connection conn,PreparedStatement ps) {
try {
if (ps != null)
ps.close();
if (conn != null)
ps.close();
} catch (Exception ex) {
}
}
}
|
cs |
jsp파일
main.jsp
<%@ 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>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<style type="text/css">
.row{
width: 960px;
margin: 0px auto;
}
</style>
</head>
<body>
<jsp:include page="header.jsp"></jsp:include>
<div style="height: 30px"></div>
<div class="container">
<jsp:include page="home.jsp"></jsp:include>
</div>
</body>
</html>
|
cs |
header.jsp
<%@ 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>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">WebSiteName</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
<li><a href="#">Page 3</a></li>
</ul>
</div>
</nav>
</body>
</html>
|
cs |
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="com.sist.dao.* , java.util.*"%>
<%
String index = request.getParameter("index");
if(index==null)
{
index="1";
}
FoodDAO dao = new FoodDAO();
List<FoodCategoryVO> list = dao.foodCategoryData(Integer.parseInt(index));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="row">
<a href="main.jsp?index=1" class="btn btn-sm btn-danger">믿고 보는 맛집리스트</a>
<a href="main.jsp?index=2" class="btn btn-sm btn-success">지역별 인기 맛집</a>
<a href="main.jsp?index=3" class="btn btn-sm btn-primary">메뉴별 인기 맛집</a>
</div>
<div class="row">
<%
for (FoodCategoryVO vo : list)
{
%>
<div class="col-md-4">
<div class="thumbnail">
<a href="#">
<img src="<%=vo.getPoster() %>" alt="Lights" style="width: 100%">
<div class="caption">
<p><%=vo.getTitle()%></p>
</div>
</a>
</div>
</div>
<%
}
%>
</div>
</body>
</html>
|
cs |
<Context docBase="JSPBasicProject05" path="/JSPBasicProject05" reloadable="true" source="org.eclipse.jst.jee.server:JSPBasicProject05"> <Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:XE" username = "hr" password = "happy" name="jdbc/oracle" maxActive = "10" maxIdle="5" maxWait="-1" type="javax.sql.DataSource" /> </Context> | cs |
'개발 일지 > JAVA' 카테고리의 다른 글
[Java]인터페이스(interface) (0) | 2021.01.21 |
---|---|
[Java]추상클래스(abstract class)* (0) | 2021.01.19 |
[Java] 오버로딩? 오버라이딩? 헷갈림 종결 끝판왕 (0) | 2021.01.15 |
[Java] 제어자(modifier) (0) | 2021.01.14 |
[Java]메소드를 활용한 야구게임 (0) | 2021.01.12 |
[Java] 변수와 메서드 (0) | 2021.01.11 |