오늘 한 것 _ web10servlet_HR
9시_ 사원등록에 목록보기로 변경
1. empInsert.do에서 job_id을 입력이 아닌 선택 목록창 나오게 하는 방법을 배움.
10시_ 사원등록에 목록보기로 변경
2. manager_id, department_id도 db에서 가져와서 목록창으로 선택하게 하기.
1. insert.jsp
<tr>
<td><label for="manager_id">manager_id:</label></td>
<td>
<select name="manager_id">
<c:forEach var="managers" items="${manager_ids}">
<option value ="${managers.manager_id}">${managers.manager_id}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td><label for="department_id">department_id:</label></td>
<td>
<select name="department_id">
<c:forEach var="departments" items="${department_ids}">
<option value ="${departments.department_id}">${departments.department_id}</option>
</c:forEach>
</select>
</td>
</tr>
2. controller.java
if(sPath.equals("/empInsert.do")) {
List<JOBVO> job_ids = dao.getJob_ids();
// for(JOBVO x : job_ids) {
// System.out.println(x.getJob_id());
// }
List<DepartmentVO> manager_ids = dao.getmanager_ids();
// for(DepartmentVO x : manager_ids) {
// System.out.println(x.getManager_id());
// }
List<DepartmentVO> department_ids = dao.getdepartment_ids();
request.setAttribute("job_ids", job_ids);
request.setAttribute("manager_ids", manager_ids);
request.setAttribute("department_ids", department_ids);
request.getRequestDispatcher("emp/insert.jsp").forward(request, response);
}
3. DAO.java에 getmanager_ids()와 getdepartment_ids() 추가
public List<JOBVO> getJob_ids();
public List<DepartmentVO> getmanager_ids();
public List<DepartmentVO> getdepartment_ids();
4. DAOimpl에 추상클래스 상속을 받아라.
- The type EmployeeDAOimpl must implement the inherited abstract method {get~}
@Override
public List<DepartmentVO> getmanager_ids() {
System.out.println("getmanager_ids()...");
List<DepartmentVO> manager_ids = new ArrayList<DepartmentVO>();
try {
// 1.커넥션(계정접속)
conn = DriverManager.getConnection(DBinfo.URL, DBinfo.USER_NAME, DBinfo.PASSWORD);
System.out.println("conn successed...");
// 2.SQL(질의문) 세팅
pstmt = conn.prepareStatement(EmployeeSQL.SELECT_MANAGER_ID);
// 3.결과반환 rs >> vos
rs = pstmt.executeQuery();
System.out.println(rs);
while (rs.next()) {
DepartmentVO vo = new DepartmentVO();
vo.setManager_id(rs.getInt("manager_id"));
manager_ids.add(vo);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // end finally
return manager_ids;
}
@Override
public List<DepartmentVO> getdepartment_ids() {
System.out.println("getdepartment_ids()...");
List<DepartmentVO> department_ids = new ArrayList<DepartmentVO>();
try {
// 1.커넥션(계정접속)
conn = DriverManager.getConnection(DBinfo.URL, DBinfo.USER_NAME, DBinfo.PASSWORD);
System.out.println("conn successed...");
// 2.SQL(질의문) 세팅
pstmt = conn.prepareStatement(EmployeeSQL.SELECT_DEPARTMENT_ID);
// 3.결과반환 rs >> vos
rs = pstmt.executeQuery();
System.out.println(rs);
while (rs.next()) {
DepartmentVO vo = new DepartmentVO();
vo.setDepartment_id(rs.getInt("department_id"));
department_ids.add(vo);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // end finally
return department_ids;
}
5. SQL 추가
String SELECT_JOB_ID = "select job_id from jobs order by job_id";
String SELECT_MANAGER_ID ="select manager_id from departments where manager_id is not null order by manager_id";
String SELECT_DEPARTMENT_ID = "select department_id from departments where department_id is not null order by department_id";
11시_
3. 부서등록 폼(department)에서 manger_id도 목록창으로 변경.
- 이는 모든 사원중 1명으로 employeeDB에 접근해서 가져와야한다.
<select name="manager_id">
<c:forEach var="Employees" items="${manager_ids}"> <option value ="${Employees.employee_id}">${Employees.employee_id}</option> </c:forEach> </select> |
var 변수는 내가 설정하는 것이며, option value안의 설정 이름과 동일해야한다.
${manager_ids}는 controller.java에서 설정한 request.setAttribute("manager_ids", employees_ids);
에서 오는 것임으로 이것도 변수다.
이클립스 줄맞춤 단축키는 command + shift + f
4. 부서등록 폼에서 location_id도 목록창으로 변경.
<td>
<select name="location_id"> <c:forEach var="locations" items="${location_ids}"> <option value="${locations.location_id}">${locations.location_id}</option> </c:forEach> </select> </td> |
location_id 오타 나서 에러뜨는 문제에 대해서 실수함. location_ids로 하면 안된다.
13시 _ 직원정보 수정, 삭제 기능 만들기
14시 _ 부서정보 수정, 삭제 기능 만들기
15시 _ web11fileupload 실습.
다양한 라이브러리들을 다운 받을 수 있는 사이트
https://mvnrepository.com/
파일 업로드를 위해서 2가지 라이브러리를 다운 받는다.
- commons-fileupload.jar
- commons-io.jar
기존에는 request.getParameter("name") 이런 방식으로 값을 받았다.
하지만 파일의 경우에는 다른 방식으로 받아야한다.
정상적으로 파일이 들어오면 true를 반환한다.
boolean isMuultipart = ServletFileUpload.isMultipartContent(request);
System.out.println(isMuultipart);
realPath는 사진 업로드할 폴더 경로를 의미한다.
if(isMuultipart) {
String realPath = request.getServletContext().getRealPath("uploadimg");
System.out.println(realPath);
File temporaryDir = new File(realPath);
DiskFileItemFactory factory = new DiskFileItemFactory();
int max = 1024 * 1024 * 10; //10MB
factory.setSizeThreshold(max);
factory.setRepository(temporaryDir);
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
}
16시_ 파일 업로드를 DB와 연결해서 업도르 실행한다.
1. SQL DEbeloper에 먼저 테이블 생성한다. ![]() < 입력값이 잘 들어 왔다. > 2. 아래와 같이 .java 파일들을 만들어서 연결을 하여 실행해 준다. ![]() |
17시_ 마지막 시간! _ 업로드 한 파일들 목록 보게 하기
오늘도 정말 많은 수업진도를 나아갔다.
중간에 갑자기 너무 많은 과제와 짧은 시간으로 이루어져서 당황했지만,
어영부영 급급하게 쉬는시간을 포기하고 성공은 했지만, 나의 복습 부족을 인지하게 되는 시간이 되었던 것 같다.
오늘은 복습을 좀 더 한 후에 이해를 해 볼 예정이다.
또한 Job테이블을 이용해서 emp, dept를 만들었던 기능을 복습해 보는 시간을 오늘은 꼭! 하고 블로그를 써보자.
오늘도 잡생각이 많이 들었다.
수업을 들으면 이해가 다 되는 것 같은데, 막상 혼자서 할려고 하면 버벅거리고 허둥대는 것 같다.
어느새 한달이 지났다는 것도 믿겨지지가 않는다.
처음에는 블로그도 매일 써야지 했는데 노션에만 정리해두고 나중에 또 할려고 하니 안하게 되었다.
그래서 바로바로 쉬는시간마다 한 내용을 정리해 보니 복습겸 기록이 동시에 가능해진는 것 같아서 앞으로는 이렇게 해 볼 생각이다.
점점 여유 시간이 부족해 지는 느낌이다.
끝까지 포기하지 않고, 열심히 해보자!!