Tiles๋ฅผ ํ์ฉํ ๋ก๊ทธ์ธ
๋ก๊ทธ์ธ๊ณผ ํ์๊ฐ์ ์ ํ์ํ Mapper์ค๋น
Mybatis Mapper tag
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
Member.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="Member">
<!-- ์์ด๋ ์ค๋ณต์ฒดํฌ -->
<select id="getId" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT NVL(COUNT(*), 0)
FROM MEMBER
WHERE ID=#{id}
</select>
<!-- ํ์๊ฐ์
-->
<insert id="addmember" parameterType="bit.com.a.dto.MemberDto">
INSERT INTO MEMBER(ID, PWD, NAME, EMAIL, AUTH)
VALUES(#{id}, #{pwd}, #{name}, #{email}, 3)
</insert>
<!-- ๋ก๊ทธ์ธ์ ์์ด๋ ๋น๋ฐ๋ฒํธ ํ์ธ -->
<select id="login" parameterType="bit.com.a.dto.MemberDto"
resultType="bit.com.a.dto.MemberDto">
SELECT ID, NAME, EMAIL, AUTH
FROM MEMBER
WHERE ID=#{id} AND PWD=#{pwd}
</select>
</mapper>
๋ก๊ทธ์ธ
๋งจ๋จผ์ index๋ถํฐ ์์
<%@ 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>
<%
response.sendRedirect("login.do");
%>
</body>
</html>
MemberController
package bit.com.a.controller;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
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.ResponseBody;
import bit.com.a.dto.MemberDto;
import bit.com.a.service.MemberService;
@Controller
public class MemberController {
@Autowired
MemberService service;
@RequestMapping(value = "login.do", method = RequestMethod.GET)
public String login() {
return "login.tiles";
}
layouts.xml
login.tiles๋ฅผ ์ค์
tiles tag
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="login.tiles" template="/WEB-INF/views/login/login.jsp">
</definition>
login.tiles(login.jsp)
div id="main_wrap">
<div id="middle_wrap">
<div id="content_wrap">
<div style="width: 502px; height: 166px; margin-left: auto; margin-right: auto;
position: relative; top: 100px;">
<div class="login_title_warp">
<div style="margin-top: 15px">
<h2>My Home Page</h2>
</div>
</div>
<div id="login_wrap">
<form action="loginAf.do" name="frmFrom" id="_frmFrom" method="post">
<table class="content_table" style="width: 75%">
<colgroup>
<col style="width:30%">
<col style="width:70%">
</colgroup>
<tr>
<th style="background: #eeeeee; color: #3e5fba">์์ด๋</th>
<td> <input type="text" id="_userid" name="id"
size="20px" style="border: 1px solid #dddddd" placeholder="ID">
<input type="checkbox" id="chk_save_id">ID ์ ์ฅ
</td>
</tr>
<tr>
<th style="background: #eeeeee; color: #3e5fba">ํจ์ค์๋</th>
<td> <input type="text" id="_pwd" name="pwd"
size="20px" style="border: 1px solid #dddddd" placeholder="Password">
</td>
</tr>
<tr>
<td colspan="2" style="height: 20px; text-align: center;">
<span>
<a href="#none" id="_btnLogin" title="๋ก๊ทธ์ธ">
<img alt="" src="./image/login_btn.jpg">
</a>
<a href="#none" id="_btnRegi" title="ํ์๊ฐ์
">
<img alt="" src="./image/regi.jpg">
</a>
</span>
</td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
์์ด๋, ๋น๋ฐ๋ฒํธ ์ ๋ ฅํ์ง์์ ์ ์ ๋ ฅํ๋ผ๋ ์๋ด
(์ ๋ ฅํ์ง ์์์ focus๋ก ํฅํ๊ฒ ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ)
๋ชจ๋ ๋ค ์ ๋ ฅ์ submitํ๊ทธ๋ก action์ ์งํํ๋ค (loginAf.do๋ก ์ด๋)
<script type="text/javascript">
$("#_btnRegi").click(function () {
location.href = "regi.do";
});
$("#_btnLogin").click(function () {
if($("#_userid").val().trim() == ""){
alert('id๋ฅผ ์
๋ ฅํด ์ฃผ์ญ์์ค');
$("#_userid").focus();
}
else if($("#_pwd").val().trim() == ""){
alert('ํจ์ค์๋๋ฅผ ์
๋ ฅํด ์ฃผ์ญ์์ค');
$("#_pwd").focus();
}
else{
$("#_frmFrom").submit();
}
});
์ฟ ํค์ ์ฅ
<script type="text/javascript">
let user_id = $.cookie("user_id");
if(user_id != null){ // ์ ์ฅ๋ id๊ฐ ์์
// alert("์ฟ ํค ์์");
$("#_id").val( user_id );
$("#chk_save_id").attr("checked", "checked");
// $("#chk_save_id").prop("checked", true);
}
$("#chk_save_id").click(function() {
if( $("#chk_save_id").is(":checked") ){
// alert('์ฒตํฌ๋จ');
if( $("#_id").val().trim() == "" ){
alert('id๋ฅผ ์
๋ ฅํด ์ฃผ์ญ์์ค');
$("#chk_save_id").prop("checked", false);
}else{
// ์ฟ ํค๋ฅผ ์ ์ฅ
$.cookie("user_id", $("#_id").val().trim(), { expires:7, path:'./'});
}
}
else{
$.removeCookie("user_id", { path:'./' });
}
});
</script>
๋ก๊ทธ์ธ๋ฒํผ์ ๋๋ฅธํ MemberController๋์ฐฉ loginAf.do๋์ฐฉ
@RequestMapping(value = "loginAf.do", method=RequestMethod.POST)
public String loginAf(MemberDto dto, HttpServletRequest req) {
MemberDto login = service.login(dto);
if(login != null && !login.getId().equals("")) {
req.getSession().setAttribute("login", login);
// req.getSession().setMaxInactiveInterval(60 * 60 * 24);
return "redirect:/bbslist.do";
}
else {
return "redirect:/login.do";
}
}
ํ์๊ฐ์
loginํ๋ฉด์์ ํ์๊ฐ์ ์ ๋๋ฅผ์ (์ปจํธ๋กค๋ฌ)regi.do - > (๋ทฐ)regi.tiles
@RequestMapping(value = "regi.do", method = RequestMethod.GET)
public String regi() {
return "regi.tiles";
}
<definition name="regi.tiles" template="/WEB-INF/views/login/regi.jsp">
</definition>
์์ด๋ ์ฒดํฌ input์ ์ํ๋ ์์ด๋ ์์ฑํ ์์ด๋์ฒดํฌ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋ณตํ์ธ๊ฐ๋ฅ ajax
regi.jsp
<div id="main_wrap">
<div id="middle_wrap">
<div id="content_wrap">
<div style="width: 502px; height: 166px; margin-left: auto; margin-right: auto;
position: relative; top: 100px;">
<div class="login_title_warp">
<div style="margin-top: 15px">
<h2>ํ์๊ฐ์
</h2>
</div>
</div>
<div id="regi_wrap">
<form action="" method="post" id="_frmFrom" name="frmFrom">
<table class = "content_table" style="width:75%">
<colgroup>
<col style="width:30%">
<col style="width:70%">
</colgroup>
<tr>
<th>์์ด๋ ์ฒดํฌ</th>
<td>
<input type="text" name="sid" id="_id" size = "30">
<a href="" id="_btnGetId" title="id์ฒดํฌ">
<img alt="" src="./image/idcheck.png">
</a>
<!-- ์์ด๋ ์ฌ์ฉ์ฌ๋ถ -->
<div id="_rgetid">
</div>
</td>
</tr>
<tr>
<th>์์ด๋</th>
<td>
<input type="text" name = "id" id="_userid" size="30" readonly="readonly">
</td>
</tr>
<tr>
<th>ํจ์ค์๋</th>
<td>
<input type="text" name = "pwd" id="_pwd" size="30" >
</td>
</tr>
<tr>
<th>์ด๋ฆ</th>
<td>
<input type="text" name = "name" id="_name" size="30">
</td>
</tr>
<tr>
<th>์ด๋ฉ์ผ</th>
<td>
<input type="text" name = "email" id="_email" size="30">
</td>
</tr>
<tr>
<td colspan="2" style="height: 50px; text-align: center">
<a href="#none" id="_btnRegi" title="ํ์๊ฐ์
">
<img alt="" src="./image/regi.jpg">
</a>
</td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#_btnRegi").click(function(){
if($("#_userid").val().trim() == ""){
alert("์์ด๋๋ฅผ ์
๋ ฅํด์ฃผ์ญ์์ค");
$("#_id").focus();
}else if ($("#_pwd").val().trim() == ""){
alert("๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ญ์์ค");
$("#_pwd").focus();
}else{
$("_frmFrom").attr("action","regiAf.do").submit();
}
});
$("#_btnGetId").click(function(){
$.ajax({
type:"get",
url: "idcheck.do",
data:{"id":$("#_id").val()},
success:function(data){
if(data == 0){
$("#_rgetid").css("color", "#0000ff");
$("#_rgetid").html('์ฌ์ฉํ ์ ์๋ id์
๋๋ค');
$("#_userid").html(("#_id").val());
}else{
$("#_rgetid").css("color", "#ff0000");
$("#_rgetid").html('์ฌ์ฉํ ์ ์๋ id์
๋๋ค');
$("#_id").val("");
}
}
});
});
</script>
MemberDao
package bit.com.a.dao;
import bit.com.a.dto.MemberDto;
public interface MemberDao {
int getId(MemberDto mem);
boolean addmember(MemberDto mem);
MemberDto login(MemberDto dto);
}
MemberDaoImpl
package bit.com.a.dao.impl;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import bit.com.a.dao.MemberDao;
import bit.com.a.dto.MemberDto;
@Repository // = ์ ์ฅ์
public class MemberDaoImpl implements MemberDao {
@Autowired // DI
SqlSession sqlSession; // SqlSession sqlSession = new SqlSessiontemplate();
String namespace = "Member.";
@Override
public int getId(MemberDto mem) {
return sqlSession.selectOne(namespace + "getId", mem);
}
@Override
public boolean addmember(MemberDto mem) {
int n = sqlSession.insert(namespace + "addmember", mem);
return n>0?true:false;
}
@Override
public MemberDto login(MemberDto dto) {
MemberDto mem = sqlSession.selectOne(namespace + "login", dto);
return mem;
}
}
MemberService
package bit.com.a.service;
import bit.com.a.dto.MemberDto;
public interface MemberService {
//List<MemberDto> allMember();
int getId(MemberDto mem);
boolean addmember(MemberDto mem);
MemberDto login(MemberDto dto);
}
MemberServiceImpl
package bit.com.a.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import bit.com.a.dao.MemberDao;
import bit.com.a.dto.MemberDto;
import bit.com.a.service.MemberService;
@Service // controller, dao ์ค๊ฐ์ ์์น.... DB๋ฐ์ดํฐ ๊ฐ๊ณต
public class MemberServiceImpl implements MemberService {
@Autowired
MemberDao memberDao; // MemberDao memberDao = new MemberDaoImpl();
/*
@Override
public List<MemberDto> allMember() {
return memberDao.allMember();
}
*/
@Override
public int getId(MemberDto mem) {
return memberDao.getId(mem);
}
@Override
public boolean addmember(MemberDto mem) {
return memberDao.addmember(mem);
}
@Override
public MemberDto login(MemberDto dto) {
return memberDao.login(dto);
}
}
'์คํ๋ง Spring > ๐งถ ์คํ๋ง ํ๋ ์์ํฌ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง Tiles๋ฅผ ํ์ฉํ ๊ฒ์ํ ๋ง๋ค๊ธฐ (๊ฒ์ํ ํ์ด์ง, ๊ฒ์) (0) | 2021.06.22 |
---|---|
Spring Model ๊ฐ์ฒด๋ ๋ฌด์์ผ๊น? (0) | 2021.06.22 |
Tiles๋ฅผ ํ์ฉํ ๊ฒ์ํ ๋ง๋ค๊ธฐ์ Tiles ์ค์ ๋ฒ (0) | 2021.06.22 |
ajax์ @ResponseBody (0) | 2021.06.22 |
service์ serviceImpl์ ๋ํด์... (0) | 2021.06.22 |
๋๊ธ