24.02.02 학습내용 web server 구현
2024. 2. 27. 17:43ㆍJAVA WEB
--1교시--
어제 만든 페이지에 이어서 '게시물 삭제' 기능 추가 하기 실습
실습 해설
--2교시--
검색기능 구현
실습 해설
USE bbs;
SELECT COUNT(bid) FROM board
JOIN users ON board.uid=users.uid
WHERE board.isDeleted=0 and uname LIKE '%제임스%';
--3교시--
글수정 기능 구현
실습 해설
Controller 고쳤을때는재기동
jsp 고쳤을때는 재기동 X
--Project 게시판 코드 구현--
[1] Controller 구현 - 2개
1. BoardController.java
package project.controller;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import project.entity.Board;
import project.entity.Reply;
import project.service.BoardService;
import project.service.BoardServiceImpl;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
@WebServlet({"/bbs/board/list", "/bbs/board/insert", "/bbs/board/update", "/bbs/board/delete", "/bbs/board/detail"})
public class BoardController extends HttpServlet {
private static final long serialVersionUID = 1L;
private BoardService bSvc = new BoardServiceImpl();
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] uri = request.getRequestURI().split("/");
String action = uri[uri.length - 1];
String method = request.getMethod();
HttpSession session = request.getSession();
RequestDispatcher rd = null;
String title = "", content = "", field="", query = "", page_="", uid = "";
Board board = null;
int bid, page= 0;
String sessUid = (String) session.getAttribute("sessUid");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
switch(action) {
case "list": // /jw/bbs/board/list?p=1&f=title&q=검색
page_= request.getParameter("p");
field= request.getParameter("f");
query= request.getParameter("q");
page = (page_ == null || page_.equals("")) ? 1 : Integer.parseInt(page_);
session.setAttribute("currentBoardPage", page);
field = (field == null || field.equals("")) ? "title" : field;
query = (query == null || query.equals("")) ? "" : query;
session.setAttribute("field", field);
session.setAttribute("query", query);
List<Board> boardList = bSvc.getBoardList(page, field, query);
request.setAttribute("boardList", boardList);
// for pagination
int totalItems = bSvc.getBoardCount(field, query); // 보드의 갯수 출력
int totalPages = (int) Math.ceil(totalItems * 1.0 / bSvc.COUNT_PER_PAGE);
// 유저 목록 페이지 출력 ex> 12일 때 2 페이지 출력
List<String> pageList = new ArrayList<>();
for (int i = 1; i <= totalPages; i++)
pageList.add(String.valueOf(i)); // i 를 String 으로 바꿔줌
request.setAttribute("pageList", pageList);
rd = request.getRequestDispatcher("/WEB-INF/view/board/list.jsp");
rd.forward(request, response);
break;
case "insert":
if (sessUid == null || sessUid.equals("")) {
response.sendRedirect("/jw/bbs/user/login");
break;
}
if(method.equals("GET")) {
rd = request.getRequestDispatcher("/WEB-INF/view/board/insert.jsp");
// - 오류 코드 - sendRedirect와 forward 중 한번만 쓸 수 있음. 왔다 갔다 하는 코드 쓰면 오류남.
rd.forward(request, response);
} else {
title = request.getParameter("title");
content= request.getParameter("content");
board = new Board(title, content, sessUid);
bSvc.insertBoard(board);
response.sendRedirect("/jw/bbs/board/list?p=1");
}
break;
case "detail":
// 부를 수 있는 방법 == 클릭 (안전장치를 했으니 그냥 쓰면 됨)
bid = Integer.parseInt(request.getParameter("bid"));
uid = request.getParameter("uid");
// 자기 글 일때 Count 세지 않는 기능 - 나중에 구현!! 2024-02-22 이 시점엔 미구현
if (!uid.equals(sessUid))
bSvc.increaseViewCount(bid);
board = bSvc.getBoard(bid);
request.setAttribute("board", board);
// 댓글 목록도 필요 - 나중에 구현!!! 2024-02-22 이 시점엔 미구현
List<Reply> replyList = null;
request.setAttribute("replyList", replyList);
rd = request.getRequestDispatcher("/WEB-INF/view/board/detail.jsp");
rd.forward(request, response);
break;
case "delete":
bid = Integer.parseInt(request.getParameter("bid"));
bSvc.deleteBoard(bid);
page = (Integer) session.getAttribute("currentBoardPage");
field = (String) session.getAttribute("field");
query = (String) session.getAttribute("query");
query = URLEncoder.encode(query, "utf-8");
response.sendRedirect("/jw/bbs/board/list?p=" + page + "&f=" + field + "&q=" + query);
break;
case "update":
if (method.equals("GET")) {
bid = Integer.parseInt(request.getParameter("bid"));
board = bSvc.getBoard(bid);
request.setAttribute("board", board);
rd = request.getRequestDispatcher("/WEB-INF/view/board/update.jsp");
rd.forward(request, response);
} else {
bid = Integer.parseInt(request.getParameter("bid"));
uid = request.getParameter("uid");
title = request.getParameter("title");
content = request.getParameter("content");
board = new Board(bid, title, content);
bSvc.updateBoard(board);
response.sendRedirect("/jw/bbs/board/detail?bid=" + bid + "&uid=" + uid);
}
break;
}
}
}
2. UserController.java
package project.controller;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import project.entity.User;
import project.service.UserService;
import project.service.UserServiceImpl;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.mindrot.jbcrypt.BCrypt;
import ch07_dao.CityEX.City;
@WebServlet({ "/bbs/user/list", "/bbs/user/register", "/bbs/user/update",
"/bbs/user/delete", "/bbs/user/login", "/bbs/user/logout" })
public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserService uSvc = new UserServiceImpl();
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String[] uri = request.getRequestURI().split("/");
String action = uri[uri.length - 1];
String method = request.getMethod();
HttpSession session = request.getSession();
RequestDispatcher rd = null;
String uid = null, pwd = null, pwd2 = null, hashedPwd = null, email = null, uname = null;
String msg = null, url = null;
User user = null;
switch (action) {
case "list": {
String page_ = request.getParameter("page");
int page = (page_ == null || page_.equals("")) ? 1 : Integer.parseInt(page_);
session.setAttribute("currentUserPage", page);
List<User>userList = uSvc.getUserList(page);
request.setAttribute("userList", userList);
// for pagination
int totalUsers = uSvc.getUserCount(); // 유저의 명수 출력
int totalPages = (int) Math.ceil(totalUsers * 1.0 / uSvc.count_per_page);
// 유저 목록 페이지 출력 ex> 12일 때 2 페이지 출력
List<String> pageList = new ArrayList<>();
for (int i = 1; i <= totalPages; i++)
pageList.add(String.valueOf(i)); // i 를 String 으로 바꿔줌
request.setAttribute("pageList", pageList);
// rd = request.getRequestDispatcher("/WEB-INF/view/user/list.jsp");
rd = request.getRequestDispatcher("/WEB-INF/view/user/list.jsp");
rd.forward(request, response);
break;
}
case "register": {
if (method.equals("GET")) {
// rd = request.getRequestDispatcher("/WEB-INF/view/user/register.jsp");
rd = request.getRequestDispatcher("/WEB-INF/view/user/register.jsp");
rd.forward(request, response);
} else {
uid = request.getParameter("uid");
pwd = request.getParameter("pwd");
pwd2 = request.getParameter("pwd2");
uname = request.getParameter("uname");
email = request.getParameter("email");
if (uSvc.getUserByUid(uid) != null) {
rd = request.getRequestDispatcher("/WEB-INF/view/user/alertMsg.jsp");
request.setAttribute("msg", "아이디가 중복입니다.");
request.setAttribute("url", "/jw/bbs/user/register");
rd.forward(request, response);
} else if (pwd.equals(pwd2)) {
user = new User(uid, pwd, uname, email);
uSvc.registerUser(user);
response.sendRedirect("/jw/bbs/user/list?page=1");
} else {
msg = "비밀번호가 일치하지 않습니다.";
url = "/WEB-INF/view/user/register.jsp";
rd = request.getRequestDispatcher("/WEB-INF/view/common/alertMsg.jsp");
request.setAttribute("msg", msg);
request.setAttribute("url", url);
rd.forward(request, response);
}
}
break;
}
case "login": {
if (method.equals("GET")) {
// rd = request.getRequestDispatcher("/WEB-INF/view/user/login.jsp");
rd = request.getRequestDispatcher("/WEB-INF/view/user/login.jsp");
rd.forward(request, response);
} else {
uid = request.getParameter("uid");
pwd = request.getParameter("pwd");
int result = uSvc.login(uid, pwd);
if (result == uSvc.correct_login) {
user = uSvc.getUserByUid(uid);
session.setAttribute("sessUid", uid);
session.setAttribute("sessUname", user.getUname());
msg = user.getUname() + "님 환영합니다.";
url = "/jw/bbs/board/list?p=1"; // 초기화면
} else if (result == uSvc.WRONG_PASSWORD) {
msg = "패스워드가 틀립니다.";
url = "/jw/bbs/user/login";
} else {
msg = "등록되지 않은 사용자입니다.";
url = "/jw/bbs/user/login";
}
rd = request.getRequestDispatcher("/WEB-INF/view/common/alertMsg.jsp");
request.setAttribute("msg", msg);
request.setAttribute("url", url);
rd.forward(request, response);
}
break;
}
case "logout": {
// session을 정리하면 된다.
session.invalidate();
response.sendRedirect("/jw/bbs/user/login");
break;
}
case "update": {
if (method.equals("GET")) {
uid = request.getParameter("uid");
user = uSvc.getUserByUid(uid);
// rd = request.getRequestDispatcher("/WEB-INF/view/user/update.jsp");
rd = request.getRequestDispatcher("/WEB-INF/view/user/update.jsp");
request.setAttribute("user", user);
rd.forward(request, response);
} else {
uid = request.getParameter("uid");
pwd = request.getParameter("pwd");
pwd2 = request.getParameter("pwd2");
hashedPwd = request.getParameter("hashedPwd");
uname = request.getParameter("uname");
email = request.getParameter("email");
if (pwd != null && pwd.equals(pwd2))
hashedPwd = BCrypt.hashpw(pwd, BCrypt.gensalt());
user = new User(uid, hashedPwd, uname, email);
uSvc.updateUser(user);
response.sendRedirect("/jw/bbs/user/list?page=1");
}
break;
}
case "delete": {
uid = request.getParameter("uid");
uSvc.deleteUser(uid);
String sessUid = (String) session.getAttribute("sessUid");
if (!sessUid.equals("admin"))
session.invalidate();
response.sendRedirect("/jw/bbs/user/list?page=1");
break;
}
}
}
}
[3] Dao 구현 - 2개
1. BoardDao.java
package project.dao;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import project.entity.Board;
public class BoardDao {
public Connection getConnection() {
Connection conn = null;
try {
Context initContext = new InitialContext();
DataSource ds = (DataSource) initContext.lookup("java:comp/env/" + "jdbc/bbs"); // context에 추가한 부분의 name
conn = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public Board getBoard(int bid) {
Connection conn = getConnection();
// 골라라 전부를 보드로부터 만약 bid가 같다면
String sql = "SELECT b.*, u.uname FROM board b"
+ " JOIN users u ON b.uid=u.uid"
+ " WHERE b.bid=?;"; // ?는 HeidiSQL에서 1, Eclips에서 변형
Board board = null; // 빈껍데기 왜? 나중에 여기에 담아야 하기 때문
try {
PreparedStatement pstmt = conn.prepareStatement(sql); // conn에 sql을 실행하려고 준비하는 것
pstmt.setInt(1, bid);
ResultSet rs = pstmt.executeQuery();// 쿼리 실행 sql이 pstmt에 담겨있고 execute 실행
while (rs.next()) {
board = new Board(rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), LocalDateTime.parse(rs.getString(5).replace(" ", "T")),
rs.getInt(6), rs.getInt(7), rs.getInt(8), rs.getString(9));
}
} catch (Exception e) {
e.printStackTrace();
}
return board;
}
// field 값은 title, content, uid 등 attribute name
// query 값은 검색어 : 어떤 단어(attribute name)를 어디서(title, content, uid) 찾을 것인가?
public List<Board> getBoardList(String field, String query, int num, int offset) {
Connection conn = getConnection();
String sql = "SELECT b.*,u.uname FROM board b"
+ " JOIN users u ON b.uid=u.uid"
+ " WHERE b.isDeleted=0 AND " + field + " LIKE ?" // title이 field로 바뀜
+ " ORDER BY bid DESC"
+ " LIMIT ? OFFSET ?;"; // into 있는 것이 정석
List<Board> list = new ArrayList<Board>();
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, query);
pstmt.setInt(2, num);
pstmt.setInt(3, offset);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Board board = new Board(rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), LocalDateTime.parse(rs.getString(5).replace(" ", "T")),
rs.getInt(6), rs.getInt(7), rs.getInt(8), rs.getString(9));
list.add(board);
} rs.close(); pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void insertBoard(Board board) {
Connection conn = getConnection();
// 구상단계 - 해야할 일 떠올리기(구조도, Design)
// 1. SQL문을 쓸 것
// 2. 쓴 SQL을 어디다 담을 공간을 준비
// 3. 내용물 넣을 것 준비
// 4. SQL문 실행
// 5. 자원 새지 않게 닫기
String sql = "insert into board values(default, ?, ?, ?, default, default, default, default)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getTitle());
pstmt.setString(2, board.getContent());
pstmt.setString(3, board.getUid());
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateBoard(Board board) {
Connection conn = getConnection();
String sql = "update board set title=?, content=?, modTime=now() where bid=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getTitle());
pstmt.setString(2, board.getContent());
pstmt.setInt(3, board.getBid());
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteBoard(int bid) {
Connection conn = getConnection();
String sql = "update board set isDeleted=1 where bid=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bid);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// field 값은 view 또는 reply 가져감
public void increaseCount(String field, int bid) {
Connection conn = getConnection();
String sql = "UPDATE board SET " + field + "Count=" + field + "Count+1 WHERE bid=?"; // if 절의 sum 같은 느낌 / 조회수가 올라갈 때마다 +1 / ? = viewCount
// where bid=? 어떤 게시판에 james의 글을 누군가 본다면 조회수가 올라간다 == bid가 누구인지 찾는 것
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bid);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public int getBoardCount(String field, String query) {
Connection conn = getConnection();
query = "%" + query + "%";
String sql = "SELECT COUNT(bid) FROM board"
+ " JOIN users ON board.uid=users.uid"
+ " WHERE board.isDeleted=0 and " + field + " LIKE ?";
int count = 0;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, query);
ResultSet rs = pstmt.executeQuery(sql);
while (rs.next()) {
count = rs.getInt(1);
}
rs.close(); pstmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return count;
}
}
2. UserDao.java
package project.dao;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import project.entity.User;
public class UserDao {
public Connection getConnection() {
Connection conn = null;
try {
Context initContext = new InitialContext();
DataSource ds = (DataSource) initContext.lookup("java:comp/env/" + "jdbc/bbs"); // context에 추가한 부분의 name
conn = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public User getUserByUid(String uid) {
Connection conn = getConnection();
String sql = "select * from users where uid=?";
User user = null;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, uid);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
user = new User(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4),
LocalDate.parse(rs.getString(5)), rs.getInt(6));
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
public List<User> getUserList(int num, int offset) {
Connection conn = getConnection();
String sql = "select * from users where isDeleted=0"
+ " order by regDate desc, uid limit ? offset ?";
List<User> list = new ArrayList<User>();
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, num);
pstmt.setInt(2, offset);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
User user = new User(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4),
LocalDate.parse(rs.getString(5)), rs.getInt(6));
list.add(user);
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void insertUser(User user) {
Connection conn = getConnection();
String sql = "insert users values (?, ?, ?, ?, default, default)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUid());
pstmt.setString(2, user.getPwd());
pstmt.setString(3, user.getUname());
pstmt.setString(4, user.getEmail());
pstmt.executeUpdate();
pstmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateUser(User user) {
Connection conn = getConnection();
String sql = "update users set pwd=?, uname=?, email=? where uid=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getPwd());
pstmt.setString(2, user.getUname());
pstmt.setString(3, user.getEmail());
pstmt.setString(4, user.getUid());
pstmt.executeUpdate();
pstmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteUser(String uid) {
Connection conn = getConnection();
String sql = "update users set isDeleted=1 where uid=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, uid);
pstmt.executeUpdate();
pstmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public int getUserCount() {
Connection conn = getConnection();
String sql ="select count(uid) from users where isDeleted=0";
int count = 0;
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
count = rs.getInt(1); // 데이터 하나라도 이런식으로 가져와야 함
}
rs.close(); stmt.close(); conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return count;
}
}
[3] Entity 구현 -2개
1. Board.java
package project.entity;
import java.time.LocalDateTime;
public class Board {
private int bid;
private String title;
private String content;
private String uid;
private LocalDateTime modTime;
private int isDeleted;
private int viewCount;
private int replyCount;
private String uname; // user stable 과 join 해서 얻게 될 내용
public Board() { }
// 게시글 생성 할 때 필요한 생성자만 나열(미리 세팅)
public Board(String title, String content, String uid) {
this.title = title;
this.content = content;
this.uid = uid;
}
// 게시글 수정할 때 필요한 생성자만 나열(update 상황 가정 - 미리 세팅)
public Board(int bid, String title, String content) {
this.bid = bid;
this.title = title;
this.content = content;
}
// 코드를 쉽게 쓰기 위해 게시글 목록 생성자만 나열
public Board(int bid, String title, LocalDateTime modTime, int viewCount, int replyCount, String uname) {
this.bid = bid;
this.title = title;
this.modTime = modTime;
this.viewCount = viewCount;
this.replyCount = replyCount;
this.uname = uname;
}
public Board(int bid, String title, String content, String uid, LocalDateTime modTime, int isDeleted, int viewCount,
int replyCount, String uname) {
this.bid = bid;
this.title = title;
this.content = content;
this.uid = uid;
this.modTime = modTime;
this.isDeleted = isDeleted;
this.viewCount = viewCount;
this.replyCount = replyCount;
this.uname = uname;
}
@Override
public String toString() {
return "board [bid=" + bid + ", title=" + title + ", content=" + content + ", uid=" + uid + ", modTime="
+ modTime + ", isDeleted=" + isDeleted + ", viewCount=" + viewCount + ", replyCount=" + replyCount
+ ", uname=" + uname + "]";
}
public int getBid() {
return bid;
}
public void setBid(int bid) {
this.bid = bid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public LocalDateTime getmodTime() {
return modTime;
}
public void setmodTime(LocalDateTime modTime) {
this.modTime = modTime;
}
public int getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(int isDeleted) {
this.isDeleted = isDeleted;
}
public int getViewCount() {
return viewCount;
}
public void setViewCount(int viewCount) {
this.viewCount = viewCount;
}
public int getReplyCount() {
return replyCount;
}
public void setReplyCount(int replyCount) {
this.replyCount = replyCount;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
2. reply.java
package project.entity;
import java.time.LocalDateTime;
public class Reply {
private int rid;
private String comment;
private LocalDateTime regTime;
private String uid;
private int bid;
private String uname;
public Reply() { }
public Reply(String comment, String uid, int bid) {
this.comment = comment;
this.uid = uid;
this.bid = bid;
}
public Reply(int rid, String comment, LocalDateTime regTime, String uid, int bid, String uname) {
this.rid = rid;
this.comment = comment;
this.regTime = regTime;
this.uid = uid;
this.bid = bid;
this.uname = uname;
}
@Override
public String toString() {
return "Reply [rid=" + rid + ", comment=" + comment + ", regTime=" + regTime + ", uid=" + uid + ", bid=" + bid
+ ", uname=" + uname + "]";
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public LocalDateTime getRegTime() {
return regTime;
}
public void setRegTime(LocalDateTime regTime) {
this.regTime = regTime;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public int getBid() {
return bid;
}
public void setBid(int bid) {
this.bid = bid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
3. User.java
package project.entity;
import java.time.LocalDate;
public class User {
private String uid;
private String pwd;
private String uname;
private String email;
private LocalDate regDate;
private int isDeleted;
public User() {}
public User(String uid, String pwd, String uname, String email, LocalDate regDate, int isDeleted) {
this.uid = uid;
this.pwd = pwd;
this.uname = uname;
this.email = email;
this.regDate = regDate;
this.isDeleted = isDeleted;
}
public User(String uid, String pwd, String uname, String email) {
this.uid = uid;
this.pwd = pwd;
this.uname = uname;
this.email = email;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + ", email=" + email + ", regDate=" + regDate
+ ", isDeleted=" + isDeleted + "]";//getPwd하면 원할 때 찍을 수 있으니 toString에서는 제거했음(나중에 필요하면 쓰기, pwd 쓰면 너무 길어져서)
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public LocalDate getRegDate() {
return regDate;
}
public void setRegDate(LocalDate regDate) {
this.regDate = regDate;
}
public int getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(int isDeleted) {
this.isDeleted = isDeleted;
}
}
BoardServiceImpl.java
'JAVA WEB' 카테고리의 다른 글
24.02.29 Mini Project(3) (0) | 2024.02.29 |
---|---|
24.02.28 miniProject (2) (0) | 2024.02.28 |
24.02.01 Web Server 구현 - 게시판/list/insert/update/viewCount/replyCount (0) | 2024.02.22 |
2024.01.31 게시판 서비스 구현(Web Server) (0) | 2024.02.22 |
2024.01.30 JSTL / SQL 이용한 표 생성(웹서버) / alert(사용자탈퇴) (0) | 2024.02.22 |