https://dev-eunse.tistory.com/155 예제의 html파일에 review 받는 input 추가
리뷰내용 : <input type="text" name="mreview">
🔽
create table filelist(
fidx int(7) unsigned not null auto_increment,
f_img text null,
f_text varchar(200) not null,
f_indate timestamp not null default current_timestamp,
primary key(fidx)
);
🔽
⚡ 리뷰등록 fileok2.java
@MultipartConfig ( fileSizeThreshold = 1024*1024*2, maxFileSize = 1024*1024*10, maxRequestSize = 1024*1024*100 ) public class fileok2 extends HttpServlet { private static final long serialVersionUID = 1L; dbconfig db = new dbconfig(); Connection con = null; Statement st = null; //이게 있어야 sql 작동시킬수 잇음 PrintWriter pw = null; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String mreview = request.getParameter("mreview"); Part mfile = request.getPart("mfile"); String filename = mfile.getSubmittedFileName(); //파일명 long filesize = mfile.getSize(); try { this.con = this.db.info(); //database 연결 this.pw = response.getWriter(); String filesave = ""; //db에 저장되는 경로 if(filename == "" || filesize <= 0) { //첨부파일이 없을 경우(리뷰글만) filesave = ""; }else { //첨부파일이 있을 경우 String url = request.getServletContext().getRealPath("/upload/"); mfile.write(url+filename); filesave = "./upload/"+filename; } String sql = "insert into filelist(fidx,f_img,f_text,f_indate) " + "values('0','"+ filesave +"','"+ mreview +"',now())"; this.st = this.con.createStatement(); //sql 문법 실행시키는 라이브러리 int result = this.st.executeUpdate(sql); //실행 및 결과값을 return(숫자로 return) if(result>0) { //정상 query 작동 1 this.pw.write("<script>" + "alert('리뷰등록이 완료되었습니다');" + "location.href='./upload_list.do';" + "</script>"); }else { this.pw.write("<script>" + "alert('올바른 파일이 아닙니다.');" + "history.go(-1)" + "</script>"); } }catch(Exception e) { System.out.println("database 접속 오류 및 웹디렉토리 오류 발생"); }finally { try { this.st.close(); this.pw.close(); this.con.close(); }catch(Exception e) { System.out.println("database 접속해제 실패"); } } } }
🔽
⚡ 리뷰내용 출력 및 이미지 data 로드
public class upload_list extends HttpServlet { private static final long serialVersionUID = 1L; dbconfig db = new dbconfig(); Connection con = null; Statement st = null; ResultSet rs = null; RequestDispatcher rd = null; //외부에 있는 jsp파일을 로드할 때 사용 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { this.con = this.db.info(); //제일 마지막에 입력된 하나의 data를 가지고오겟다 String sql = "select * from filelist order by fidx desc limit 0,1"; this.st = this.con.createStatement(); this.rs = this.st.executeQuery(sql); //ResultSet으로 받음 this.rs.next(); int fidx = this.rs.getInt(1); String f_img = this.rs.getString("f_img"); String f_text = this.rs.getString("f_text"); Date f_indate = this.rs.getDate("f_indate"); //sql에 대한 데이터를 배열에 저장 ArrayList<Object> list = new ArrayList<Object>(); list.add(fidx); list.add(f_img); list.add(f_text); list.add(f_indate); request.setAttribute("list", list); //배열 전체를 jsp로 전달 }catch(Exception e) { System.out.println("db 오류!!"); }finally { try { this.rs.close(); this.st.close(); this.con.close(); }catch(Exception e2) { System.out.println("db 오류!!"); } } //getRequestDispatcher (view 역할) : 무조건 맨 아래 this.rd = request.getRequestDispatcher("./upload_list.jsp"); this.rd.forward(request, response); } }
🔽
⚡ do에서 보낸 파일 => jsp로 받기 : upload_list.jsp
<%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% //do에서 만들어진 배열을 받아서 출력 //do에서 사용한 배열과 동일한 자료형으로 배열 생성 ArrayList<Object> list = new ArrayList<Object>(); list = (ArrayList)request.getAttribute("list"); //do에서 보낸 attribute를 받음 %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 리뷰내용 : <%=list.get(2)%><br> 상품이미지 : <img src="../<%=list.get(1)%>" width=100 height=100><br> 등록일 : <%=list.get(3)%><br> </body> </html>
'CLASS > SERVLET' 카테고리의 다른 글
#8-2 / 게시판 insert 모듈화... (0) | 2024.06.21 |
---|---|
#8-1 / 게시판 (0) | 2024.06.21 |
#7-2 / 첨부파일 기능 - java + io (0) | 2024.06.19 |
#7-1 / 회원 가입 후 로그인,로그아웃 (0) | 2024.06.19 |
#6-3 / storage (0) | 2024.06.18 |