- shop_main2.java 에 추가 - @GetMapping("/gallery_view.do") (Contoller)
public static int m_gidx; //메모리를 사용할거다
@GetMapping("/gallery_view.do")
public String gallery_view(
Model m, @RequestParam(defaultValue="0", required = false) Integer gidx
) throws Exception{
//@RequestParam~ : 값 필수인지 여부 정해주는 부분
this.m_gidx = gidx; //메모리영역의 전역 변수에 인자값으로 받은 gidx값 넣어줌
ArrayList<Object> one_list = new gallery_select().one_list(dbInfo);
m.addAttribute("one_list" , one_list);
return null;
}
- gallery_select.java 에 추가 (Module)
- shop_main2.java 에서 호출하는 모듈 / Controller에 있는 static 변수형을 활용하여 select 함
package shop;
//~import
public class gallery_select{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<ArrayList<Object>> all = null;
//shop_main2 sm = new shop_main2(); //Controller의 class load
shop_main2 sm; //이렇게 로드해도 됨 - Spring의 강점!
gallery_dao gd = new gallery_dao(); //dao 로드 = dao는 new까지 다 적어줘야함
public ArrayList<Object> one_list(BasicDataSource dbinfo) throws Exception{
try {
this.con = dbinfo.getConnection();
//order by : 맨 마지막부터 읽어들이기 시작함 -> 속도 더 빠름
String sql = "select * from gallery where gidx=? order by gidx desc";
this.ps = this.con.prepareStatement(sql);
this.ps.setString(1, String.valueOf(this.sm.m_gidx));
this.rs = this.ps.executeQuery();
this.rs.next();
this.gd.setGidx(Integer.parseInt(this.rs.getString(1)));
this.gd.setGwriter(this.rs.getString(2));
this.gd.setGsubject(this.rs.getString(3));
this.gd.setGtext(this.rs.getString(4));
this.gd.setGorifile(this.rs.getString(5));
this.gd.setGfile(this.rs.getString(6));
this.gd.setGindate(this.rs.getString(7));
}catch(Exception e) {
System.out.println("ERROR");
}finally {
this.rs.close();
this.ps.close();
this.con.close();
}
return this.gd.views(); //dao에서 만들어진 배열 출력
}
}
- gallery_view.jsp 생성 (View)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="gw" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>갤러리 게시판 상세보기</title>
</head>
<body>
글쓴이 : ${one_list.get(1)} <br>
제목 : ${one_list.get(2)}<br>
내용 : ${one_list.get(3)}<br><br>
<gw:set var="imgs" value="${fn:split(one_list.get(4),',')}"></gw:set>
<gw:set var="imgs2" value="${fn:split(one_list.get(5),',')}"></gw:set>
<gw:set var="ea" value="${fn:length(imgs)}"></gw:set>
<gw:if test="${one_list.get(4)!=null}">
1. 첨부파일 : orifile만 노출할 경우<br>
<gw:forEach var="no" items="${imgs}">
${no}<br>
</gw:forEach>
<br><br><br>
2. 첨부파일_ver2
: orifile명,저장되어있는file명 둘다 필요한 경우
foreach속 forEach 돌리면 안돼서 반복문(begin,end) 사용<br>
<gw:forEach var="no2" begin="0" end="${ea-1}">
<a href="./upload/${imgs2[no2]}" target="blank">${imgs[no2]}</a><br>
</gw:forEach>
</gw:if>
<br>
<input type="button" value="게시물 삭제" onclick="del_gallery()">
</body>
<script>
//javascript 변수에는 jtl,jsp 변수를 모두 받을 수 있음
function del_gallery(gidx){
if(confirm("해당게시물을 삭제시 복구되지 안습니다. 정말 삭제할까요?")){
location.href='./gallery_delete.do?gidx='+${one_list.get(0)};
}
}
</script>
</html>
⭐ class 배열에서 fn:split 사용시 원시배열 []로 바뀌어서 출력된다!!
⭐ 사용자가 업로드한 파일명도 유지하면서 개발자가 변경한 파일명으로 출력을 할경우
=> forEach에 item을 사용하기 어렵다
=> delete 로 갈꺼임
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#5-3 / spring - legacy setting (0) | 2024.07.12 |
---|---|
#5-2 / gallery board delete (spring + I/O + database) (0) | 2024.07.12 |
#4-3 / gallery board select-list (spring + I/O + database) (0) | 2024.07.11 |
#4-2 / gallery board insert-write (spring + I/O + database) (1) | 2024.07.11 |
#4-1 / spring + I/O (0) | 2024.07.11 |