코딩하는 문과생

[Spring] 3. 스프링 기본(2)-브라우저에서 DAO까지 본문

웹 프로그래밍/Spring

[Spring] 3. 스프링 기본(2)-브라우저에서 DAO까지

코딩하는 문과생 2020. 2. 4. 12:11

[프로젝트 준비]

1. views와 resources업로드

2. preference-> web-> JSP파일-> utf-8로 수정

3. index.jsp생성하고

<body>
	<script type="text/javascript">
		location.href = "main.do";
	</script>
</body>

4. homeController 수정

package com.sinc.intern;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	@RequestMapping("/main.do")
	public String home() {
		System.out.println("Ctrl main");
		return "home";
	}
	
}


[UserCtrl 수정]

package com.sinc.intern.user.ctrl;

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

import com.sinc.intern.user.model.vo.UserDTO;

@Controller
public class UserCtrl {
	
	@RequestMapping("/loginForm.do")
	public String loginForm() {
		System.out.println("user loginForm");
		return "user/login";
	}
	
	@RequestMapping(value="/login.do", method=RequestMethod.POST)
	public String login(UserDTO dto) {
		System.out.println("user login dto : " + dto);
		return null;
	}
	
}

[UserService 인터페이스 생성]

package com.sinc.intern.user.service;

public interface UserService {
	public Object login(Object obj);
}

[UserServiceImpl생성]

package com.sinc.intern.user.service;

import org.springframework.stereotype.Service;

//프레임워크에 위임시킨다.
@Service("userS")
public class UserServiceImpl implements UserService{
	@Override
	public Object login(Object obj) {
		// TODO Auto-generated method stub
		return null;
	}
}

[UserCtrl]

package com.sinc.intern.user.ctrl;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


import com.sinc.intern.user.model.vo.UserDTO;
import com.sinc.intern.user.service.UserService;


@Controller
public class UserCtrl {
	
	//의존성 주입(DI), 해당 이름의 객체를 여기 변수에 넣어주세요. 
	@Resource(name="userS")
	private UserService service;
	
	@RequestMapping("/loginForm.do")
	public String loginForm() {
		System.out.println("user loginForm");
		return "user/login";
	}
	
	@RequestMapping(value="/login.do", method=RequestMethod.POST)
	public String login(UserDTO dto, HttpSession session) { //단순 데이터라면 session이 아닌 Model model을 이용하면 된다.
		System.out.println("user login dto : " + dto);
		Object user = service.login(dto);
		if(user != null) {
			//model.addAttribute("loginSession", user);
			//데이터 유효시간이 request되는 페이지에만 유효하다.
			session.setAttribute("loginUser", user);
		}
		return null;
	}
	
}

[UserDao 인터페이스]

package com.sinc.intern.user.model.sql;

public interface UserDao {
	public Object loginRow(Object obj);
}

[UserDaoImpl]

package com.sinc.intern.user.model.sql;

import org.springframework.stereotype.Repository;

//DB와 연동시킨다.
//매개변수가 없어도 되지만, 넣어주는 게 좋다.
@Repository("userD")
public class UserDaoImpl implements UserDao{
	@Override
	public Object loginRow(Object obj) {
		// TODO Auto-generated method stub
		return null;
	}
}

[UserServiceImpl 수정]

//프레임워크에 위임시킨다.
@Service("userS")
public class UserServiceImpl implements UserService{
	
	//이름이 userD인 객체를 생성해서 dao에 넣는다.
	@Resource(name="userD")
	private UserDao dao;
	
	@Override
	public Object login(Object obj) {
		System.out.println("user service login : " + obj);
		return dao.loginRow(obj);
	}
}

[UserDaoImpl 수정]

package com.sinc.intern.user.model.sql;

import org.springframework.stereotype.Repository;

//DB와 연동시킨다.
//매개변수가 없어도 되지만, 넣어주는 게 좋다.
@Repository("userD")
public class UserDaoImpl implements UserDao{
	@Override
	public Object loginRow(Object obj) {
		System.out.println("user dao loginRow : " + obj);
		return null;
	}
}

[header.jsp]

              <!-- sing in add -->
              <c:if test="${loginUser == null }">
              <li>
              	<a href="/loginForm.do">
              		<i class="fa fa-sign-in" aria-hidden="true"></i>
              	</a>
              </li>
              </c:if>

~~/loginForm.do


[login.jsp]

<form action="login.do" method="post">
  <div class="form-group has-feedback">
    <input type="text" name="id" class="form-control" placeholder="USER ID"/>
    <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
  </div>
  <div class="form-group has-feedback">
    <input type="password" name="pwd" class="form-control" placeholder="Password"/>
    <span class="glyphicon glyphicon-lock form-control-feedback"></span>
  </div>
  <div class="row">
    <div class="col-xs-8">    
      <div class="checkbox icheck">
        <label>
          <input type="checkbox" name="useCookie"> Remember Me
        </label>
      </div>                        
    </div><!-- /.col -->
    <div class="col-xs-4">
      <button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button>
    </div><!-- /.col -->
  </div>
</form>

dao까지 값이 잘 넘어간다.