2020.08.27(목) 7주차 3일
라이브러리의 연속 : 최종단계 gpt3 자연어
JSP 빈즈 (개중요)
향후 2주 : Connection pooling> CURD> 쇼핑몰의 첫번째 부품, 게시판> 회원등록
1. ★ 어제 문제 풀이
web_pro5>webcontent>gugu.html
web_pro5>gugu.jsp
web_pro5>...>Gugudan.java
* 승용이가 푼 것
https://cross-milestone.tistory.com/193
[JSP] (problem)
갈림길 이정표 [JSP] (problem) 본문 카테고리 없음 [JSP] (problem) 기억을 못하면 기록하라 이몽뇽 2020. 8. 26. 20:34 Prev 1 2 3 4 5 6 ··· 101 Next
cross-milestone.tistory.com
(1) alert dialogue
(2) 화면상에서 결과처리
XML, JSON,CSV는 DOM <div>으로 처리
JSP <iframe>
사람들은 한 페이지안에서 해결하는 것을 선호한다. => Spring / AJAX
(3) EL과 JSTL로 자바와 HTML을 왔다갔다하는 부분들을 줄일 수 있다.
2. Connection pooling (상품자료) (역대 최다 클래스)
web_pro5>META-INF > context.xml : 얘가 알아서 '배를' 만들어준다.
web_pro5>webcontent>beandb2_ins.html
web_pro5>beandb2.jsp
web_pro5>...>SangpumDto.java
web_pro5>...>ConnDbBean.java
web_pro5>...>ConnDbPooling.java
beandb2_fail.html
beandb2_up.jsp
beandb2_upok.jsp
beandb2_del.jsp
(1) 카페 JSP&Servlet>JSP의 변수를 자바스크립트에 전달
클라이언트로 넘기고
...그러나 js의 변수를 JSP에 넘겨주지는 못한다.
(2) JDBC Connection pooling을 위한 방법
여러 사용자가 필요할 때 마다 하나씩 꺼내서 사용하고 다시 집어넣는(Pooling) 방식
'속도 향상’과 ‘자원 공유’
세게 흐르는 물살, 많은 사람, 한 척의 배(Connection), 배를 몇 개를 만드느냐?
(3) 방법2) DBCP 사용 - 각 프로젝트에 적용 ConnDbPooling.java
각각의 프로젝트에 WebContent\META-INF 폴더에 context.xml 파일을 작성한다.
(4) JNDI
contextm initaial context
jndi
data casting : ds = (DataSource)context.lookup("java:comp/env/jdbc_maria");
(5) 페이징 처리 (나중에)
....
코드가 많은게 따로 올려야하나 싶다.
3. 로그인 화면
login_main.jsp
login_aa.jsp
login_bb.jsp
Login_jikwon.jsp
Login_ok.jsp
<table border="1" style="width:80%; margin-left:auto; margin-right:auto;">
<tr>
<td>
<% if(session.getAttribute("id") == null){%>
<%@ include file = "login_aa.jsp" %>
<%}else{%>
<%@ include file = "login_bb.jsp" %>
<%} %>
</td>
</tr>
<tr>
<td>
<iframe name="myframe" width = "99%" style="border-left-style: none;"> </iframe>
</td>
</tr>
</table>
login_main.jsp 의 화면은 두 파트로 나뉜다.
하나의 테이블로 두 개의 화면을 나누는 테이블.
상단은 아이디와 패스워드, 로그인 화면,login_aa.jsp
하단은 자료를 볼 수 있는 화면으로 구성되어있다.login_bb.jsp
두 개의 JSP가 이 테이블에 올라가 있다.
자료보기 활성화 버튼을 누르면 Login_jikwon.jsp에서 기록한 "정보"가 넘어오게 된다.
물론 Post방식이기때문에 URL의 변화는 없다.
5. 쇼핑몰의 첫 번째 부품, ★ 게시판
web_myshop>...>web.xml (index만 남기고 다 지우기)
web_myshop>webcontent>CSS>board.css
web_myshop>webcontent>index.html
web_myshop>webcontent>board>boardlist.jsp
web_myshop>webcontent>board>boarwirte.jsp
web_myshop>...>BoardBean.java
web_myshop>...>BoardDto.java
web_myshop>...>BoardMgr.java
(1) 카페 복붙
create table shopboard( num int(5) primary key, name varchar(20) not null, pass varchar(20) not null, mail varchar(30), title varchar(50), cont text, bip varchar(20), bdate varchar(20), readcnt int(3), gnum int(5), onum int(3), nested int(3)) charset=utf8; |
(2) context.xml이랑 각종 jar import해라
(3) boardlist의 두 개의 콘텐츠
FORM BEAN을 이용해서 BoardDto.java, BoardMgr.java의 Set된 데이터들을 Get해온다.
<%@page import="kr.shop.board.BoardMgr"%>
<%@page import="kr.shop.board.BoardDto"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="BoardMgr" class="kr.shop.board.BoardMgr"/>
<jsp:useBean id="BoardDto" class="kr.shop.board.BoardDto"/>
...........
<table >
<tr>
[<a href="../index.html">메인으로</a>]
[<a href="boardlist.jsp?page=1">최근 목록으로</a>]
[<a href="boardwrite.jsp?page=1">새 글 작성</a>]
[<a href="#"
onclik="window.open('admin.jsp,'','width=300, height=150, top=300,left=300')">관리자용</a>];
</tr>
</table>
<br>
<table>
<tr style="background-color: silver;">
<th>번호</th><th>제 목</th><th>작성자</th><th>작성일</th><th>조회</th>
</tr>
<%
ArrayList<BoardDto> list = BoardMgr.getDataAll();
for(int i = 0; i < list.size(); i++){
BoardDto dto = (BoardDto)list.get(i);
%>
<tr>
<td><%= dto.getNum() %></td>
<td><%= dto.getTitle() %></td>
<td><%= dto.getName() %></td>
<td><%= dto.getBdate() %></td>
<td><%= dto.getReadcnt() %></td>
</tr>
<%
}
%>
</table>
위는 BoardDto.java의 데이터를 받아온다음 각 카테고리들을 구성한다.
아래는 BoardMgr.java의 데이터를 받아온다음 게시판을 구성한다.
(4) 게시판 구성 및 게시글들의 데이터베이스 지정
BoardMgr.java에선 이번에 새로 시작한 SQL문들을 끌어온다.
앞으로 작성할 게시판들의 요소(작성자, 조회수 등)들을 작성하였다.
public BoardMgr() {
try {
Context context = new InitialContext();
ds= (DataSource)context.lookup("java:comp/env/jdbc_maria");
} catch (Exception e) {
System.out.println("BoardMgr err : " + e);
}
}
public ArrayList<BoardDto> getDataAll(){
ArrayList<BoardDto> list = new ArrayList<BoardDto>();
String sql = "select * from shopboard order by gnum desc, onum asc";
try {
conn = ds.getConnection(); //보안도 강화되고, 코드도 줄이고
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
BoardDto dto = new BoardDto();
dto.setNum(rs.getInt("num"));
dto.setName(rs.getString("name"));
dto.setTitle(rs.getString("title"));
dto.setBdate(rs.getString("bdate"));
dto.setReadcnt(rs.getInt("readcnt"));
dto.setNested(rs.getInt("nested"));
list.add(dto);
※ 오늘 배우고 느낀 것
1.
2.
3.
'[2020]KIC 캠퍼스 복습 > JAVA SCRIPT(5,6,7)' 카테고리의 다른 글
[코드리뷰] JSP) Connection pooling (상품자료) (1) | 2020.08.27 |
---|---|
[수업 D-32 ] Servlet)배운내용 (0) | 2020.08.26 |
[코드리뷰] Servlet) Form Beans 예제 1 (0) | 2020.08.26 |
[수업 D-31 ] JSP) 지시어, 내장객체 (0) | 2020.08.25 |
[수업 D-30 ] SERVLET) 쿠키, 세션, 쇼핑몰, 방명록 (0) | 2020.08.24 |