06 Mar 2021
|
로그포스
2021-03-06 TIL
- 오늘 한 것
- MVC2 게시판 시험 - 소스코드를 하나하나 다 캡쳐뜨고 실행화면도 캡쳐뜨고… 보고서 형식으로 소스코드 해설하고… 하루 반나절은 여기에 매달린것 같다… 가뜩이나 시간없는데ㅠ 시험 스트레스
- 팀 프로젝트 구상 - 예제나 사이드 프로젝트를 맨날 로컬로만 만들어서 도대체 백엔드랑 어떻게 연결을 하는것인지 이걸 알지 못하면 프로젝트 구상자체를 못할것 같아서 무작정 인터넷을 찾아헤맸다. 결론은 RESTful하게 API 통신으로 JSON이나 XML 같은 파일에 담아서 프론트, 백이 서로 데이터를 주고받는다는 것을 알았다. 그리고 프론트엔드도 서버가 있다는 사실을 알고 놀라웠다. 이건 케바케인듯한데 웹서버와 API 서버를 나눠서 할 수도 있고 하나로 퉁쳐서 URL을 다르게 갈 수도 있고 방법은 여러가지인듯하다. 배포시점에서도 프론트 따로 배포하고 백 따로 배포하고 둘이 API로 통신하면 장땡인듯하다. 다른 사람들 프로젝트도 많이보고 어디 클론프로젝트 할거 없나 돌아다녔지만 역시나 사람들 만든게 다 비슷비슷하다. 쇼핑몰이 가장 무난한듯 싶으나 막상 진지하게 구현하려면 어렵겠지.. 기본 기능은 다 다둘수 있어서 쇼핑몰이 적합하다는 사람도 있고 너무 널리고 널려서 포폴에 도움이 안된다는 사람도 있고 의견이 갈리는듯하다.
- 내일 할 것
- 팀 프로젝트 자료수집
- 자바 웹스킬
그래서 JSP는 프론트 언어인가 백 언어인가..
리액트 공부는 잠시 미뤄두고 팀프로젝트를 위해 JSP로 화면구현을 하는 연습을 해야겠다.
오늘의 한 줄 총평 : JSP 공부를 하자
05 Mar 2021
|
JSP
JSP - 파일 업로드
-
form 태그
<form method="post" enctype="multipart/form-data">
<input type="file" name="filename" />
</form>
- form 태그의 인코딩 타입을 multipart/form-data로 지정한다. get, post 방식은 용량이 제한되어있기 때문이다
- 이렇게 하면 일반적으로 2GB까지 업로드가 가능하다
- 서버에서는 넘어온 데이터를 받아서 파일로 만드는 작업을 하게 된다
-
COS 라이브러리
- www.servlets.com 에 접속하여 cos 라이브러리를 다운받는다



<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.*" %>
<%@ page import="java.util.*" %>
<%
String uploadPath = application.getRealPath("upload");
int size = 10*1024*1024;
String name = "";
String subject = "";
String fileName1 = "";
String originalName1 = "";
try {
MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8", new DefaultFileRenamePolicy());
name = multi.getParameter("name");
subject = multi.getParameter("subject");
Enumeration files = multi.getFileNames();
String file1 = (String) files.nextElement();
fileName1 = multi.getFilesystemName(file1);
originalName1 = multi.getOriginalFileName(file1);
} catch(Exception e) {
e.printStackTrace();
}
%>
<body>
<form name="filecheck" action="fileCheck.jsp" method="post">
<input type="hidden" name="name" value="<%=name %>" />
<input type="hidden" name="subject" value="<%=subject %>" />
<input type="hidden" name="filename1" value="<%=fileName1 %>" />
<input type="hidden" name="originalname1" value="<%=originalName1 %>" />
</form>
<a href="#" onClick="javascript:filecheck.submit()">업로드 확인 및 다운로드 페이지 이동</a>
</body>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String subject = request.getParameter("subject");
String fileName1 = request.getParameter("filename1");
String originalName1 = request.getParameter("originalname1");
%>
<body>
올린이 : <%=name %><br>
제목 : <%=subject %><br>
파일명1 : <%=originalName1 %><br>
</body>
-
자카르타 FileUpload API를 이용한 파일 업로드
- http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
https://commons.apache.org/proper/commons-io/download_io.cgi
- 라이브러리를 다운받는다
- 파일을 서버에 올리면 서버의 지정된 폴더에 저장하고 그걸 복사해오는 방식을 이용
- FileUpload API 사용방법
- FileUpload.isMultipartContent() 메소드로 웹 브라우저가 Multipart/form-data 인코딩 타입으로 데이터를 전송했는지 판단한다
- multipart/form-data 인코딩 타입인 경우 DiskFileUpload 객체를 생성한다
- DiskFileUpload.parseRequest() 메소드를 사용해 웹 브라우저가 전송한 데이터를 추출한다
- DiskFileUpload.parseRequest() 메소드가 리턴한 FileItem 목록을 사용해 파일 및 파라미터를 처리한다
- DiskFileUpload 관련 메소드


- 서버에서는 일반적으로 FileItem.write(File file) 메소드로 업로드를 처리한다
- 업로드 처리가 완료되는 순간 임시파일을 삭제하고 싶으면 FileItem.delete() 메소드를 사용한다
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍
04 Mar 2021
|
JSP
JSP - Cookie & Session
-
Cookie
<%
Cookie cookie = new Cookie("CookieName","CookieValue");
response.addCookie(cookie);
%>
- cookie.getName, cookie.getValue로 값을 꺼내어 사용한다
- 쿠키 관련 메소드

- 쿠키 경로
- 쿠키는 그 쿠키를 생성한 서버에만 전송된다. 같은 도메인을 사용하는 서버에 대해서 모두 쿠키를 보내고 싶으면 setDomain() 메소드를 이용하여 처리할 수 있다
- .xxx.co.kr : . 으로 시작하는 경우에는 관련된 도메인 모두에게 쿠키를 전송
- www.xxx.co.kr : 특정 도메인에 대해서만 쿠키를 전송
- 도메인뿐만 아니라 setPath() 메소드를 이용하여 경로를 지정할 수 있다
- cookie.setPath(“/path”); => /path 또는 /path/sub 하위 경로에만 전송
- 쿠키의 유효시간
- 쿠키는 유효시간을 설정할 수 있다. 설정하지 않으면 웹 브라우저를 닫는 순간 삭제된다
- 유효시간을 설정하면 브라우저를 닫더라도 삭제되지 않는다
-
Session
- 쿠키가 웹 브라우저 쪽에 상태를 유지하기 위한 정보를 저장했다면, 세션은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다
- javax.servlet.http 패키지의 HttpSession 인터페이스를 통해 세션을 사용한다
- 웹 컨테이너는 기본적으로 하나의 웹 브라우저에 하나의 세션을 생성한다
- 세션은 웹 브라우저마다 따로 존재하기 때문에 웹 브라우저 관련 1 대 1 정보를 저장한다
- 서버와 관련된 정보를 노출시키지 않기 위해 쿠키보다 세션을 통한 상태관리가 효율적
- 세션 생성
<%@ page session = "true" %> <!-- 기본 설정이 true이므로 굳이 안해도 됨-->

- 한번 생성된 세션은 종료되기 전까지 지속적으로 유지된다
- setAttribute(), getAttribute() 메소드로 상태관리를 할 수 있다
<%
session.setAttribute("name","limu");
%>
<%
String name = (String)session.getAttribute("name");
%>
-
세션 종료
- invalidate() 메소드를 호출하여 세션을 종료할 수 있다. 기존 세션 객체는 삭제된다
- 세션 유효시간
- dd(web.xml)에 유효시간을 설정하는 방법
<session-config>
<session-timeout>10</session-timeout>
</session-config>
- setMaxInactiveInterval() 메소드를 활용한 유효시간 설정방법
<%
session.setMaxInactiveInterval(10*60);
%>
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍