반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Java의정석
- 정보처리기사실기정리
- typescript
- 정보처리기사
- 정보처리기사요약
- 국비IT
- 자스코테
- 스프링
- 이안의평일코딩
- 오라클
- CSS
- javascript
- Oracle
- 타입스크립트
- 국비코딩
- spring
- VUE
- 정보처리기사정리
- 평일코딩
- ReactNative
- 리액트네이티브
- 자바스크립트
- 자바의정석
- 코딩테스트
- 자바스크립트 코딩테스트
- 정보처리기사실기요약
- php
- 정보처리기사실기
- react
- 리액트
Archives
- Today
- Total
이안의 평일코딩
JSP 3일차 - include 본문
반응형
2020.09.22(화)
basic1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--
실행 순서
=> 자바 실행 => html을 실행
=======
사용자가 보낸 데이터를 받거나
데이터베이스에서 데이터를 읽어 온다
7장 => 제어 흐름
========
화면 이동 , 화면 조립
================= pageContext
= include()
= forward()
=============== 많이 사용(태그로 변경)
= <jsp:include> : jsp파일을 여러개 묶어서 한 화면으로 만들어 준다
============== 여러개의 jsp가 모여서 만들어진다 (어떤 JSP든 상관없이 request를 공유할 수 있다)
= <jsp:forward> : 화면은 이동 => request를 사용이 가능 (일반 JSP(Model1)) forward사용하지 않고
mvc구조에 주로 사용
sendRedirect() : 화면 이동 => request가 초기화
================================
main.jsp => main.jsp?no=10 => request가 항상 공유
=============================
메뉴 (nav.jsp) ==> no=10 ===> 고정
=============================
로그인 | 화면 (사용자가 보는 화면)
(login.jsp| content.jsp no=10
|
|
|
=============================
회사정보 footer.jsp no=10 ===> 고정
=============================
========> main.jsp를 불러서 사용 (템플릿)
include가 되면 항상 데이터를 전송시에 main.jsp로 전송하고
필요한 jsp가 받아서 처리
include : JSP안에 다른 JSP를 원하는 위치에 출력
<jsp:include>
: jsp마다 따로 실행후에 => HTML만 묶어준다
<%@include%>
: jsp를 미리묶어서 합쳐진 JSP를 컴파일
: 변수가 동일하면 오류(에러 발생) => static
=============== Spring에서 사용
--%>
<%
// 사용자 요청 정보를 받는다
String mode = request.getParameter("mode");
if(mode==null)
mode="1";
int index=Integer.parseInt(mode);
String jsp="";
switch(index){
case 1:
jsp="content.jsp";
break;
case 2:
jsp="detail.jsp";
break;
}
%>
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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>
</head>
<body>
<jsp:include page="nav.jsp"></jsp:include>
<div class="container-fluid"><!-- full 화면 -->
<div class="row">
<div class="col-sm-3">
<!-- 로그인 -->
<jsp:include page="login.jsp"></jsp:include>
</div>
<div class="col-sm-9">
<!-- 레시피 : 메뉴를 클릭시마다 변경 : 변수를 잡아서 => jsp파일명을 변경 -->
<jsp:include page="<%=jsp %>"></jsp:include>
</div>
</div>
</div>
</body>
</html>
nav.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="#">SIST Recipe</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="basic1.jsp?mode=1">Home</a></li>
<li><a href="#">예매하기</a></li>
<li><a href="#">게시판</a></li>
<li><a href="#">자료실</a></li>
<li><a href="#">마이페이지</a></li>
</ul>
</div>
</nav>
</body>
</html>
login.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>
<table class="table">
<tr>
<td class="text-right">ID</td>
<td>
<input type=text class="input-sm" name=id>
</td>
</tr>
<tr>
<td class="text-right">PW</td>
<td>
<input type=password class="input-sm" name=pwd>
</td>
</tr>
<tr>
<td class="text-right" colspan="2">
<input type=button value="로그인" class="btn btn-sm btn-success">
</td>
</tr>
</table>
</body>
</html>
detail.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>
<h1 class="text-center">상세보기</h1>
</body>
</html>
content.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,com.sist.dao.*"%>
<%-- 변경되는 화면
<div class="panel panel-primary">
<div class="panel-heading">Panel with panel-primary class</div>
<div class="panel-body">Panel Content</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/w3images/lights.jpg">
<img src="/w3images/lights.jpg" alt="Lights" style="width:100%">
<div class="caption">
<p>Lorem ipsum...</p>
</div>
</a>
</div>
</div>
--%>
<%
MovieDAO dao=new MovieDAO();
List<MovieVO> list=dao.movieListData(1);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 class="text-center">영화 목록</h1>
<%
for(MovieVO vo:list)
{
%>
<div class="col-md-4">
<div class="panel panel-primary">
<div class="panel-heading"><%=vo.getTitle() %></div>
<div class="panel-body">
<div class="thumbnail">
<a href="basic1.jsp?mode=2">
<img src="<%=vo.getPoster() %>" alt="Lights" style="width:100%">
</a>
</div>
</div>
</div>
</div>
<%
}
%>
</body>
</html>
footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,com.sist.dao.*"%>
<%
MovieDAO dao=new MovieDAO();
List<String> list=dao.empGetName();
%>
<%-- 영화 : cookie(최근본 영화),session(로그인) --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<%
for(String s:list)
{
%>
<li><%=s %></li>
<%
}
%>
</ul>
</body>
</html>
MovieVO.java
package com.sist.dao;
/*
*
* 이름 널? 유형
-------- -------- -------------
NO NOT NULL NUMBER
CATENO NUMBER
TITLE NOT NULL VARCHAR2(200)
POSTER NOT NULL VARCHAR2(300)
REGDATE VARCHAR2(200)
GENRE NOT NULL VARCHAR2(100)
GRADE NOT NULL VARCHAR2(100)
ACTOR VARCHAR2(100)
SCORE VARCHAR2(20)
DIRECTOR NOT NULL VARCHAR2(100)
STORY CLOB
KEY VARCHAR2(50)
=> JSP => 새로운 데이터형 만들기 (여러개 데이터를 모아서 관리) : ~Bean
MyBatis => 데이터를 모아서(데이터베이스) 전송을 목적 : ~DTO
Spring => 값을 저장하는 클래스 : ~VO
*
*/
public class MovieVO {
private int no;
private int cateno;
private String title;
private String poster;
private String regdate;
private String genre;
private String grade;
private String actor;
private String score;
private String director;
private String story;
private String key; // 동영상
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public int getCateno() {
return cateno;
}
public void setCateno(int cateno) {
this.cateno = cateno;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPoster() {
return poster;
}
public void setPoster(String poster) {
this.poster = poster;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getStory() {
return story;
}
public void setStory(String story) {
this.story = story;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
MovieDAO.java
package com.sist.dao;
import java.sql.*;// Connection,PreparedStatement,ResultSet
import javax.sql.*;// 데이터베이스 정보를 모아서 처리 : DataSource
import javax.naming.*;// jdbc/oracle => Connection객체의 주소를 찾는 경우
import java.io.*;
import java.util.*;// ArrayList
/*
* ConnectionPool
* ==> 변경
* ==> connection 객체 얻기할때만 달라진다
* ==> Connection을 직접 생성 ==> 미리 만들어져 있기 때문에 (만들어진 주소만 얻어온다) => jdbc/oracle
*/
public class MovieDAO {
private Connection conn;
private PreparedStatement ps;
// MyBatis에서 사용중 ==> POOLED
public void getConnection()// 미리 생성된 connection을 얻어온다
{
try
{
// 연결 => POOL에 연결 (POOL => Connection객체 관리 영역)
Context init=new InitialContext();
Context c=(Context)init.lookup("java://comp/env");
DataSource ds=(DataSource)c.lookup("jdbc/oracle");
// POOL => 가상으로 (이름) 디렉토리가 만들어 있다 (JNDI)
conn=ds.getConnection();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
public void disConnection()// 사용후에 반환
{
try
{
if(ps!=null) ps.close();
if(conn!=null) conn.close();
}catch(Exception ex) {}
}
// 기능 => 동일
public List<String> empGetName()
{
List<String> list=new ArrayList<String>();
try
{
getConnection();// 주소 얻기
String sql="SELECT ename FROM emp";
ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
list.add(rs.getString(1));
}
rs.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
disConnection();//반환(재사용)
}
return list;
}
public List<MovieVO> movieListData(int page)
{
List<MovieVO> list=new ArrayList<MovieVO>();
try
{
// 미리 만들어진 Connection주소를 얻어온다 (주소)
getConnection();
// SQL문장을 전송
int rowSize=20;
int start=(rowSize*page)-(rowSize-1);//rownum = 1
int end=rowSize*page;
String sql="SELECT no,title,poster,num "
+"FROM (SELECT no,title,poster,rownum as num "
+"FROM (SELECT no,title,poster "
+"FROM daum_movie ORDER BY no ASC)) "
+"WHERE num BETWEEN "+start+" AND "+end;
// 전송
ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next())
{
MovieVO vo=new MovieVO();
vo.setNo(rs.getInt(1));
vo.setTitle(rs.getString(2));
vo.setPoster(rs.getString(3));
// list추가
list.add(vo);
}
rs.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
// 반환
disConnection();
}
return list;
}
// 톰캣 => 웹에서만 사용이 가능
/*
* public static void main(String[] args) { MovieDAO dao=new MovieDAO();
* List<String> list=dao.empGetName(); for(String s:list) {
* System.out.println(s); } }
*/
/*
* getConnection()
* SQL문장 전송
* 결과값 받아서 ArrayList에 담아준다
*/
}
반응형
'Back-end > JSP' 카테고리의 다른 글
JSP 6일차 - MVC / 인터페이스 (0) | 2020.10.08 |
---|---|
JSP 5일차 - JSTL / 망고플레이트 (0) | 2020.10.07 |
JSP 4일차 - Express Language, JSTL / 게시판 (2) | 2020.10.05 |
JSP 2일차 - 내장객체(기본객체), error처리 (0) | 2020.09.21 |
JSP 1일차 - 웹사이트 제작 (0) | 2020.08.24 |
Comments