[글 작성]
글 작성 버튼을 누르면 servlet 페이지로 이동 할 수 있게 <a> 링크를 달아 준다.
▶ servlet 페이지 구현
package imgboard.controller;
import java.io.File;
import java.io.IOException;
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;
import imgboard.ImgService;
import imgboard.ImgVo;
/**
* Servlet implementation class add
*/
@WebServlet("/imgboard/add")
public class add extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public add() {
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
request.setCharacterEncoding("euc-kr");
response.setCharacterEncoding("euc-kr");
response.setContentType("text/html; charset = EUC-KR");
RequestDispatcher dis = request.getRequestDispatcher("/imgboard/add.jsp");
dis.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
request.setCharacterEncoding("euc-kr");
response.setCharacterEncoding("euc-kr");
response.setContentType("text/html; charset = EUC-KR");
String path = "C:\\Users\\hennie\\Desktop\\eclipes\\webworkspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\webapps\\img\\";
int size = 100 * 1024 * 1024;
MultipartRequest multipart = new MultipartRequest(request, path, size, "EUC-KR", new DefaultFileRenamePolicy());
String writer = multipart.getParameter("writer");
String title = multipart.getParameter("title");
String content = multipart.getParameter("content");
File f = multipart.getFile("file");
String fname = "\\img\\" + f.getName();
ImgService service = new ImgService();
service.addImg(new ImgVo(0, writer, null, title, content, fname));
response.sendRedirect(request.getContextPath() + "/imgboard/list");
}
}
▶ doGet 요청 방식으로 요청이 왔을 때 제공 할 form 페이지 add.jsp 구현
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>파일 업로드 </h3>
<form action = "${pageContext.request.contextPath }/imgboard/add" method = "post" enctype="multipart/form-data">
<table border = "1">
<tr><th>작성자</th><td><input type = "text" name = "writer" value = "${sessionScope.loginId }" readonly></td></tr>
<tr><th>제목</th><td><input type = "text" name = "title"></td></tr>
<tr><th>내용</th><td><input type = "text" name = "content"></td></tr>
<tr><th>사진</th><td><input type = "file" name = "file"></td></tr>
<tr><th>등록</th><td><input type = "submit" name = "등록"></td></tr>
</table>
</form>
</body>
</html>
● <form action = "${pageContext.request.contextPath }/imgboard/add" method = "post" enctype="multipart/form-data">
등록 버튼을 누르면 다시 imgboard/add 의 servlet doPost 방식으로 이동하여 post의 코드를 구현 한다. 해당 폼은 이미지 역시 가지고 가기 때문에 enctype="multipart/form-data" 를 빼 먹으면 안된다.
'비동기 요청' 카테고리의 다른 글
[비동기 요청] 비동기 요청을 이용한 이미지 게시판 만들기 ⑤ (0) | 2023.04.09 |
---|---|
[비동기 요청] 비동기 요청을 이용한 이미지 게시판 만들기 ③ (0) | 2023.04.06 |
[비동기 요청] 비동기 요청을 이용한 이미지 게시판 만들기 ② (0) | 2023.04.06 |
[비동기 요청] 비동기 요청을 이용한 이미지 게시판 만들기 ① (0) | 2023.04.06 |