67일차_JAVA

서창민·2023년 6월 15일
0

JAVA

목록 보기
19/21
post-thumbnail

23.06.15 목 67일차

JAVA

  • MVC패턴 게시판 (C,R,U,D) 작성

PsdController (CRUD) 코드

insert

package pds;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

/**
 * Servlet implementation class PsdController
 */
@WebServlet("/PsdInsertController")
public class PsdInsertController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public PsdInsertController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());
		
		 String realFolder="";
		 String saveFolder ="/psdmvc/files/";
		 String encType="UTF-8";
		 int  maxSize = 5*1024*1024 ; // 5MB

		 realFolder=getServletContext().getRealPath(saveFolder);
		 
		 // 1) 파일이 저장되는 시점 
		 MultipartRequest multi
		     = new MultipartRequest(request,realFolder,maxSize,encType,new DefaultFileRenamePolicy() );
		 
		 
		 String m_sno = multi.getParameter("m_sno");
		 String m_sname = multi.getParameter("m_sname");
		 String m_etc = multi.getParameter("m_etc");
		 
		 String m_filesName = multi.getFilesystemName("m_files");
		 
		 if (m_filesName == null){
				m_filesName ="space.png";
		 }
		 
		 System.out.println("realFolder:" + realFolder );
		 PsdVO vo = new PsdVO();
		 vo.setM_sno(m_sno);
		 vo.setM_sname(m_sname);
		 vo.setM_filesname(m_filesName);
		 vo.setM_etc(m_etc);
		 
		 PsdService s = new PsdServiceImpl();
		 s.insert(vo);
		 
		 response.sendRedirect("PsdSelectController");
		 
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
select


package pds;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class PsdSelectController
 */
@WebServlet("/PsdSelectController")
public class PsdSelectController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public PsdSelectController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());
		
		PsdService s = new PsdServiceImpl();
		 List<PsdVO> li = s.selectAll(null);		
		request.setAttribute("li", li);
		
		RequestDispatcher dispatcher
		  =request.getRequestDispatcher("psdmvc/psd_list.jsp");
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
update


package pds;

import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

/**
 * Servlet implementation class PsdUpdateCopntroller
 */
@WebServlet("/PsdUpdateController")
public class PsdUpdateController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public PsdUpdateController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// response.getWriter().append("Served at: ").append(request.getContextPath());
		
		String realFolder="";
		String saveFolder ="/psdmvc/files/";
		String encType="UTF-8";
		int  maxSize = 5*1024*1024 ; // 5MB

		realFolder=getServletContext().getRealPath(saveFolder);

		// 1) 파일이 저장되는 시점 
		MultipartRequest multi
		    = new MultipartRequest(request,realFolder,maxSize,encType,new DefaultFileRenamePolicy() );

		String m_idx= multi.getParameter("m_idx");
		String m_sno= multi.getParameter("m_sno");
		String m_sname= multi.getParameter("m_sname");
		String m_etc= multi.getParameter("m_etc");
		String m_fileName = multi.getFilesystemName("m_files");

		PsdService  s = new PsdServiceImpl();
		PsdVO vo = s.selectOne(Integer.parseInt(m_idx));
		String delFileName = vo.getM_filesname();
		
		String delFile = realFolder + delFileName ; // 실제파일
		File f=new File(delFile);

		// 수정에서 파일 첨부에 값을 첨부하면 기존 파일 삭제
		if(delFileName!=null){
			// space.png 가 아니면 삭제
			if(!delFileName.equals("space.png")){	
			  f.delete();	
			}
		}
		
		vo = new PsdVO();
		vo.setM_idx(Integer.parseInt(m_idx));
		vo.setM_sno(m_sno);
		vo.setM_sname(m_sname);
		vo.setM_filesname(m_fileName);
		vo.setM_etc(m_etc);		
		s.update(vo);

		response.sendRedirect("/PsdSelectController");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
delete

jsp (게시판) 코드

list

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="pds.*" %>
<%@ page import="java.util.*"%>

<%@ include file ="/include/top.jsp" %>

<%
 @SuppressWarnings("unchecked")
 List<PsdVO> li =(ArrayList<PsdVO>) request.getAttribute("li");
%>
<section>
<br>
<div align="center">
<h2> 회원목록보기   </h2>

<table border=1 width=500 >
<tr align="center"><td>순번 </td><td>학번 </td><td>이름 </td>
<td>파일명 </td><td>사진 </td><td>조회수 </td>
<% for(PsdVO m : li  ) { %>
<tr align="center">
<td>
    <a href="<%=path %>/PsdEditController?m_idx=<%=m.getM_idx() %>">
      <%=m.getM_idx() %> 
    </a>
</td>
<td><%=m.getM_sno() %> </td>
<td><%=m.getM_sname() %> </td>
<td><%=m.getM_filesname() %> </td>
<td><img src='<%=path%>/psdmvc/files/<%=m.getM_filesname() %>' width=50  height=50 /> </td>
<td><%=m.getM_cnt() %> </td>

<% } %>
</table>

</div>

</section>
<%@ include file ="/include/footer.jsp" %>
form

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="/include/top.jsp" %>
<script>
	function formOk(){
		var fileName = document.getElementById("m_files").value;
		// C:\Users\605-20\Desktop\이미지\파일명.jpg
		alert("확인 1: "+fileName); 
		// 점의 위치의 자리수 가져오기 즉 30
		alert("확인 2: "+fileName.indexOf(".")); 
		 // 30+1 한 후 뒤자리 글자를 자른 값을 리턴 즉, 확장자 리턴
		alert("확인 3: "+fileName.slice(fileName.indexOf(".")+1));
		
		// 확장자 리턴 후 소문자로 변경
		var ext = fileName.slice(fileName.indexOf(".")+1).toLowerCase();
		
		if( f1.m_sno.value == ""){
			alert("학번을 확인해주세요");
			return false;
			if(fileName !=""){
				var fileSize = document.getElementById("m_files").files[0].size;
				var maxSize = 1 * 1024 * 1024; // 1MB
					if(fileSize > maxSize){
						alert("파일사이즈는 1MB 미만으로 추가 해주세요.");
						return false;
					}
			}
			if((ext != "jpg") || (ext !="gif") || (ext !="png")){
						alert("이미지는 jpg, png, gif 파일만 사용 가능합니다.");
						return false;
			}
		}else{
			f1.submit();		
		}
	}
</script>
	<section>
		<br>
		<div align=center>
			<h2>회원가입 프로그램</h2>
			<form name=f1 action="formOk.jsp" method="post"
						enctype="multipart/form-data" onSubmit="return formOk()">
				<table border=1 width="450" height=300>
					<tr><td align=center>학번</td><td><input type=text name=m_sno></td></tr>
					<tr><td align=center>이름</td><td><input type=text name=m_sname></td></tr>
					<tr><td align=center>파일</td><td><input type=file name=m_files></td></tr>
					<tr><td align=center>특이사항</td><td>
						  <textarea cols=40 rows =5 name=m_etc></textarea></td></tr>
					<tr><td colspan=2 align=center>
					  	  <input type=submit value="회원가입">&emsp;
					  	  <input type=reset value="다시작성"></td></tr>					
				</table>
			</form>	
		</div>
		<br>
	</section>
<%@ include file="/include/footer.jsp" %>
edit

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="pds.*" %>
<%@ page import="java.util.*"%>

<%@ include file ="/include/top.jsp" %>

<%
PsdVO  m = (PsdVO)request.getAttribute("m");

%>
<script>
function delK(k){
  alert("K확인:" +k)	
  location.href="psd_delete.jsp?m_idx="+k
  // location.href=`psd_delete.jsp?m_idx=${'${k}'}`;
  // 안쪽은 ES6의 표기법이고 바깥쪽은 EL 표기법 ()
}

function formOK(){
	alert("확인")
	f1.submit();
}

</script>

<section>
<br>
<div align="center">
<h2> 회 원 상 세 보 기   </h2>

<form name="f1" action=PsdUpdateCopntroller method="post" 
      enctype="multipart/form-data"  onSubmit="return formOK()"   >

<input  type=hidden name="m_idx" value='<%=m.getM_idx() %>' >
<table border=1 width=450  height=270>

<tr><td width=50 align="center">학번 </td><td><input type=text  name=m_sno value=<%=m.getM_sno() %> > </td><td rowspan=3 align="center"> <img src='<%=path %>/psdmvc/files/<%=m.getM_filesname() %>' width=100 height=100>  </td> </tr>
<tr><td align="center">이름 </td><td><input type=text  name=m_sname  value=<%=m.getM_sname() %> > </td></tr>
<tr><td align="center">사진 </td><td><input type=file  name=m_files></tr>
<tr><td align="center" >특이<br>사항 </td>
    <td colspan=2><textarea cols=45 rows=5 name=m_etc><%=m.getM_etc() %></textarea></tr>
<tr><td colspan=3 align="center">
        <input type=submit value="수정하기" > &emsp; 
        <input type=button value="삭제하기"
               onClick="delK('<%=m.getM_idx() %>')" > </td></tr>
</table>
</form>

</div>

</section>
<%@ include file ="/include/footer.jsp" %>
  • Controller 묶기

SW로 받은 URL의 값에 각 문자를 지정해주어서 컨트롤러를 묶어줄 수 있다.

package pds;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

@WebServlet("/PsdController")
public class PsdController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public PsdController() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String sw = request.getParameter("sw");

		if (sw.equals("I")) {
			String realFolder = "";
			String saveFolder = "/psdmvc/files/"; // 파일이 저장되는 폴더지정
			String encType = "UTF-8"; // 인고딩 타입
			int maxSize = 5 * 1024 * 1024; // 최대 업로드될 파일크기 5MB

			realFolder = getServletContext().getRealPath(saveFolder);
			System.out.println(realFolder);

			MultipartRequest multi = new MultipartRequest(request, realFolder, maxSize, encType,
					new DefaultFileRenamePolicy());

			String m_sno = multi.getParameter("m_sno");
			String m_sname = multi.getParameter("m_sname");
			String m_etc = multi.getParameter("m_etc");

			String m_filesName = multi.getFilesystemName("m_files");

			if (m_filesName == null) {
				m_filesName = "space.png";
			}
			PsdVO vo = new PsdVO();
			vo.setM_sno(m_sno);
			vo.setM_sname(m_sname);
			vo.setM_filesname(m_filesName);
			vo.setM_etc(m_etc);
			PsdService s = new PsdServiceImpl();
			s.insert(vo);
			response.sendRedirect("PsdController?sw=S");
		} else if (sw.equals("S")) {
			
			PsdService s = new PsdServiceImpl();
			PsdVO vo = new PsdVO();

			List<PsdVO> li = s.selectAll(vo);

			request.setAttribute("li", li);
			RequestDispatcher dispatcher = request.getRequestDispatcher("psdmvc/psd_list.jsp");
			dispatcher.forward(request, response);
		}else if(sw.equals("U")) {
			String realFolder="";
			String saveFolder ="/psdmvc/files/";
			String encType="UTF-8";
			int  maxSize = 5*1024*1024 ; // 5MB
			realFolder=getServletContext().getRealPath(saveFolder);

			// 1) 파일이 저장되는 시점 
			MultipartRequest multi
			    = new MultipartRequest(request,realFolder,maxSize,encType,new DefaultFileRenamePolicy() );

			String m_idx= multi.getParameter("m_idx");
			String m_sno= multi.getParameter("m_sno");
			String m_sname= multi.getParameter("m_sname");
			String m_etc= multi.getParameter("m_etc");
			String m_fileName = multi.getFilesystemName("m_files");

			PsdService s = new PsdServiceImpl();
			PsdVO vo = s.selectOne(Integer.parseInt(m_idx));
			String delFileName = vo.getM_filesname();

			String delFile = realFolder + delFileName ;
			File f=new File(delFile);

			// 수정에서 파일 첨부에 값을 첨부하면 기존 파일 삭제
			if(m_fileName!=null){
				// space.png 가 아니면 삭제
				if(!delFileName.equals("space.png")){	
				  f.delete();	
				}	
			}
			vo = new PsdVO();
			vo.setM_idx(Integer.parseInt(m_idx));
			vo.setM_sno(m_sno);
			vo.setM_sname(m_sname);
			vo.setM_filesname(m_fileName);
			vo.setM_etc(m_etc);

			s.update(vo);
			response.sendRedirect("PsdController?sw=S");
		}else if(sw.equals("E")){
			PsdService s = new PsdServiceImpl();
			int m_idx = Integer.parseInt(request.getParameter("m_idx"));
			
			request.setAttribute("m",s.selectOne(m_idx));
			RequestDispatcher dispatcher = request.getRequestDispatcher("psdmvc/psd_edit.jsp");
			dispatcher.forward(request, response);
			
		}else if(sw.equals("D")){
			PsdService s = new PsdServiceImpl();
			
			int m_idx = Integer.parseInt(request.getParameter("m_idx"));
			PsdVO vo = s.selectOne(m_idx);
			
			String delFile = vo.getM_filesname();
			String saveForder = "/psdmvc/files/";
			
			String realForder = getServletContext().getRealPath(saveForder);
			File f= new File(realForder+delFile);
			
			if(!delFile.equals("space.png")) {
				f.delete();
			}
		
			vo.setM_idx(m_idx);
			s.delete(vo);
			response.sendRedirect("PsdController?sw=S");
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}
profile
Back-end Developer Preparation Students

0개의 댓글