728x90
필요한 파일을 먼저 세팅하자
사용자정보를 데이터베이스에 테이블 추가했다고 가정함 (테이블명 : MYUSER) 추가방법은 이전글 JDBC_1 참고
DBService.java파일은 그대로 사용가능 (캡쳐생략)
VO / DAO (앞으로는 DAO파일 호출이 서블렛에서 이루어짐)
UserListAction.java
URL mappings 수정명 : /user_list.do
package action;
import java.io.IOException;
/**
* Servlet implementation class UserListAction
*/
@WebServlet("/user_list.do")
public class UserListAction 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 {
//dao에서 회원목록 얻어오기
List<UserVO> list = UserDAO.getInstance().selectList();
//바인딩
request.setAttribute("list", list);
//포워딩
RequestDispatcher disp = request.getRequestDispatcher("user_list.jsp");
disp.forward(request, response);
}
}
user_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 src = "js/httpRequest.js"></script>
<script type="text/javascript">
function del(idx){
if(confirm("삭제하시겠습니까?") == false){
return; //아니오 클릭시 빠져나감
}
//삭제를 원하는 사용자의 idx를 ajax를 이용해 서버로 전송
var url = "user_del.do";
var param = "idx="+idx;
sendRequest(url,param,resultFn,"POST");
}
function resultFn(){
if(xhr.readyState == 4 && xhr.status == 200){
//도착한 데이터 읽어오기
var data = xhr.responseText;
var json = eval(data);
if(json[0].param == "yes"){
alert("삭제완료");
}else{
alert("삭제실패");
}
location.href="user_list.do";
}
}
</script>
</head>
<body>
<table border = "1">
<tr>
<td colspan="5" align="center">
<input type= "button" value="회원가입" onclick="location.href='user_insert_form.jsp'">
</td>
</tr>
<tr>
<th>회원번호</th>
<th>이름</th>
<th>아이디</th>
<th>비밀번호</th>
<th>비고</th>
</tr>
<c:forEach var="vo" items="${list}">
<tr>
<td>${vo.idx}</td>
<td>${vo.name}</td>
<td>${vo.id}</td>
<td>${vo.pwd}</td>
<td>
<input type = "button" value="삭제" onclick="del('${vo.idx}')">
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
user_insert_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src = "js/httpRequest.js"></script> <!-- 아이디중복체크에 필요 -->
<script type="text/javascript">
var b_idCheck = false;
function send(f){
var id = f.id.value.trim();
var pwd = f.pwd.value.trim();
var name = f.name.value.trim();
if(id==""){
alert("아이디를 입력하세요");
return;
}
if(pwd==""){
alert("비밀번호를 입력하세요");
return;
}
if(name==""){
alert("이름을 입력하세요");
return;
}
if(!b_idCheck){
alert("아이디 중복체크 필요");
return;
}
f.method="POST";
f.action="insert.do";
f.submit();
}
//아이디중복체크를 위한 메서드
function check_id(){
//아이디중복체크
var id = document.getElementById("id").value.trim();
if(id==""){
alert("아이디를 입력하세요");
return;
}
//완전히 새로고침하게 되면 텍스트필드에 적힌 내용이 다 날아가고 무한대로 중복체크만 하게됨
//id를 ajax를 통해 서버로 전송
var url = "check_id.do"//UserCheckIdAction
var param = "id="+id
sendRequest(url,param,resultFn,"POST");
}
//콜백함수
function resultFn(){
if(xhr.readyState == 4 && xhr.status == 200){
var data = xhr.responseText;
var json = eval(data);
if(json[0].res=="no"){
alert("이미 사용중인 아이디입니다.");
return;
}else{
alert("사용가능한 아이디입니다.");
b_idCheck = true;
}
}
}
function che(){
b_idCheck = false;
}
</script>
</head>
<body>
<form>
<table border = "1">
<caption>:::회원가입:::</caption>
<tr>
<th>아이디</th>
<td>
<!-- onchange : input태그의 값이 변경된 후 포커스를 벗어났을 때 발생하는 이벤트-->
<input name="id" id="id" onchange="che()">
<input type="button" value="중복체크" onclick="check_id()">
</td>
</tr>
<tr>
<th>이름</th>
<td>
<input name= "name">
</td>
</tr>
<tr>
<th>비밀번호</th>
<td>
<input name= "pwd" type="password">
</td>
</tr>
<tr>
<td colspan = "2" align="center">
<input type="button" value="가입" onclick="send(this.form)">
<input type="button" value="취소" onclick="location.href='user_list.do'">
</td>
</tr>
</table>
</form>
</body>
</html>
UserInsertAction.java
URL mappings 수정명 : /insert.do
package action;
import java.io.IOException;
/**
* Servlet implementation class UserInsertAction
*/
@WebServlet("/insert.do")
public class UserInsertAction 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 {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("id");
String pwd=request.getParameter("pwd");
String name=request.getParameter("name");
UserVO vo = new UserVO();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
int res = UserDAO.getInstance().insert(vo);
if(res>=1) {
response.sendRedirect("user_list.do");
}
}
}
UserCheckIdAction.java
URL mappings 수정명 : /check_id.do
package action;
import java.io.IOException;
/**
* Servlet implementation class UserCheckIdAction
*/
@WebServlet("/check_id.do")
public class UserCheckIdAction 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 {
//check_id.do?id=aaaa
String id = request.getParameter("id");
UserVO vo = UserDAO.getInstance().selectOne(id);
String res = "no";
if(vo == null) { //중복조회해서 회원가입이 가능한 경우
res = "yes";
}
String result = String.format("[{'res':'%s'}]",res);
//result를 가지고 콜백메서드로 복귀
response.getWriter().print(result);
}
}
DAO
UserDelAction.java
URL mappings 수정명 : /user_del.do
package action;
import java.io.IOException;
/**
* Servlet implementation class UserDelAction
*/
@WebServlet("/user_del.do")
public class UserDelAction 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 idx = Integer.parseInt(request.getParameter("idx"));
//DB에 접근해서 idx에 해당하는 행 삭제하기
int res = UserDAO.getInstance().delete(idx);
System.out.println("res : "+res);
String param = "no";
if(res>0) {
param = "yes";
}
String result = String.format("[{'param':'%s'}]",param);
response.getWriter().println(result);
//getWriter.println : request를 한곳으로 데이터를 전달함
}
}
DAO
확인은 UserListAction서블릿파일에서 실행
결과
728x90
'JSP' 카테고리의 다른 글
[JSP] servlet 활용 _ 로그인, 로그아웃 기능만들기 (0) | 2023.11.04 |
---|---|
[JSP] 쿠키와 세션 (0) | 2023.11.04 |
[JSP] servlet 활용 _ 갤러리만들기 (0) | 2023.11.02 |
[JSP] servlet 활용 _ 파일업로드 (0) | 2023.11.02 |
[JSP] JSON (0) | 2023.11.01 |