새소식

JAVA 교육/Spring

2019/10/16 Spring 로그인 폼

  • -

Login 

1.loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>login/loginForm.jsp</title>
</head>
<body>

	<form method="post" action="login.do">
	<table border=1>
	<tr>
	  <td colspan=2 align=center>* 로그인 *</td>
	</tr>
	<tr>
	  <td>아이디</td>
	  <td><input type="text" name="id" size=20></td>
	</tr>
	<tr>
	  <td>비밀번호</td>
	  <td><input type="password" name="pw" size=20></td>
	</tr>
	<tr>
	  <td colspan=2 align=center>
	    <input type="submit" value="확인">
	    <input type="reset"  value="취소">
	  </td>
	</tr>
	</table>
	</form>
</body>
</html>

 

▲ 로그인 화면을 구현하는 loginForm 을 만들고 method 는 post 방식, action 은 login.do 로 취했다.

2. LoginVO

"VO" 라고 하면 지금까지 DTO,DAO를 사용하던 나에게는 무척 생소하다
LoginVO 라고 하는것은 Login 관련 DTO 와 같은 역할을 하는 것이다. 그렇기 때문에 전까지 만들어온 DTO와 같은 방법으로 만들어 주면 된다. 

package kr.co.basicspring.test03;

public class LoginVO { 	// Value Object
						// DTO 클래스
	private String id;
	private String pw;
	public LoginVO() {}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	@Override
	public String toString() {
		return "LoginVO [id=" + id + ", pw=" + pw + "]";
	}
}

※ 자세한 내용은 Srpring에 "DTO 와 VO 차이점" 게시글을 읽어보자

https://geminihoroscope.tistory.com/66

 

DTO 와 VO 의 차이점

오늘은 DTO와 VO에 관하여 알아보자 DTO는 Data Transfer Object의 약자로서, VO ( Value Object )랑 혼용해서 쓴다. 보통은 DTO와 VO를 혼용해서 사용들 하지만, 두 약자가 어떻게 다른지 알아보고 가도록 하자 D..

geminihoroscope.tistory.com

 

3. LoginCont

 

asd//사용자가 요청한 정보를 가져와서 처리하는 다양한 방법

//1) 
@RequestMapping(value="login.do",method=RequestMethod.POST)
public ModelAndView loginProc(HttpServletRequest req) {
String id=req.getParameter("id");
String pw=req.getParameter("pw");
}//loginProc() end


//2)
@RequestMapping(value="login.do",method=RequestMethod.POST)
public ModelAndView loginProc(@RequestParam("id") String id,
  @RequestParam("pw") String pw) {
}//loginProc() end
 

//3) 
@RequestMapping(value="login.do",method=RequestMethod.POST)
public ModelAndView loginProc( String id,String pw) {
}//loginProc() end


//4)DTO(VO) 객체가 오면 반드시 getter, setter 함수가 있어야 한다
@RequestMapping(value="login.do",method=RequestMethod.POST)
public ModelAndView loginProc(LoginVO vo) {

}//loginProc() end

 

▲ 이전 게시물에서 배웠던 저 4가지의 처리방법 말고 한꺼번에 처리하는 방식도 존재한다

요청한 정보 동시 처리 방식

package kr.co.basicspring.test03;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller	//URL에서 요청한 명령어를 처리하는 클래스
			//<-스프링컨테이너(서버)에 의해서 자동으로 객체 생성된다.	
public class LoginCont {

	public LoginCont() {
		System.out.println("-------------------------------LoginCont() 객체생성됨");
		
	}//LoginCont end
		
		//결과확인
	//http://localhost:8090/basicspring/login.do
	
	@RequestMapping(value="login.do",method=RequestMethod.GET)
	public String loginForm() {
		// /WEB-INF/views/login/loginForm.jsp
		return "login/loginForm";
	}//loginForm() end
    
   @RequestMapping(value="login.do",method=RequestMethod.POST)
	public ModelAndView loginProc(LoginVO vo,HttpServletRequest req,HttpSession session){
		String id=vo.getId();
		String pw=vo.getPw();
		ModelAndView mav=new ModelAndView();
		if(id.equals("겨울밤")&&pw.equals("1234")) {
			//로그인 성공
			mav.setViewName("login/loginResult");
			session.setAttribute("s_id", id);
			session.setAttribute("s_pw", pw);
			req.setAttribute("msg", "로그인이 되었다~~~~!!!");
		}else {
			//로그인 실패
			mav.setViewName("login/msgView");
			mav.addObject("msg", "<p>아이디와 비번이 일치하지 않습니다.</p>");
			mav.addObject("link","<a href='javascript:history.back()'>[다시시도]</a>");
		}
		return mav;
	}//loginProc() end
	
}

 

▲ 30 line 함수 매개변수를 (LoginVO vo,HttpServletRequest req,HttpSession session)  한꺼번에 올리는 것이 가능하다
ModelAndView 로 이동할 페이지 loginResult 와 msgView 를 만들어 이동을 하자

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.