73일차_Spring

서창민·2023년 6월 23일
0

Spring

목록 보기
4/15
post-thumbnail

23.06.23 금 73일차

Spring

  • MVC 로그인 화면 만들기
어제에 이어서 로그인 화면을 동작하는 내용이다.
MVC 아키텍처를 사용해 JSP로 구현하도록 한다.
login
<%@ 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>
<body>
<div align="center">
<h1>로그인</h1>
<hr>
	<form action="login_ok.jsp">
	<table border=1>
	<tr>
		<td>아이디</td>
		<td><input type=text name=id></td>
	</tr>
	<tr>
		<td>비밀번호</td>
		<td><input type=text name=password></td>
	</tr>
	<tr>
		<td colspan=2 align=center><input type=submit value="로그인"></td>
	</tr>
	</table>
	
	</form>

</div>
</body>
</html>


login_ok
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import ="com.maju.k1.user.impl.*" %>
<%@page import ="com.maju.k1.user.*" %>
<%@page import ="java.util.*" %>

<%
	String path = request.getContextPath();
	String id = request.getParameter("id");
	String password = request.getParameter("password");
	
	UserVO vo = new UserVO();
	vo.setId(id);
	vo.setPassword(password);

	UserService service = new UserServiceImpl();
	List<UserVO> user = (List<UserVO>) service.getUser(vo);
	System.out.println("====>  유저 확인 " + user);
	if(user.isEmpty()){
		response.sendRedirect("login.jsp");	
	}else{
		response.sendRedirect(path+"/board/getBoardList.jsp");
	}
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

user의 값이 잘 넘어오는지 프린트문으로 확인을 해야한다.
데이터에 존재하는 로그인 동작 시 리스트화면을 갈수 있도록 조건을 설정한다.

getBoardList
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import ="com.maju.k1.board.impl.*" %>
<%@page import ="com.maju.k1.board.*" %>
<%@page import ="java.util.*" %>

<%
	BoardVO vo = new BoardVO();
	BoardService service = new BoardServiceImpl();
	List<BoardVO> li = service.getBoardList(vo);

%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<h2>게시판 목록보기</h2>
	<hr>
		<table border=1>
			<tr>
				<td>번호</td><td>제목</td><td>내용</td>
				<td>등록일</td><td>조회수</td>
			</tr>
			<%for (BoardVO m : li) { %>
			<tr>
				<td><%=m.getSeq() %></td>
				<td><%=m.getTitle() %></td>
				<td><%=m.getContent() %></td>
				<td><%=m.getRegDate() %></td>
				<td><%=m.getCnt() %></td>
			</tr>
			<% } %>
			<tr>
				<td colspan=5 align="center">
					<select>
						<option value="title">제목
						<option value="content">내용
					</select>
					<input name="ch2" type=text >
					<input type="submit" value="검색">					 
				</td>
			<tr>
		</table>
		
</div>
</body>
</html>

전체 글 목록을 출력하도록 for문을 이용해 테이블의 레코드를 불러온다.

write

<%@ 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>
<body>
<div align="center">
<h1>글 등록</h1>
<hr>
	<form action="write_ok.jsp">
		<table border=1>
			<tr>
				<td>제목</td>
				<td><input type=text name=title></td>
			</tr>
			<tr>
				<td>작성자</td>
				<td><input type=text name=writer width=20></td>
			</tr>
			<tr>
				<td>내용</td>
				<td><textarea name=content cols=40 rows=5></textarea></td>
			</tr>
			<tr>
				<td colspan=2 align=center><input type=submit value="새글등록"></td>
			</tr>
		</table>
	</form>

</div>
</body>
</html>

write_ok

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import ="com.maju.k1.board.impl.*" %>
<%@page import ="com.maju.k1.board.*" %>
<%@page import ="java.util.*" %>

<%
	
	String path = request.getContextPath();
	String title = request.getParameter("title");
	String writer = request.getParameter("writer");
	String content = request.getParameter("content");
	
	BoardVO vo = new BoardVO();
	vo.setTitle(title);
	vo.setWriter(writer);
	vo.setContent(content);

	BoardService service = new BoardServiceImpl();
	service.insertBoard(vo);
	System.out.println("====>  글등록 확인 " + vo);

	response.sendRedirect(path+"/board/getBoardList.jsp");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

새 글을 등록하고 등록된 값이 DB와 리스트에 추가되도록 설정한다.

동작 순서는 JSP > ServiceImpl > DaoInmpl 순으로 동작된다.

  • *.do
suvlet

package com.maju.k1.view.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.maju.k1.board.BoardService;
import com.maju.k1.board.BoardVO;
import com.maju.k1.board.impl.BoardServiceImpl;
import com.maju.k1.user.UserService;
import com.maju.k1.user.UserVO;
import com.maju.k1.user.impl.UserServiceImpl;

/**
 * Servlet implementation class DispatcherServlet
 */
public class DispatcherServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DispatcherServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		// TODO Auto-generated method stub
//		response.getWriter().append("Served at: ").append(request.getContextPath());
		process(request, response);
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		doGet(request, response);
	}
	
	private void process(HttpServletRequest request, HttpServletResponse response) throws IOException {
		
		String path2 = request.getContextPath();
		String uri = request.getRequestURI();
		String path = uri.substring(uri.lastIndexOf("/"));
		System.out.println("path : " + uri );
		System.out.println("path : " + path );
		
		HttpSession session = request.getSession(); 
		
		if(path.equals("/login.do")) {
			String id = request.getParameter("id");
			String password = request.getParameter("password");
			
			UserVO vo = new UserVO();
			vo.setId(id);
			vo.setPassword(password);

			UserService service = new UserServiceImpl();
			List<UserVO> user = (List<UserVO>) service.getUser(vo);
			System.out.println("====>  유저 확인 " + user);
			
			if(!user.isEmpty()){
				UserVO m = user.get(0);
				String name = m.getName();
				session.setAttribute("name", name);
				response.sendRedirect("getBoardList.do");
			}else{		
				response.sendRedirect(path2+"/login/login.jsp");	
			}
			
		}else if(path.equals("/logout.do")) {
			session.invalidate();
			response.sendRedirect(path2+"/index.jsp");
			
		}else if(path.equals("/insertBoard.do")) {
			
			String title = request.getParameter("title");
			String writer = request.getParameter("writer");
			String content = request.getParameter("content");
			
			BoardVO vo = new BoardVO();
			vo.setTitle(title);
			vo.setWriter(writer);
			vo.setContent(content);

			BoardService service = new BoardServiceImpl();
			service.insertBoard(vo);
			System.out.println("====>  글등록 확인 " + vo);

			response.sendRedirect("getBoardList.do");
			
		}else if(path.equals("/updateBoard.do")) {

			String seq = request.getParameter("seq");
			String title = request.getParameter("title");
			String writer = request.getParameter("writer");
			String content = request.getParameter("content");
			
			BoardVO vo = new BoardVO();
			vo.setTitle(title);
			vo.setWriter(writer);
			vo.setContent(content);
			vo.setSeq(Integer.parseInt(seq));

			BoardService service = new BoardServiceImpl();
			service.updateBoard(vo);
			System.out.println("====>  글수정 확인 " + vo);

			response.sendRedirect("getBoardList.do");
			
		}else if(path.equals("/deleteBoard.do")) {
			String seq = request.getParameter("seq");
			
			BoardVO vo = new BoardVO();
			vo.setSeq(Integer.parseInt(seq));

			BoardService service = new BoardServiceImpl();
			service.deleteBoard(vo);
			System.out.println("====>  글삭제 확인 " + vo);

			response.sendRedirect("getBoardList.do");
			
		}else if(path.equals("/getBoard.do")) {
			String seq = request.getParameter("seq");
			BoardVO vo = new BoardVO();
			vo.setSeq(Integer.parseInt(seq));
			BoardService service = new BoardServiceImpl();
			service.cntBoard(vo);
			BoardVO m = service.getBoard(vo);
			
			session.setAttribute("m", m);
			response.sendRedirect(path2+"/board/getBoard.jsp");
			
		}else if(path.equals("/getBoardList.do")) {
			String ch1 = request.getParameter("ch1");
			String ch2 = request.getParameter("ch2");
			
			BoardVO vo = new BoardVO();
			vo.setCh1(ch1);
			vo.setCh2(ch2);

			BoardService service = new BoardServiceImpl();
			List<BoardVO> li = service.getBoardList(vo);
			
			session.setAttribute("li", li);
			response.sendRedirect(path2+"/board/getBoardList.jsp");
		}
		

	
	}

}

작성한 게시판 수정, 삽입, 삭제, 목록보기, 검색 동작을 완성한 뒤 Suvlet 파일로 모아 .do 동작을 위치로하여 동작을 이어붙일 수 있다.
어렵기도 하지만 정확한 경로를 알아내는것이 중요하다 !
꾸준하게 작성하고 반복하도록 하자 !

profile
Back-end Developer Preparation Students

0개의 댓글