* Dynamic Web Project로 생성한 프로젝트의 [ WebContent -> WEB-INF-> lib ] 폴더에 필요한 라이브러리를 넣어둔다.
아래는 자주 사용하는 5가지 자바 라이브러리에 대한 설명이다.
1. json-simple 라이브러리
- Apache에서 만든 라이브러리로 JSONObject와 JSONArray 클래스를 사용해 DB에서 가져온 데이터를 json타입으로 변경한다.
[사용법]
1) 라이브러리 import
2) for문으로 반복하여 JSONObject에 각각의 vo 칼럼 데이터를 put메서드로 담아준다
3) JSONObject를 JSONArray에 넣어 배열로 변환한다
4) PrintWriter 객체의 println 메서드를 이용해 출력한다.
핸들바로 JSP 데이터 출력하기 (mysql 데이터 json타입 변환)
📌 목차 1. DB연결 2. VO파일 생성 3. DAO생성해서 DB 데이터 가져오기 4. json-simple-1.1.1 라이브러리 5. DB 데이터 json타입으로 변환 (컨트롤러) 6. jsp에서 출력하기 (뷰) - JAVA Resources 파일의 src안에 control
shinye-developmentdiary.tistory.com
2. Gson 라이브러리
- google에서 만든 라이브러리로 json-simple에 비해 JSON을 훨씬 더 효율적으로 생성하고 파싱할 수 있다.
[사용법]
1) import com.google.gson.Gson;을 위에 작성해 라이브러리를 import해준다
2) Gson객체를 생성한 뒤 toJson메서드를 이용해 데이터를 json타입으로 변환한다
3) PrintWriter 객체의 println 메서드를 이용해 출력한다.
PrintWriter out = response.getWriter();
case "/books.json":
int page = Integer.parseInt(request.getParameter("page"));
int size = Integer.parseInt(request.getParameter("size"));
Gson gson = new Gson();
out.println(gson.toJson(dao.list(page, size)));
break;
3. mysql-connector-java 라이브러리
- MySQL 데이터베이스에 연결하기 위한 라이브러리이다.
[사용법]
1) DB연결하는 자바클래스 생성
2) DAO에서 import.java.sql.*을 작성한다
3) 해당 라이브러리에서 제공하는 PreparedStatement로 객체를 생성해 DB.CON으로 db와 연결하여 sql을 실행한다
* mysql-connector-java라이브러리가 없으면 db와 연결할 수 없음
4) ResultSet로 결과를 담아 select문으로 실행한 결과의 데이터를 가져올 수 있다.
[DB.java 코드]
package model;
import java.sql.*;
public class DB {
public static Connection CON;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
CON = DriverManager.getConnection("jdbc:mysql://localhost:3306/webdb", "web", "pass");
System.out.println("접속성공");
} catch (Exception e) {
System.out.println("접속실패:" + e.toString());
}
}
}
[DAO코드 예시]
public UserVO read(String uid) {
UserVO vo = new UserVO();
try {
String sql = "select * from users where uid=?";
PreparedStatement ps = DB.CON.prepareStatement(sql);
ps.setString(1, uid);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
vo.setUid(rs.getString("uid"));
vo.setUpass(rs.getString("upass"));
vo.setUname(rs.getString("uname"));
}
}catch(Exception e) {
System.out.println("사용자정보오류"+e.toString());
}
return vo;
}
}
4. jstl 라이브러리 (JavaServerPages Standard Tag Library)
- jsp 페이지에서 java코드를 사용하지 않고도 웹 애플리케이션을 개발할 수 있도록 도와주는 라이브러리이며 태그형태로 작성한다.
- 주로 조건문과 반복문을 쓰기 위해 사용한다.
[사용법]
1) jsp에 아래 태그 작성
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> |
2) 조건문 사용하기
<c:if test="조건식"> 조건에 만족할때 보여줄 값 </c:if> |
[조건문 예제]
<c:if test="${user.photo==null}">
<img id="photo" src="http://via.placeholder.com/170X170" width="170"/>
</c:if>
<c:if test="${user.photo != null}">
<img id="photo" src="/images/photos/${user.photo}" width="170" />
</c:if>
3) 반복문 사용하기
<c:forEach items="배열" var="변수명"></c:forEach> |
- 작성한 변수명으로 배열을 출력, 여러 속성이 있을 때는 변수명. 속성명으로 출력한다.
<c:forEach items="${list}" var="user">
<div>
<h5>${user.uid} (${user.uname})</h5>
<p>${user.address}</p>
<p>${user.phone}</p>
</div>
</c:forEach>
5. cos 라이브러리(Com.oreiily.servlet)
- Java웹 애플리케이션에서 파일 업로드를 쉽게 구현할 수 있도록 도와주는 라이브러리이다.
[사용법]
1) jsp파일의 form태그 안에 enctype="multipart/form-data" 속성을 설정한다.
2) 파일속성 들어가 있는 input의 type="file"인 태그에 name속성으로 이름을 부여 name="photo"
** input 타입 file에 accept="image/*" 속성 주면 이미지형식 파일만 선택할 수 있다.
3) 컨트롤러에서 아래 cos라이브러리 클래스 import
import com.oreilly.servlet.MultipartRequest; import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; |
4) MultipartRequest로 파일에 대해 속성을 설정
5) getFilesystemName() 메서드로 form에서 name을 photo로 지정한 파일의 이름을 가져온다.
6) form의 enctype="multipart/form-data"을 설정한 데이터는 MultipartRequest의 getParameter로 값을 가져온다.
[예제]
case "/users/update":
MultipartRequest multi = new MultipartRequest(request, "c:/images/photos",
1024*1024*10,"UTF-8",new DefaultFileRenamePolicy());
String photo = multi.getFilesystemName("photo");
vo = new UserVO();
vo.setUid(multi.getParameter("uid"));
vo.setUpass(multi.getParameter("upass"));
vo.setUname(multi.getParameter("uname"));
vo.setAddress(multi.getParameter("address"));
vo.setPhone(multi.getParameter("phone"));
if(photo==null) {
vo.setPhoto(multi.getParameter("old"));
}else {
vo.setPhoto(photo);
}
dao.update(vo);
response.sendRedirect("/books");
break;
[상세설명]
MultipartRequest multi = new MultipartRequest(request, "c:/images/photos",
1024*1024*10,"UTF-8",new DefaultFileRenamePolicy());
1. http 요청(request)에서 파일 데이터를 추출한다
2. c:/images/photos 폴더에 업로드한 파일 저장
3) 1024*1024*10은 파일의 최대크기로 10MB를 의미한다. [1KB-1MB-10MB]
4) "UTF-8"로 요청에 대한 인코딩을 지정해 파일명이 깨지지 않도록 한다.
5) new DefaultFileRenamePolicy() 클래스를 사용해 파일 업로드 시 파일이름 재지정 정책을 구현한다
-> 파일 이름 충돌방지로 동일 파일이 있을 경우 이름 뒤에 일련번호가 추가됨
'BE > Java [Servlet , Spring]' 카테고리의 다른 글
Spring mysql DB와 연결하기 (pom.xml버전변경, root-context.xml 타임존) (0) | 2023.08.03 |
---|---|
자바 스프링(Spring) 기초 - MySQl연결, Mapper , DAOImpl (0) | 2023.04.20 |
핸들바로 JSP 데이터 출력하기 (mysql 데이터 json타입 변환) (0) | 2023.03.31 |
MVC구조 및 아파치 톰캣 서버를 사용한 JSP & Servlet 파일 생성 (0) | 2023.03.31 |
Oracle(SQL Developer) & JAVA 상품 주문 관리 프로그램 리뷰 - 1. SQL문 (0) | 2023.01.24 |