본문 바로가기

JSP

JSP 게시판 만들기(2) MVC패턴 model2

반응형

지난 글에서는 로그인에 대한 Dao구현까지 하고 왔다.

이제 login.jsp 에서 입력한 아이디와 비밀번호를 받아 로그인에 대한  처리를 하겠다.

먼저 com.thboard.www.command 패키지를 만든 후 command 인터페이스를 만든다.

command

그 커맨드 인터페이스를 상속받아 로그인 커맨드를 생성한다.

login.jsp 에서 보낸 파라미터에서 아이디와 패스워드를 꺼내 구현한 Dao의 로그인 처리 함수를 실행한다.

성공하면 Main.jsp로 리다이렉트 시키고 실패하였으면, 안내 메시지를 띄우고 로그인 페이지로 돌아간다.

HttpSession과 Cookie를 사용하여 아이디 저장 기능을 구현한 모습이다.

UserLoginCommand

package com.thboard.www.command;

import java.io.IOException;

public class UserLoginCommand implements Command {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		String userID = request.getParameter("userID");
		String userPass = request.getParameter("userPass");
		String check = request.getParameter("check");
		
		
		
		HttpSession session = request.getSession();
		
		int result = new UserDao().loginProc(userID, userPass);
		
		String viewPage = "Main.jsp";
		
		if(result != 1) {
			try {
				response.setContentType("text/html;charset=UTF-8"); 
	            PrintWriter out = response.getWriter(); 
	            out.println("<script>"); 
	            out.println("alert('로그인에 실패하셨습니다. 아이디와 비밀번호 확인 후 다시 로그인해주세요.');"); 
	            out.println("history.back();"); 
	            out.println("</script>"); 
	            out.close();

			} catch (IOException e) {
				
			}
		}else {
			session.setAttribute("userID", userID);
			if(check!=null) {
				Cookie cookie = new Cookie("userID",userID);
				cookie.setMaxAge(1*60);
				response.addCookie(cookie);
			}
		}
		try {
			response.sendRedirect(viewPage);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
login.jsp

<form method="post" action="Login.bo">
  <h3 style="text-align:center;">로그인 화면</h3>
..생략..
</form>

login.jsp form에서 로그인 처리 url를 정해준다. 그다음은 컨트롤러에서 요청에 대한 처리를 구현한 커맨드와 매핑해주는 것을 할 것이다. 오늘은 xml 파일을 이용해서 처리할 건데 자신이 편한 방법으로 사용하면 된다.

Con.XML 파일

<?xml version="1.0" encoding="UTF-8"?>

<ControllerXml>
	<key>/Login.bo</key>
	<value>com.si.var.command.ULogincommand</value>
</ControllerXml>
Contoller 파일

package com.thboard.www.controller;

import java.io.UnsupportedEncodingException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Controller extends HttpServlet{
	public HashMap map;	
	public ArrayList<String> key;
	public ArrayList value;
	public void init() throws ServletException {
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document doc = doc = builder.parse(path+"\\Con.xml");
			
			NodeList list = doc.getElementsByTagName("ControllerXml");
			
			key = new ArrayList<String>();
			value = new ArrayList();
			for(Node node= list.item(0).getFirstChild() ; node !=null ; node=node.getNextSibling()) {
				if(node.getNodeName().equals("key")) {
					key.add(node.getTextContent());
				}else if(node.getNodeName().equals("value")) {
					value.add(node.getTextContent());
				}
			}
			
		} catch(Exception e) {
			e.printStackTrace();
		}
		map = new HashMap();
		for(int i = 0; i < key.size(); i++) {
			String strClass = (String) value.get(i);
			try {
				Class tmp = Class.forName(strClass);
				Object o = tmp.newInstance();
				map.put(key.get(i), o);
			} catch(Exception e) {
				e.printStackTrace();
			}
		}
		
	}
		public void service(HttpServletRequest req,HttpServletResponse res) {
			String viewPage = null;
			
			try {
				req.setCharacterEncoding("UTF-8");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			
			String uri = req.getRequestURI();
			String conPath = req.getContextPath();
			String com = uri.substring(conPath.length());
			System.out.println(com);
			Command command = (Command)map.get(com);
			command.execute(req, res);
		}
}

여기까지 하면 로그인에 대한 구현은 모두 끝마쳤다.

다음은 실행화면이다.

로그인 확인을 위해 더미 데이터를 활용하겠다.

로그인 하는중

성공적으로 로그인되는 것을 볼 수 있다.

다음에는 회원가입과 본격적인 게시판에 대한 내용을 올리도록 하겠다.

반응형

'JSP' 카테고리의 다른 글

JSP 게시판 만들기(1) MVC패턴 model2  (0) 2019.06.30
JSP 컨트롤러(Controller) properties,XML 적용  (0) 2019.06.30