728x90
Mybatis_1 의 2️⃣사원테이블, 3️⃣고객테이블 추가기능 만들기
2️⃣사원테이블에서 부서별로 사원을 조회할 수 있는 기능 만들기
sawon_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- 코어라이브러리 -->
<%@ taglib prefix ="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <!-- 자바함수사용가능 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function find(){
//select 태그의 value값을 가져온다.
//where절이 있는 쿼리문을 작성해야 한다.
var deptno = document.getElementById("deptno").value;
//폼태그를 사용하고 있지 않아서 location.href를 통해 보낸다.
location.href="sawon_list.do?deptno="+deptno;
}
//window.onload : html이 모두 로드된 후 작동하는 콜백함수
window.onload = function(){
var deptno = document.getElementById("deptno");
var dept_array = [0,10,20,30,40,50];
for(var i =0; i<dept_array.length; i++){
if('${param.deptno}' == dept_array[i]){
//특정 option을 강제로 남겨둘 수 있다.
deptno[i].selected = true;
break;
}
}
}
</script>
</head>
<body>
<div align="center">
부서명:
<select id="deptno">
<option value="0">:::부서를 선택하세요:::</option>
<option value="10">총무부</option>
<option value="20">영업부</option>
<option value="30">전산실</option>
<option value="40">관리부</option>
<option value="50">경리부</option>
</select>
<input type="button" value="검색" onclick="find()">
</div>
<hr>
<table border="1" align="center">
<caption>:::사원목록:::</caption>
<tr>
<th>사번</th>
<th>이름</th>
<th>직책</th>
<th>급여</th>
<th>입사일</th>
</tr>
<c:forEach var="vo" items="${list}">
<tr>
<td>${vo.sabun}</td>
<td>${vo.saname}</td>
<td>${vo.sajob}</td>
<td>${vo.sapay}</td>
<c:set var = "sahire" value="${vo.sahire}"/>
<td>${fn:split(sahire," ")[0]}</td> <!-- 띄어쓰기 기준으로 나누고 0번째배열 가져오기 -->
<%-- <td>${vo.sahire}</td> --%> <!-- 날짜와 시간이 출력됨. 시간은 필요없으니 짤라보자 -->
</tr>
</c:forEach>
</table>
</body>
</html>
SawonListAction.java
package action;
import java.io.IOException;
/**
* Servlet implementation class SawonListAction
*/
@WebServlet("/sawon_list.do")
public class SawonListAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int deptno = 0;
String str_deptno = request.getParameter("deptno"); //string으로 넘어오기때문에 string으로 받는다
//sawon_list.do?deptno= ->empty상태
//sawon_list.do? ->null상태
if(str_deptno != null && !str_deptno.isEmpty()) { //null이 아니고 비어있지 않아야
deptno = Integer.parseInt(str_deptno); //매개변수를 정수로 변환가능
}
// 사원목록조회
List<SawonVO> list = /* SawonDAO.getInstance().select(); */ null;
if(deptno == 0) {
list = SawonDAO.getInstance().select(); //전체조회
}else {
list = SawonDAO.getInstance().select(deptno); //파라미터 해당 부분조회
}
//바인딩
request.setAttribute("list", list);
//포워딩
RequestDispatcher disp = request.getRequestDispatcher("sawon_list.jsp");
disp.forward(request, response);
}
}
SawonDAO.java
////////////////////////////////////////////////////////////
//이어서
//부서별 사원목록
public List<SawonVO> select(int deptno){ //오버로딩 조건 중 파라미터 갯수가 다르면 가능
//1. 처리객체 가져오기
SqlSession sqlSession = factory.openSession();
//2. 처리객체를 사용하여 작업수행
//sqlSession이 관리하는 CRUD관련 메서드는 파라미터를 추가할 수 있다.
//단, 파라미터는 한개만 추가할 수 있다.
List<SawonVO> list = sqlSession.selectList("sawon.sawon_list_no",deptno);
//3.사용 후에는 처리객체반환(connection, pstmt, resultSet 등을 반환하는 작업이 내장되어있다.)
sqlSession.close();
return list;
}
}
sawon.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sawon">
<!-- mapper : DB에 쿼리문을 요청하고 결과를 돌려받는 속성파일 -->
<select id="sawon_list" resultType="vo.SawonVO"> <!-- select는 항상 resultType정해줘야함 패키지명.VO파일명-->
SELECT * FROM SAWON <!-- 세미콜론 절대 금지 -->
</select>
<select id="sawon_list_no" resultType="vo.SawonVO" parameterType="int">
SELECT * FROM SAWON WHERE DEPTNO = #{deptno}
</select>
</mapper>
이후 DAO로 돌아가서 list반환 후 서블릿으로 돌아가서 전체조회 or 부분조회 후 바인딩,포워딩 진행
결과
3️⃣고객테이블에서 주소를 검색할 수 있는 기능 만들기
gogek_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- 코어라이브러리 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function search(){
var search = document.getElementById("search").value.trim();
location.href="gogek_list.do?search="+search;
}
</script>
</head>
<body>
<div align="center">
지역 :
<input id="search" placeholder="검색어를 입력하세요">
<input type="button" value="검색" onclick="search()">
</div>
<hr>
<table border="1" align="center">
<caption>:::고객리스트:::</caption>
<tr>
<th>고객번호</th>
<th>담당자</th>
<th>이름</th>
<th>주소</th>
<th>주민번호</th>
</tr>
<c:forEach var="vo" items="${list}">
<tr>
<td>${vo.gobun}</td>
<td>${vo.godam}</td>
<td>${vo.goname}</td>
<td>${vo.goaddr}</td>
<td>${vo.gojumin}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
GogekListAction.java
package action;
import java.io.IOException;
/**
* Servlet implementation class GogekListAction
*/
@WebServlet("/gogek_list.do")
public class GogekListAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String search="all";
String str_search = request.getParameter("search");
if(str_search != null && !str_search.isEmpty()) {
search = str_search;
}
// 고객목록조회
List<GogekVO> list = /* GogekDAO.getInstance().select(); */ null;
if(search.equals("all")) {
list = GogekDAO.getInstance().select();
} else {
list = GogekDAO.getInstance().select(search);
}
//바인딩
request.setAttribute("list", list);
//포워딩
RequestDispatcher disp = request.getRequestDispatcher("gogek_list.jsp");
disp.forward(request, response);
}
}
SawonDAO.java
////////////////////////////////////////////////////////////
//이어서
public List<GogekVO> select(String search){ //오버로드
SqlSession sqlSession = factory.openSession();
List<GogekVO> list = sqlSession.selectList("gogek.gogek_select",search);
//xml의 namespace와 id
sqlSession.close();
return list;
}
}
gogek.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gogek">
<!-- mapper : DB에 쿼리문을 요청하고 결과를 돌려받는 속성파일 -->
<select id="gogek_list" resultType="vo.GogekVO"> <!-- select는 항상 resultType정해줘야함 패키지명.VO파일명-->
SELECT * FROM GOGEK <!-- 세미콜론 절대 금지 -->
</select>
<select id="gogek_select" resultType="vo.GogekVO" parameterType="String">
SELECT * FROM GOGEK WHERE GOADDR LIKE '%'||#{GOADDR}||'%' <!-- 띄어쓰기하면안됨 -->
</select>
</mapper>
결과
728x90
'JSP' 카테고리의 다른 글
[JSP] Mybatis_1 (0) | 2023.11.06 |
---|---|
[JSP] servlet 활용 _ 로그인, 로그아웃 기능만들기 (0) | 2023.11.04 |
[JSP] 쿠키와 세션 (0) | 2023.11.04 |
[JSP] servlet 활용 _ 사용자목록만들기 (0) | 2023.11.03 |
[JSP] servlet 활용 _ 갤러리만들기 (0) | 2023.11.02 |