Servlet

brave_chicken·2024년 4월 18일

잇(IT)생 챌린지

목록 보기
31/90

7장 서블릿을 이용한 게시판 구현

이전 calc 비지니스 로직 분리

calc

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form method="post" action="/serverweb/calc.do">
		<input type="text" name="num1"/>
		<select name="method">
			<option value="+">+
			<option value="-">-
			<option value="*">*
			<option value="/">/
		</select>
		<input type="text" name="num2"/>
		<input type="submit" value="전송"/>
	</form>
</body>
</html>

CalcServlet

@WebServlet(name = "calc", urlPatterns = { "/calc.do" })
public class CalcServlet extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		//1. 클라이언트의 요청정보를 추출
		int num1 =	Integer.parseInt(request.getParameter("num1"));
		int num2 = Integer.parseInt(request.getParameter("num2"));
		String method = request.getParameter("method");
		
		//2. 비지니스 메소드를 호출
		Calc logic = new Calc();
		int result = logic.calc(num1, num2, method);
		
		//3. 클라이언트에 응답할 메시지를 생성
		out.print("<h1>계산결과</h1>");
		out.print("<hr/>");
		out.print("<h3>num1의 "+num1+"과 num2의 "+num2+"를 "+method+" 연산한 결과는 "+result+"</h3>");
		
	}
}

비지니스 로직을 처리하는 클래스 Calc

public class Calc {
	public int calc(int num1,int num2,String opr) {
		System.out.println("메소드호출");
		int result =0;
		switch(opr) {
			case "+" : 
				result=num1+num2;
				break;
			case "-" : 
				result=num1-num2;
				break;
			case "*" : 
				result=num1*num2;
				break;
			case "/" :
				if(num2==0) {
					System.out.println("0으로 나눌 수 없습니다.");
				}
				result=num1/num2;
				break;
			}
		return result;
	}
}

member테이블 - insert, list, delete servlet

DBUtil

public class DBUtil {
	//드라이버로딩
	//=> 클래스가 로딩될 때 한 번 실행된다.
	static {
		System.out.println("스태틱블럭");
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	//DB서버 접속하기
	public static Connection getConnect() {
		Connection con = null;
		String url="jdbc:oracle:thin:@127.0.0.1:1521:xe";
		String user="scott";
		String password="tiger";
		try {
			con = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;
	}
	//자원반납
	public static void close(ResultSet rs, Statement stmt, Connection con) {
		try {
			if(rs!=null)rs.close();
			if(stmt!=null)stmt.close();
			if(con!=null)con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static void close(Connection con) {
		
	}
	
}

interface MemberDAO

public interface MemberDAO {
	void insert(String id,String pass,String name,String addr,String info) ;
	int insert(MemberDTO user) ;
	
	void update(String info,String addr,String id);
	void update(MemberDTO updateUser);
	
	int delete(String id) ;
	List<MemberDTO> select();
	MemberDTO login(String id,String pass) ;
	List<MemberDTO> search(String column,String value);
	MemberDTO findById(String id) ;
}

MemberDAOImpl

  • insert,delete,update의 실행결과는 실행이 완료된 레코드수가 반환이되고 실행되지않으면 0반환
public class MemberDAOImpl implements MemberDAO{
	@Override
	public int insert(MemberDTO user) {
		System.out.println("============================");
		System.out.println(user);//user.toString()가 생략
		String sql="insert into member values(?,?,?,?,sysdate,20000,?)";
		Connection con = null;
		PreparedStatement ptmt =null;
		int result = 0;
		try {
			con = DBUtil.getConnect();
			ptmt =  con.prepareStatement(sql);
			ptmt.setString(1, user.getId());
			ptmt.setString(2, user.getPass());
			ptmt.setString(3, user.getName());
			ptmt.setString(4, user.getAddr());
			ptmt.setString(5, user.getInfo());
			result = ptmt.executeUpdate();
			System.out.println(result+"개 행 삽입성공!!");
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(null, ptmt, con);
		}
		return result;
	}
	
	public int delete(String id) {
		Connection con = null;
		PreparedStatement ptmt =null;
		StringBuffer sql=new StringBuffer();
		sql.append("delete member ");
		sql.append("where id=?");
		int result =0;
		try {
			con = DBUtil.getConnect();
			ptmt =  con.prepareStatement(sql.toString());
			ptmt.setString(1,id);
			result = ptmt.executeUpdate();
			System.out.println(result+"개 행 삭제성공!!");
		}  catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			DBUtil.close(null, ptmt, con);
		}
		return result;
	}
	
	public List<MemberDTO> select() {
		Connection con = null;
		PreparedStatement ptmt =null;
		ResultSet rs = null;
		String sql = "select * from member";
		List<MemberDTO> userlist = new ArrayList<>();//레코드를 담을 자료구조
		MemberDTO user = null;//조회한 레코드를 담을 객체
		try {
			con = DBUtil.getConnect();
			ptmt =  con.prepareStatement(sql);
			rs =  ptmt.executeQuery();
			System.out.println(rs);
			while(rs.next()) {
				//레코드의 한 컬럼들을 이용해서 MemberDTO객체를 생성
				user = new MemberDTO(rs.getString("id"), rs.getString("pass"),
						rs.getString("name"), rs.getString(4), rs.getDate(5),
						rs.getInt("point"),	rs.getString(7));
				userlist.add(user);
			}
//			System.out.println("ArrayList저장된 레코드 갯수:"+userlist.size());
//			System.out.println(userlist);
		}  catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(rs, ptmt, con);
		}
		return userlist;
	}
public class MemberDTO {
	private String id;
	private String pass;
	private String name;
	private String addr;
	private Date regDate;
	private int point;
	private String info;
	public MemberDTO() {
		
	}
	//select용
	public MemberDTO(String id, String pass, String name, String addr, Date regDate, int point, String info) {
		this(id, pass, name, addr, info);
		this.regDate = regDate;
		this.point = point;
		
	}
	//update용
	public MemberDTO(String id, String addr, String info) {
		super();
		this.id = id;
		this.addr = addr;
		this.info = info;
	}
	//insert용
	public MemberDTO(String id, String pass, String name, String addr, String info) {
		super();
		this.id = id;
		this.pass = pass;
		this.name = name;
		this.addr = addr;
		this.info = info;
	}
	
	
	@Override
	public String toString() {
		return "MemberDTO [id=" + id + ", pass=" + pass + ", name=" + name + ", addr=" + addr + ", regDate=" + regDate
				+ ", point=" + point + ", info=" + info + "]";
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public Date getRegDate() {
		return regDate;
	}
	public void setRegDate(Date regDate) {
		this.regDate = regDate;
	}
	public int getPoint() {
		return point;
	}
	public void setPoint(int point) {
		this.point = point;
	}
	public String getInfo() {
		return info;
	}
	public void setInfo(String info) {
		this.info = info;
	}
	
}

여기서부터 html과 서블릿

register.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container-fluid">
			<a href="/serverweb/member/list"><h1>회원목록보기</h1></a>
			<form role="form" class="form-horizontal"
				action="/serverweb/member/mvc/insert" method="POST" 
				name="myform">
				<fieldset>
					<div id="legend">
						<legend>아래 양식을 작성해주세요.</legend>
					</div>
					<div class="form-group">
						<!-- 부서코드 -->
						<label class="control-label col-sm-2" for="orgcode">아이디</label>
						<div class="col-sm-3">
							<input type="text" id="id" name="id"
								placeholder="아이디" class="form-control"
								 required>
						</div>
					</div>
					<div class="form-group">
						<!-- 패스워드-->
						<label class="control-label col-sm-2" for="pass">패스워드</label>
						<div class="col-sm-3">
							<input type="text" id="pass" name="pass"
								placeholder="패스워드" class="form-control" minlength="4" >

						</div>
					</div>
					
					
					<div class="form-group">
						<!-- 성명-->
						<label class="control-label col-sm-2" for="orgname">성명</label>
						<div class="col-sm-3">
							<input type="text" id="orgname" name="name"
								placeholder="성명" class="form-control" minlength="3" required>

						</div>
					</div>
				
					<div class="form-group">
						<!-- 주소-->
						<label class="control-label col-sm-2" for="addr">주소</label>
						<div class="col-sm-3">
							<input type="text" id="addr" name="addr" 
							placeholder="주소"
								class="form-control" minlength="4" required>

						</div>
					</div>
					<div class="form-group">
						<!-- 포인트-->
						<label class="control-label col-sm-2" for="info">기타사항</label>
						<div class="col-sm-3">
							<input type="text" id="point" name="info" 
							placeholder="기타사항"
								class="form-control" minlength="4" required>

						</div>
					</div>
					
					<div class="form-group">
						<!-- Button -->
						<div class="col-sm-3 col-sm-offset-2">
							<input type="submit" value="가입하기" class="btn btn-success"/>
						</div>
					</div>
				</fieldset>
			</form>
	</div>
</body>
</html>

MemberInsertServlet

@WebServlet(name = "insert", urlPatterns = { "/member.insert" })
public class MemberInsertServlet extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("서블릿 요청 성공");
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		//1.요청정보추출
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		String name = request.getParameter("name");
		String addr = request.getParameter("addr");
		String info = request.getParameter("info");
		
		//2.비지니스메소드 호출
		MemberDTO user = new MemberDTO(id, pass, name, addr, info);
		MemberDAO member = new MemberDAOImpl();
		int result = member.insert(user);//result은 삽입된 행의 수
		System.out.println(result);
		
		//3. 응답메시지 생성
		if(result>=1) {
			out.print("<h1>1명 회원가입 성공!!</h1>");
		}else {
			out.print("<h1>회원등록실패</h1>");
		}
		out.print("<h1>회원가입결과</h1>");
        out.println("<hr/>");
        out.println("<h3>아이디: " + id +"</h3>");
        out.println("<h3>패스워드: " + pass + "</h3>");
        out.println("<h3>성명: " + name + "</h3>");
        out.println("<h3>주소: " + addr + "</h3>");
        out.println("<h3>기타사항: " + info + "</h3>");
		
	}
}

MemberListServlet

@WebServlet(name = "list", urlPatterns = { "/member/list" })
public class MemberListServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("서블릿 요청 성공");
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=UTF-8");
		PrintWriter out =resp.getWriter();
		
		MemberDAO dao = new MemberDAOImpl();
		List<MemberDTO> userlist = dao.select();
		
		out.print("<h1>회원목록</h1>");
		out.print("<hr>");
		out.print("<table border='1' width='600'>");
		out.print("<tr bgcolor='pink'>");
		out.print("<th>아이디</th><th>패스워드</th><th>성명</th><th>주소</th><th>가입날짜</th><th>포인트</th><th>정보</th><th>삭제</th>");
		out.print("</tr>");
		for(MemberDTO user:userlist) {
			out.print("<tr>");
			out.print("<td><a href='/serverweb/member/detail?id="+user.getId()+"'>"+user.getId()+"</td>");
			out.print("<td>"+user.getPass()+"</td>");
			out.print("<td>"+user.getName()+"</td>");
			out.print("<td>"+user.getAddr()+"</td>");
			out.print("<td>"+user.getRegDate()+"</td>");
			out.print("<td>"+user.getPoint()+"</td>");
			out.print("<td>"+user.getInfo()+"</td>");
			out.print("<td><a href='/serverweb/member/delete?id="+user.getId()+"'>삭제</td>");
			out.print("</tr>");
		}
		out.print("</table>");
	}
}

MemberDeleteServlet

@WebServlet(name = "delete", urlPatterns = { "/member/delete" })
public class MemberDeleteServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out =response.getWriter();
		
		//1.요청정보추출
		String id = request.getParameter("id");
		
		//2. 비지니스 메소드 호출
		MemberDAO dao = new MemberDAOImpl();
		int result = dao.delete(id);
		
		//3.응답메시지 생성
//		if(result>=1) {
//			out.print("<h1>"+result+"명의 회원 탈퇴</h1>");
//		}else {
//			out.print("<h1>회원탈퇴실패</h1>");
//		}
		
		//삭제 후 MemberListServlet이 다시 실행되도록 요청하기
		response.sendRedirect("/serverweb/member/list");
	}

}

MemberDetailSevlet

@WebServlet(name = "detail", urlPatterns = { "/member/detail" })
public class MemberDetailSevlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out =response.getWriter();
		
		String id = request.getParameter("id");
		MemberDAO dao = new MemberDAOImpl();
		MemberDTO userdetail = dao.findById(id);
		
		out.print("<h1>회원정보</h1>");
		out.print("<hr/>");
		out.print("<h3>아이디:"+userdetail.getId()+ "</h3>");
		out.print("<h3>패스워드:"+userdetail.getPass()+ "</h3>");
		out.print("<h3>성명:"+userdetail.getName()+ "</h3>");
		out.print("<h3>주소:"+userdetail.getAddr()+ "</h3>");
		out.print("<h3>가입날짜:"+userdetail.getRegDate()+ "</h3>");
		out.print("<h3>포인트:"+userdetail.getPoint()+ "</h3>");
		out.print("<h3>정보:"+userdetail.getInfo()+ "</h3>");
	}
}

dept 테이블 - insert, list, delete servlet

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container-fluid">
			<a href="/serverweb/dept/list"><h1>부서목록보기</h1></a>
			<form role="form" class="form-horizontal"
				action="/serverweb/dept/insert" method="POST" 
				name="myform">
				<fieldset>
					<div id="legend">
						<legend>아래 양식을 작성해주세요.</legend>
					</div>
					<div class="form-group">
						<!-- 부서코드 -->
						<label class="control-label col-sm-2" for="orgcode">부서코드</label>
						<div class="col-sm-3">
							<input type="text" id="deptno" name="deptno"
								placeholder="부서코드" class="form-control"
								 required>
						</div>
					</div>
					<div class="form-group">
						<!-- 부서명-->
						<label class="control-label col-sm-2" for="pass">부서명</label>
						<div class="col-sm-3">
							<input type="text" id="deptname" name="deptname"
								placeholder="부서명" class="form-control"  >

						</div>
					</div>
					
					
					<div class="form-group">
						<!-- 전화번호-->
						<label class="control-label col-sm-2" for="orgname">전화번호</label>
						<div class="col-sm-3">
							<input type="text" id="tel" name="tel"
								placeholder="전화번호" class="form-control" required>

						</div>
					</div>
				
					<div class="form-group">
						<!-- 주소-->
						<label class="control-label col-sm-2" for="addr">주소</label>
						<div class="col-sm-3">
							<input type="text" id="addr" name="addr" 
							placeholder="주소"
								class="form-control" required>

						</div>
					</div>
				
					
					<div class="form-group">
						<!-- Button -->
						<div class="col-sm-3 col-sm-offset-2">
							<input type="submit" value="부서등록하기" class="btn btn-success"/>
						</div>
					</div>
				</fieldset>
			</form>
	</div>
</body>
</html>

DBUtil

public class DBUtil {
	//드라이버로딩
	//=> 클래스가 로딩될 때 한 번 실행된다.
	static {
		System.out.println("스태틱블럭");
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	//DB서버 접속하기
	public static Connection getConnect() {
		Connection con = null;
		String url="jdbc:oracle:thin:@127.0.0.1:1521:xe";
		String user="scott";
		String password="tiger";
		try {
			con = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;
	}
	//자원반납
	public static void close(ResultSet rs, Statement stmt, Connection con) {
		try {
			if(rs!=null)rs.close();
			if(stmt!=null)stmt.close();
			if(con!=null)con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static void close(Connection con) {
		
	}
	
}

interface DeptDAO

public interface DeptDAO {
	int insert(DeptDTO user) ;
	int delete(String id) ;
	List<DeptDTO> select();
}

DeptDAOImpl

public class DeptDAOImpl implements DeptDAO{

	@Override
	public int insert(DeptDTO user) {
		String sql = "insert into mydept values(?,?,?,?)";
		Connection con = null;
		PreparedStatement ptmt =null;
		int result = 0;
		try {
			con = DBUtil.getConnect();
			ptmt = con.prepareStatement(sql);
			ptmt.setString(1, user.getDeptcode());
			ptmt.setString(2, user.getDeptname());
			ptmt.setString(3, user.getTel());
			ptmt.setString(4, user.getAddr());
			result = ptmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(null, ptmt, con);
		}
		
		return result;
	}

	@Override
	public int delete(String deptcode) {
		Connection con = null;
		PreparedStatement ptmt =null;
		StringBuffer sql = new StringBuffer();
		sql.append("delete mydept ");
		sql.append("where deptcode=?");
		int result =0;
		try {
			con = DBUtil.getConnect();
			ptmt =  con.prepareStatement(sql.toString());
			ptmt.setString(1,deptcode);
			result = ptmt.executeUpdate();
		}  catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(null, ptmt, con);
		}
		return result;
	}

	@Override
	public List<DeptDTO> select() {
		Connection con = null;
		PreparedStatement ptmt =null;
		ResultSet rs = null;
		String sql = "select * from mydept";
		List<DeptDTO> deptlist = new ArrayList<>();//레코드를 담을 자료구조
		DeptDTO dept = null;//조회한 레코드를 담을 객체
		try {
			con = DBUtil.getConnect();
			ptmt =  con.prepareStatement(sql);
			rs =  ptmt.executeQuery();
			System.out.println(rs);
			while(rs.next()) {
				dept = new DeptDTO(rs.getString("deptcode"), rs.getString("deptname"),
						rs.getString("tel"), rs.getString("addr"));
				deptlist.add(dept);
			}
		}  catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBUtil.close(rs, ptmt, con);
		}
		return deptlist;
	}
	
}

DeptDTO

public class DeptDTO {
	private String deptcode;
	private String deptname;
	private String tel;
	private String addr;
	
	public DeptDTO() {
		
	}
	
	public DeptDTO(String deptcode, String deptname, String tel, String addr) {
		super();
		this.deptcode = deptcode;
		this.deptname = deptname;
		this.tel = tel;
		this.addr = addr;
	}
	@Override
	public String toString() {
		return "DeptDTO [deptcode=" + deptcode + ", deptname=" + deptname + ", tel=" + tel + ", addr=" + addr + "]";
	}
	public String getDeptcode() {
		return deptcode;
	}
	public void setDeptcode(String deptcode) {
		this.deptcode = deptcode;
	}
	public String getDeptname() {
		return deptname;
	}
	public void setDeptname(String deptname) {
		this.deptname = deptname;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	
}

DeptInsertTest

@WebServlet(name = "deptinsert", urlPatterns = { "/dept/insert" })
public class DeptInsertTest extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		//1.요청정보추출
		String deptcode = request.getParameter("deptno");
		String deptname = request.getParameter("deptname");
		String tel = request.getParameter("tel");
		String addr = request.getParameter("addr");
		
		//2.비지니스메소드 호출
		DeptDTO dept = new DeptDTO(deptcode,deptname,tel,addr);
		DeptDAO dao = new DeptDAOImpl();
		int result = dao.insert(dept);
		
		//3. 응답메시지 생성
		if(result>=1) {
			out.print("<h1>부서 "+ result +"개 등록 성공</h1>");
		}else {
			out.print("<h1>부서등록실패</h1>");
		}
		out.print("<h1>부서등록결과</h1>");
        out.println("<hr/>");
        out.println("<h3>부서코드: " + deptcode +"</h3>");
        out.println("<h3>부서이름: " + deptname + "</h3>");
        out.println("<h3>전화번호: " + tel + "</h3>");
        out.println("<h3>주소: " + addr + "</h3>");
		
	}
}

DeptListServlet

@WebServlet(name = "deptlist", urlPatterns = { "/dept/list" })
public class DeptListServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out =response.getWriter();
		
		DeptDAO dao = new DeptDAOImpl();
		List<DeptDTO> deptlist = dao.select();
		
		out.print("<h1>부서목록</h1>");
		out.print("<hr>");
		out.print("<table border='1' width='600'>");
		out.print("<tr bgcolor='lime'>");
		out.print("<th>부서번호</th><th>부서이름</th><th>전화번호</th><th>주소</th><th>삭제</th>");
		out.print("</tr>");
		for(DeptDTO dept:deptlist) {
			out.print("<tr>");
			out.print("<td>"+dept.getDeptcode()+"</td>");
			out.print("<td>"+dept.getDeptname()+"</td>");
			out.print("<td>"+dept.getTel()+"</td>");
			out.print("<td>"+dept.getAddr()+"</td>");
			out.print("<td><a href='/serverweb/dept/delete?deptcode="+dept.getDeptcode()+"'>삭제</td>");
			out.print("</tr>");
		}
		out.print("</table>");
	}
}

DeptDeleteServlet

@WebServlet(name = "deptdel", urlPatterns = { "/dept/delete" })
public class DeptDeleteServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out =response.getWriter();
		
		//1.요청정보추출
		String deptcode = request.getParameter("deptcode");
		
		//2. 비지니스 메소드 호출
		DeptDAO dao = new DeptDAOImpl();
		int result = dao.delete(deptcode);
		response.sendRedirect("/serverweb/dept/list");
	}
}




삭제버튼 누르면 해당 줄 삭제됨


member테이블 mvc패턴 적용 servlet

mvc패턴 설명

MemberInsertServlet / 응답페이지로 이동하기

@WebServlet(name = "mvcinsert", urlPatterns = { "/member/mvc/insert" })
public class MemberInsertServlet extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("서블릿 요청 성공");
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		System.out.println("--------------------------");
		//1.요청정보추출
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		String name = request.getParameter("name");
		String addr = request.getParameter("addr");
		String info = request.getParameter("info");
		
		//2.비지니스메소드 호출
		MemberDTO user = new MemberDTO(id, pass, name, addr, info);
		MemberDAO member = new MemberDAOImpl();
		int result = member.insert(user);//result은 삽입된 행의 수
		System.out.println(result);
		
		//3. 응답페이지로 이동하기
		response.sendRedirect("/serverweb/member.view/insertOK.html");
		
	}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<img alt="" src="/serverweb/images/c2.jpg" width="200"/>
	<h2>차은우님 가입이 완료됐습니다!</h2>
</body>
</html>

기타

로그확인

C:\backend23\work\webwork.metadata.plugins\org.eclipse.wst.server.core\tmp0\logs
ip기록 로그에 찍힘

멤버변수 지역변수 차이

업로드중..
멤버변수, 지역변수, 전역변수

@WebServlet("/member")
public class MemberTestServlet extends HttpServlet{
   String str;
   protected void doGet(HttpServletRequest req,HttpServletResponse res)
           throws ServletException,IOException{
      int number = 0;
      str = req.getParameter("sendmessage");
      res.setContentType("text/html; charset=UTF-8");
      PrintWriter out = res.getWriter();
      out.println("<html><head><title>MultiThread Test</title></head>");
      out.println("<body><h2>처리 결과(멤버 변수)</h2>");
      while (number++ < 10) {
         String strnum = "[" + number + "]";
         out.println("MultiThreadTest : " + str +"  "+ strnum + "<br>");
         out.flush();
         System.out.println("MultiThreadTest : " + str +"  "+ strnum + "<br>");
         try {
            Thread.sleep(1000);
         } catch (Exception e) {
            System.out.println(e);
         }
      }                
      out.println("<h2>Done " + str + " !!</h2>");
      out.println("</body></html>");
      out.close();
   }
}
import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/local")
public class LocalTestServlet extends HttpServlet{
   protected void doGet(HttpServletRequest req,HttpServletResponse res)
           throws ServletException,IOException{
      String str = null;
      int number = 0;
      str = req.getParameter("sendmessage");
      res.setContentType("text/html; charset=UTF-8");
      PrintWriter out = res.getWriter();
      out.println("<html><head><title>MultiThread Test</title></head>");
      out.println("<body><h2>처리 결과(지역 변수)</h2>");
      while (number++ < 10) {
         String strnum = "[" + number + "]";
         out.println("MultiThreadTest : " + str +"  "+ strnum + "<br>");
         out.flush();
         System.out.println("MultiThreadTest : " + str +"  "+ strnum + "<br>");
         try {
            Thread.sleep(1000);
         } catch (Exception e) {
            System.out.println(e);
         }
      }                
      out.println("<h2>Done " + str + " !!</h2>");
      out.println("</body></html>");
      out.close();
   }
}

@WebServlet("/HeaderInfoServlet")
public class HeaderInfoServlet extends HttpServlet {
	public void doGet (HttpServletRequest req, HttpServletResponse res)	
                     		throws ServletException, IOException {
    		PrintWriter out;
    		res.setContentType("text/html; charset=UTF-8");
		out = res.getWriter ();
		out.println("<html>");
		out.println("<head><title>Request 정보 출력 Servlet</title></head>");
		out.println("<body>");
		out.println("<h3>요청 헤더 정보</h3>");
		out.println("<pre>");
		Enumeration em = req.getHeaderNames();
		while (em.hasMoreElements()){
       			String s = (String)em.nextElement();
       			out.println(s +" : " + req.getHeader(s));
		}
		out.println("</pre>");
		out.println("</body></html>");
   }  	
}
@WebServlet("/NetInfoServlet")
public class NetInfoServlet extends HttpServlet {
	public void doGet (HttpServletRequest req, HttpServletResponse res)	
                     		throws ServletException, IOException {
    	PrintWriter out;
    	res.setContentType("text/html; charset=UTF-8");
		out = res.getWriter ();
		out.println("<html>");
		out.println("<head><title>Request 정보 출력 Servlet</title></head>");
		out.println("<body>");
		out.println("<h3>네트워크 관련 요청 정보</h3>");
		out.println("<pre>");
		out.println("Request Scheme : "+ req.getScheme());
		out.println("Server Name : "+ req.getServerName());
		out.println("Server Address : "+ req.getLocalAddr());
		out.println("Server Port : "+ req.getServerPort());
		out.println("Client Address : "+ req.getRemoteAddr());
		out.println("Client Host : "+ req.getRemoteHost());
		out.println("Client Port : "+ req.getRemotePort());
		out.println("</pre>");
		out.println("</body></html>");
   }  	
}
@WebServlet("/URLInfoServlet")
public class URLInfoServlet extends HttpServlet {
	public void doGet (HttpServletRequest req, HttpServletResponse res)	
                     		throws ServletException, IOException {
    PrintWriter out;
    res.setContentType("text/html; charset=UTF-8");
		out = res.getWriter ();
		out.println("<html>");
		out.println("<head><title>Request 정보 출력 Servlet</title></head>");
		out.println("<body>");
		out.println("<h3>요청 방식과 프로토콜 정보</h3>");
		out.println("<pre>");
		out.println("Request URI : "+ req.getRequestURI());
		out.println("Request URL : "+ req.getRequestURL());
		out.println("Context Path : "+ req.getContextPath());
		out.println("Request Protocol : "+ req.getProtocol());
		out.println("Servlet Path : "+ req.getServletPath());
		out.println("</pre>");
		out.println("</body></html>");
   }  	
}

본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.

0개의 댓글