[Spring과 myBatis 이용 MemberService]
@Controller
public class HomeController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
MemberService service;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
return "index";
}
@RequestMapping(value = "/joinForm", method = RequestMethod.GET)
public String joinForm(Model model) {
return "joinForm";
}
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String join(Model model, @RequestParam HashMap<String, String> params) {
logger.info("{}", params);
int success = service.join(params);
logger.info("성공여부 : " + success);
String msg = "회원가입에 실패했습니다.";
if (success > 0) {
msg = "회원가입에 성공했습니다.";
}
model.addAttribute("msg", msg);
return "index";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(Model model, @RequestParam HashMap<String, String> params, HttpSession session) {
logger.info("{}", params);
String id = service.login(params);
logger.info("로그인아이디 : " + id);
String page = "index";
if (id != null) {
session.setAttribute("loginId", id);
page = "redirect:/list";
}
return page;
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(Model model, HttpSession session) {
logger.info("리스트 요청");
String loginId = (String) session.getAttribute("loginId");
if (loginId != null) {
ArrayList<MemberDTO> list = service.list();
logger.info("list size : " + list.size());
model.addAttribute("list", list);
return "list";
} else {
return "index";
}
}
@RequestMapping(value = "/updateForm", method = RequestMethod.GET)
public String updateForm(Model model, @RequestParam String id) {
logger.info("수정 폼 요청");
MemberDTO dto = service.updateForm(id);
logger.info("dto : " + dto);
model.addAttribute("dto", dto);
return "updateForm";
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String update(Model model, @RequestParam HashMap<String, Object> params) {
logger.info("수정 요청");
logger.info("{}", params);
int success = service.update(params);
String page = "redirect:/list";
logger.info("수정 성공여부 : " + success);
return page;
}
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public String update(Model model, @RequestParam String id) {
logger.info("삭제 요청");
int success = service.delete(id);
logger.info("성공여부 : " + success);
return "redirect:/list";
}
}
@Service
public class MemberService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired MemberDAO dao;
public int join(HashMap<String, String> params) {
logger.info("회원가입 서비스 접근");
return dao.join(params);
}
public String login(HashMap<String, String> params) {
logger.info("로그인 서비스 접근");
return dao.login(params);
}
public ArrayList<MemberDTO> list() {
logger.info("리스트 서비스 접근");
return dao.list();
}
public MemberDTO updateForm(String id) {
logger.info("업데이트폼 서비스 접근");
return dao.updateForm(id);
}
public int update(HashMap<String, Object> params) {
logger.info("업데이트 서비스 접근");
return dao.update(params);
}
public int delete(String id) {
logger.info("삭제 서비스 접근");
return dao.delete(id);
}
}
[MemberDAO]
public interface MemberDAO {
int join(HashMap<String, String> params);
String login(HashMap<String, String> params);
ArrayList<MemberDTO> list();
MemberDTO updateForm(String id);
int update(HashMap<String, Object> params);
int delete(String id);
}
[mapper.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
<mapper namespace="com.spring.main.dao.MemberDAO">
<select id="login" resultType="String" parameterType="hashMap">
SELECT id FROM member WHERE id=#{id} AND pw=#{pw}
</select>
<select id="list" resultType="com.spring.main.dto.MemberDTO">
SELECT * FROM member ORDER BY reg_date DESC
</select>
<insert id="join" parameterType="hashMap">
INSERT INTO member (id,pw,name,phone,email) VALUES(#{id},#{pw},#{name},#{phone},#{email})
</insert>
<delete id="delete">
DELETE FROM member WHERE id=#{param1}
</delete>
<select id="updateForm" resultType="com.spring.main.dto.MemberDTO">
SELECT * FROM member WHERE id=#{param1}
</select>
<update id="update" parameterType="hashMap">
UPDATE MEMBER set id=#{id},pw=#{pw},name=#{name},phone=#{phone},email=#{email} WHERE id=#{id}
</update>
</mapper>
[web.xml]
<filter>
<filter-name>encodingFliter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFliter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 한글깨짐방지를 위해 web.xml에 필터를 추가해준다.
- 기존 request.setCharacterEncodig(“UTF-8”)의 기능이다.