controller
package kr.or.ddit.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.member.vo.MemberVO;
public class TestController extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
/*
* URL ==> http://localhost/servletTest02/member/memberList.do
* URI ==> /servletTest02/member/memberList.do
* ContextPath ==> /servletTest02
* 원하는 요청 URI ==> /member/memberList.do
*/
//사용자의 요청 정보 가져오기
//URI ==> /servletTest02/member/memberList.do
String uri = request.getRequestURI();
//
uri = uri.substring(request.getContextPath().length());
System.out.println("uri => " + uri);
String viewPage = null; //view 페이지가 저장될 변수 선언
if(uri == null) {
}else if ("/member/memberList.do".equals(uri)) {
//URI 에 맞는 작업을 진행한다. ( 예 : 전체 회원정보 가져오기 )
IMemberService memService = MemberServiceImpl.getInstance();
List<MemberVO> memList = memService.getALLMemberList();
//가져온 정보를 Request 객체의 setAttribute() 메서드를 이용해서
// ==> view 페이지로 전달할 데이터를 셋팅한다.
request.setAttribute("memList", memList);
viewPage = "/member/memberList.jsp"; //viewPage 설정
}else if ("/member/memberView.do".equals(uri)) {
//상세정보보기
}else if( "/member/memberDelete.do".equals(uri)){
//삭제하기
IMemberService memService = MemberServiceImpl.getInstance();
int res = memService.deleteMember(memId);
request.setAttribute("deleteres", res);
viewPage ="/member/memberDelete.jsp";
}
//해당 view 페이지를 포워딩 또는 리다이렉트한다.
//원래는 : /WEB-INF/view/member/memberList.jsp
RequestDispatcher rd = request.getRequestDispatcher(
"/WEB-INF/view" + viewPage);
rd.forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
------
package kr.or.ddit.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.action.MemberListAction;
import kr.or.ddit.web.IAction;
public class TestController2 extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
/*
* URL ==> http://localhost/servletTest02/member/memberList.do
* URI ==> /servletTest02/member/memberList.do
* ContextPath ==> /servletTest02
* 원하는 요청 URI ==> /member/memberList.do
*/
//사용자의 요청 정보 가져오기
//URI ==> /servletTest02/member/memberList.do
String uri = request.getRequestURI();
//
uri = uri.substring(request.getContextPath().length());
System.out.println("uri => " + uri);
String viewPage = null; //view 페이지가 저장될 변수 선언
IAction action = null;
if(uri == null) {
}else if ("/member/memberList.do".equals(uri)) {
action = new MemberListAction();
viewPage = action.process(request, response); //viewPage 설정
}else if ("/member/memberView.do".equals(uri)) {
//상세정보
}else {
}
//해당 view 페이지를 포워딩 또는 리다이렉트한다.
//원래는 : /WEB-INF/view/member/memberList.jsp
RequestDispatcher rd = request.getRequestDispatcher(
"/WEB-INF/view" + viewPage);
rd.forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
----------action
package kr.or.ddit.member.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.web.IAction;
public class MemberDeleteAction implements IAction {
//삭제하는 것.
@Override
public boolean isRedirct() {
return false;
}
@Override
public String process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//SERVICE 객체를 만든다.
IMemberService service = MemberServiceImpl.getInstance();
// 결과값 가지고 오기 삭제 했으면 -1 안됬으면 0 //id 를 설정해야한다. ( id)
int res = service.deleteMember(request.getParameter("id"));
request.setAttribute("res", res);
//view 폴더에 있음
return "/member/memberDelete.jsp";
}
}
----
package kr.or.ddit.member.action;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.member.vo.MemberVO;
import kr.or.ddit.web.IAction;
public class MemberListAction implements IAction {
@Override
public boolean isRedirct() {
//redirect 일경우에는 true , forward일 경우에는 false를 반환한다.
return false;
}
@Override
public String process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//실제로 처리할 내용을 기술하고, 처리가 끝난 후 보여줄 View페이지를 반환하면 된다.
//URI 에 맞는 작업을 진행한다. ( 예 : 전체 회원정보 가져오기 )
IMemberService memService = MemberServiceImpl.getInstance();
List<MemberVO> memList = memService.getALLMemberList();
//가져온 정보를 Request 객체의 setAttribute() 메서드를 이용해서
// ==> view 페이지로 전달할 데이터를 셋팅한다.
request.setAttribute("memList", memList);
return "/member/memberList.jsp"; //viewPage 설정
}
}
----참고 필요한 소비스
package kr.or.ddit.member.service;
import java.util.List;
import java.util.Map;
import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.member.vo.MemberVO;
public class MemberServiceImpl implements IMemberService {
private IMemberDao dao; // DAO 객체가 저장될 변수 선언
//싱글톤으로 바꾸기
//1. 참조값이 저장될 변수 만들기
private static MemberServiceImpl mem;
//생성자
//2 private 으로 생성자 만들기
private MemberServiceImpl() {
super();
this.dao = MemberDaoImpl.getInstance();
}
//3.
public static MemberServiceImpl getInstance() {
if (mem == null) mem = new MemberServiceImpl();
return mem;
}
@Override
public int insertMember(MemberVO memVo) {
return dao.insertMember(memVo);
}
@Override
public int deleteMember(String memId) {
return dao.deleteMember(memId);
}
@Override
public int updateMember(MemberVO memVo) {
return dao.updateMember(memVo);
}
@Override
public List<MemberVO> getALLMemberList() {
return dao.getALLMemberList();
}
@Override
public int getMemberCount(String memId) {
return dao.getMemberCount(memId);
}
@Override
public int updateMember2(Map<String, String> paramMap) {
return dao.updateMember2(paramMap);
}
}
web package
package kr.or.ddit.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface IAction {
//이 IAction 인터페이스를 implements한 클래스에서 View(jsp문서)를
//결정하고 해당 View페이지로 redirect할 것인지 forward 할 것인지를
// 결정하는 메서드
public boolean isRedirct();
//IAction 인터페이스를 implements한 클래스의 process메서드를 호출해서
//URI를 기준으로 한 하나의 요청처리를 위임하고 View페이지를 반환하는 메서드
public String process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
------
package kr.or.ddit.web;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
// uri_mapping.properties 파일에 설정된
// URI에 맞는 Action객체를 구해와서 인스턴스를 생성해서 반환하는
//
public class URIActionMapper {
// uri_mapping.properties 파일의 내용을 읽어와
// URI요청은 키값으로 Action객체명은 value 값으로 저장될 Map 객체 생성
private static Map<String , String> actionMap =
new HashMap<String, String>();
//static 초기화 블럭
static {
//properties파일을 읽어와 Bundle 객체를 생성한다.
ResourceBundle rb = ResourceBundle.getBundle("kr.or.ddit.web.uri_mapping");
//Bundle 객체의 key 값 가져오기
Enumeration<String> en = rb.getKeys();
while(en.hasMoreElements()) {
//키값 개수만큼 반복 처리
String key = en.nextElement(); //키값 구하기 (URI 요청값)
String value = rb.getString(key); // value값(실행할 Action 클래스명 )
actionMap.put(key, value); // key 값과 value 값을 Map에 저장
}
}//static 초기화 블럭 끝
//매개값으로 주어진 uri 에 맞는 Action 객체를 인스턴스화해서 반환하는 메서드
public static IAction getAction(String uri) {
IAction action = null;
//해당 uri 가 등록되어 있는지 검사
if(actionMap.containsKey(uri)) {
try {
//문자열로 된 Action클래스의 이름을 이용하여 해당 클래스를 메모리에 로딩한다.
//uri_mappong.properties 에서 있는 것
Class cls = Class.forName(actionMap.get(uri));
//메모리에 로딩된정보 Action클래스를 '인스턴스화'한다. ==> 즉, 객체를 생성한다.
//보통 new 로 객체생성했는데, 자동으로 객체생성을 밑에있는애가 해줌
action = (IAction)cls.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return action;
}
}
------
package kr.or.ddit.web;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.action.MemberListAction;
import kr.or.ddit.web.IAction;
public class WebController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* URL ==> http://localhost/servletTest02/member/memberList.do
* URI ==> /servletTest02/member/memberList.do
* ContextPath ==> /servletTest02
* 원하는 요청 URI ==> /member/memberList.do
*/
String uri = request.getRequestURI();
uri = uri.substring(request.getContextPath().length());
String viewPage = null;
IAction action = null;
//요청 URI를 이용하여 설명할 Action 객체를 구한다.
action = URIActionMapper.getAction(uri);
if(action == null ) {
//실행할 Action 이 없으면 404 에러 처리
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}else {
// 실행 작업 완료 후 View페이를 받느나.
viewPage = action.process(request, response);
if(viewPage!=null) {
if(action.isRedirct()) {
//리다이렉트가 true 일 경우
response.sendRedirect(request.getContextPath() + viewPage);
}else { //포워딩
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/view" + viewPage);
rd.forward(request, response);
}
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
----------
# 이 문서는 사용할 URI 와 Mapping 되는 Action 객체를 연결 해 준다.
# 문서 작성법
# 요청 URI = IAction을 구현한 실제 실행할 클래스의 전체이름
#회원목록출력
/member/memberList.do=kr.or.ddit.member.action.MemberListAction
/member/memberView.do=kr.or.ddit.member.action.MemberViewAction
#회원추가
/member/memberInsert.do=kr.or.ddit.member.action.MemberInsertAction
#회원상세정보 출력
/member/memberViewOne.do=kr.or.ddit.member.action.MemberViewOneAction
#회원1명의 정보 수정 update
/member/memberUpdate.do=kr.or.ddit.member.action.MemberUpdateAction
#회원정보 삭제 delete
/member/memberDelete.do=kr.or.ddit.member.action.MemberDeleteAction
------
<%@page import="kr.or.ddit.member.vo.MemberVO"%>
<%@page import="java.util.List"%>
<%@ 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>
</head>
<script>
$(function(){
$('#addmember').on('click' , function(){
code = "<table>"
code += "<tr><td>회원</td><td><input type='text' id='id1'></td></tr>"
code += "<tr><td>회원이름</td><td><input type='text' id='name1'></td></tr>"
code += "<tr><td>전화번호</td><td><input type='text' id='tel1'></td></tr>"
code += "<tr><td>회원주소</td><td><input type='text' id='addr'></td></tr>"
code += "<input type='button' value='저장' id='signin'>"
code += "<input type='reset' value='취소' id='delete'>"
code += "</table>"
$('#signinbox').html(code);
})
//위에 테이블후에 처리되어야 해서 후처리 하기.....
$('#signin').on('click' , function(){
$.ajax({
id1 = $('#id1').val().trim();
name1 = $('#name1').val().trim();
tel1 = $('#tel1').val().trim();
addr1 = $('#addr1').val().trim();
url : '',
type : 'post',
data : {
"id1" : id1
"name1" : name1
"tel1" : tel1
"addr1" : addr1
},
success : function(res){
},
error : function(err){
alert("상태 : " + err.status);
},
dataType : 'json'
})
})
})
</script>
<body>
<h2>
<input type="button" value="회원추가" id="addmember">
</h2>
<h1>결과페이지</h1>
<table border="1">
<tr>
<td>ID
<td>
<td>이름
<td>
<td>전화
<td>
<td>주소
<td>
<tr>
<%
//Controller 에서 보내온 데이터를 받는다. ==> request객체.getAttribute() 메서드 사용
List<MemberVO> memList = (List<MemberVO>) request.getAttribute("memList");
for (MemberVO memVO : memList) {
%>
<tr>
<td><%=memVO.getMem_id()%></td>
<td><%=memVO.getMem_name()%></td>
<td><%=memVO.getMem_tel()%></td>
<td><%=memVO.getMem_addr()%></td>
</tr>
<%
}
%>
</table>
<div id="signinbox"></div>
</body>
</html>
댓글
댓글 쓰기