SPRING 정적 파일
* src/main/webapp/resources폴더안에 생성
css파일 불러올 땐 <link>, javascript파일 불러올 땐 <script>
* servlet-context.xml(16번째 줄)에서 경로 조절 가능

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<c:set var="url" value="<%= request.getContextPath() %>"></c:set>
<html>
<head>
<title>Home</title>
<link href="${url}/css/test.css" rel="stylesheet">
<link href="${url}/css/test2.css" rel="stylesheet">
<script type="text/javascript" src="${url}/js/test.js"></script>
</head>
<body>
<c:url value="/resources/img/asdf.png" var="path" />
path: ${path }<br>
req : <%= request.getContextPath() %>/img/asdf.png<br>
page : ${pageContext.request.contextPath }/img/asdf.png<br>
<img src="${path}" width="100" height="100">
<h1>
Hello world!!!!!!
</h1>
<P> The time on the server is ${serverTime}. </P>
<button type="button" onclick="test()">클릭</button>
</body>
</html>




실행 결과
SPRING cookie
쿠키 생성
HttpServletResponse를 컨트롤러에서 받아온다.
Cookie c = new Cookie("쿠키명", "쿠키값");
c.setMaxAge(5) : 쿠키 5초 유지
res.addCookie(c) : 쿠키 추가
c.setPath("경로") : 쿠키 path 지정
쿠키 받아오기 (모든 쿠키)
HttpServletRequest를 컨트롤러에서 받아온다.
req.getCookies() : 쿠키값 받아오기(배열 형식으로 받아온다)
원하는 쿠키만 받기
@CookieValue(value="해당 쿠키명", required = false) Cookie 저장할 변수명
: 해당하는 쿠키값은 변수명에다가 저장한다, 존재하지 않을 경우 null로 표현
* document.cookie : 자바스크립트상에서 쿠키값 받아오는 방법(이름, 밸류 다 나옴)
* split을 통해 이름과 밸류를 나눈다(배열 형식으로 저장)
* 인덱스 번호를 통해 본인의 쿠키가 맞는지 확인

package com.care.ex01;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class CookieController {
@GetMapping("cookie")
public String myCookie(HttpServletResponse res,
HttpServletRequest req,
@CookieValue(value="myCookie", required = false) Cookie cook) {
System.out.println("cook : " + cook);
System.out.println(cook.getName());
System.out.println(cook.getValue());
Cookie cookie = new Cookie("myCookie", "testCookie");
cookie.setMaxAge(5);
res.addCookie(cookie);
Cookie[] arrCookie = req.getCookies();
for (Cookie c : arrCookie) {
System.out.println("name : " + c.getName());
System.out.println("value : " + c.getValue());
}
return "cookie/cookie";
}
@GetMapping("cookie02")
public String myCookie02(Model model,
@CookieValue(value="myCookie", required = false) Cookie cook) {
if (cook != null) {
model.addAttribute("cook", cook.getValue());
}
return "cookie/cookie02";
}
@GetMapping("popup02")
public String pop02() {
return "cookie/popup02";
}
@GetMapping("cookieChk")
public void cookieChk(HttpServletResponse res) {
Cookie cook = new Cookie("myCookie", "testCookie");
cook.setMaxAge(5);
cook.setPath("/");
res.addCookie(cook);
}
}
<%@ 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>
<script type="text/javascript">
function popup() {
let url = "popup02";
let setWindow = "width=300, height=200, top=500, left=500";
//if ("${cook}" == "") {
// window.open(url, "", setWindow);
//}
console.log("cook : " + document.cookie)
let cookie = document.cookie.split("=");
console.log("cook : " + cookie)
console.log("cook : " + cookie[0])
console.log("cook : " + cookie[1])
if (cookie[0] != "myCookie") {
window.open(url, "", setWindow);
}
}
</script>
</head>
<body onload="popup()">
cook : ${cook }<br>
쿠키 페이지
</body>
</html>
<%@ 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>
<script type="text/javascript">
function chk() {
location.href="cookieChk";
window.close();
}
</script>
</head>
<body>
<h3>팝 업 창</h3>
<hr>
<input id="check" type="checkbox" onclick="chk()">
<label for="check">하루동안 열지않음!!!</label>
</body>
</html>
실행 결과
SPRING session
HttpSession session = req.getSession(); : 세션 생성
session.setAttribute("키", "밸류") : 세션 추가
* 부여하는 세션 이름이 겹칠 경우, sessionScope.이름 을 사용하면 확인 가능
session.removeAttribute("키명") : 특정 세션만 삭제
session.invalidate() : 모든 세션 삭제
* HttpSession session을 받아와서 처리 가능
package com.care.ex01;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class SessionController {
@GetMapping("makeSession")
public String makeSession(HttpServletRequest req) {
HttpSession session = req.getSession();
session.setAttribute("id", "aaa");
session.setAttribute("name", "홍길동");
session.setAttribute("age", "20");
return "session/makeSession";
}
@GetMapping("resultSession")
public String resultSession(Model model) {
model.addAttribute("id", "asdf모델");
return "session/resultSession";
}
@GetMapping("delSession")
public String delSession(HttpServletRequest req,
HttpSession session) {
HttpSession s = req.getSession();
System.out.println("s.id : " + s.getAttribute("id"));
s.removeAttribute("id");
System.out.println("session.name : " + session.getAttribute("name"));
session.invalidate();
return "session/delSession";
}
}
<%@ 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>
<h3>세션 설정</h3>
id : ${id }<br>
name : ${name }<br>
age : ${sessionScope.age }<br>
req.age : <%= session.getAttribute("age") %>
<hr>
<a href="resultSession">세션 확인</a>
<a href="delSession">세션 삭제</a>
</body>
</html>
<%@ 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>
<h3>세션 확인</h3>
id : ${id }<br>
sessionScope.id : ${sessionScope.id}<br>
name : ${name }<br>
age : ${sessionScope.age }<br>
req.age : <%= session.getAttribute("age") %>
<hr>
<a href="makeSession">세션 설정</a>
<a href="delSession">세션 삭제</a>
</body>
</html>
<%@ 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>
<h3>세션 삭제</h3>
id : ${id }<br>
sessionScope.id : ${sessionScope.id}<br>
name : ${name }<br>
age : ${sessionScope.age }<br>
req.age : <%= session.getAttribute("age") %>
<hr>
<a href="makeSession">세션 설정</a>
<a href="resultSession">세션 확인</a>
</body>
</html>
실행 결과
SPRING session 활용(login)
* session은 jsp파일에서도 설정 가능, controller에서도 설정 가능
package com.care.ex01;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class SessionController {
@GetMapping("makeSession")
public String makeSession(HttpServletRequest req) {
HttpSession session = req.getSession();
session.setAttribute("id", "aaa");
session.setAttribute("name", "홍길동");
session.setAttribute("age", "20");
return "session/makeSession";
}
@GetMapping("resultSession")
public String resultSession(Model model) {
model.addAttribute("id", "asdf모델");
return "session/resultSession";
}
@GetMapping("delSession")
public String delSession(HttpServletRequest req,
HttpSession session) {
HttpSession s = req.getSession();
System.out.println("s.id : " + s.getAttribute("id"));
s.removeAttribute("id");
System.out.println("session.name : " + session.getAttribute("name"));
session.invalidate();
return "session/delSession";
}
@GetMapping("login")
public String login() {
return "session/login";
}
@PostMapping("check")
public String check(@RequestParam String id,
@RequestParam String pwd,
HttpSession session) {
String DB_id = "1", DB_pwd = "1";
if (DB_id.equals(id) && DB_pwd.equals(pwd)) {
session.setAttribute("loginUser", id);
session.setAttribute("nick", "홍길동");
return "session/main";
}
return "redirect:login";
}
@GetMapping("logout")
public String logout(HttpSession session) {
if (session.getAttribute("loginUser") == null) {
return "redirect:login";
}
session.invalidate();
return "session/logout";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:choose>
<c:when test="${loginUser == null }">
<form action="check" method="post">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="submit" value="로그인"><br>
</form>
</c:when>
<c:otherwise>
${nick}님 로그인 상태<br>
<a href="logout">로그아웃</a>
</c:otherwise>
</c:choose>
</body>
</html>
<%@ 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>
${nick }님 환영합니다<br>
<a href="logout">로그아웃</a>
<a href="login">로그인</a>
</body>
</html>
<%@ 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>
<script type="text/javascript">
alert("로그아웃 성공!!");
location.href="login";
</script>
</body>
</html>
실행 결과
SPRING database (1)
단위 테스트 : 각각의 메소드 별로 테스트
통합 테스트 : 단위테스트를 통한 메소드들을 결합하여 테스트
단위 test
test를 하기위한 기능 가져오기
https://mvnrepository.com/ - spring-test 검색 - 첫번째 클릭 - 아무거나 버전(6.1.3) - maven내용 복사
- pom.xml(118번쨰줄 밑) 붙여넣기 - 해당 버전 대신 ${org.springframework-version}작성
* ${org.springframework-version} : 알아서 버전 설정
JUnit을 실행하기 위한 라이브러리 추가
프로젝트 우클릭 - Properties - Java Buid Path - Libraries - Add Library - JUnit선택 - next - JUnit-4선택 - finish - apply
서버 구동하지않고, test를 구동하기 때문에 test전용 xml파일 작성
test전용 xml파일 - Namespaces - context 체크
Source - <context:component-scan base-package="해당 test클래스 패키지" />
test클래스에서 작성해야하는 것들
@RunWith(SpringRunner.class) : @Autowired에 해당하는 것들을 확인하도록 설정
@contextConfiguration(locations={"classpath:해당하는 test의 xml파일"}) : 해당하는 파일을 진행
@Autowired 클래스명 변수명 : test를 통해 확인하고 싶은 클래스
@Test : 해당하는 메소드 생성하고, 해당 메소드를 통해 확인
assertNotNull(확인하고싶은 클래스의 변수명) : 성공인지 실패인지 알려줌(성공 = 초록, 실패 = 빨강)
해당메소드 클릭 후 ctrl + F11

DB 연동
* connection pool : 미리 만든 값을 빌려와서 사용(효율적)
* mybatis : 명령어를 통해 실행하도록 해주는 역할
hikaricp 추가
https://mvnrepository.com/ - hikaricp 검색 - 첫번째 클릭 - 3.3.1버전 클릭 - maven내용 복사
- pom.xml - 붙여넣기
jdbc 추가
https://mvnrepository.com/ - spring jdbc 검색 - 첫번째 클릭 - 아무버전 클릭 - maven내용 복사
- pom.xml -붙여넣기 - 해당 버전 대신 ${org.springframework-version}작성
mybatis 추가
https://mvnrepository.com/ - mybatis 검색 - 첫번째 클릭 - 3.4.6버전 클릭 - maven내용 복사
- pom.xml -붙여넣기
mybatis(2) 추가
https://mvnrepository.com/ - mybatis 검색 - 두번째 클릭 - 1.3.2버전 클릭 - maven내용 복사
- pom.xml -붙여넣기
ojdbc 추가
cmd - sqlplus - db버전 확인
11버전일 경우
https://mvnrepository.com/ - ojdbc6 검색 - 첫번째 클릭 - 11.2.0.1버전 클릭 - maven내용 복사
- pom.xml -붙여넣기
19버전 이상일 경우
https://mvnrepository.com/ - ojdbc8 검색 - 첫번째 클릭 - cmd로 확인한 버전 클릭 - maven내용 복사
- pom.xml -붙여넣기

db 설정(연결)
위에 설정한 값들 추가(객체 생성)
root-context.xml - bean 및 property 생성
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="username" value="c##LTY"></property>
<property name="password" value="1213"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
</bean>
<bean id="ds" class="com.zaxxer.hikari.HikariDataSource">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"></property>
<property name="mapperLocations" value="classpath:/mappers/**/*Mapper.xml"></property>
</bean>
mybatis 설정
* mybatis는 memberMapper.xml에서 실행한다
mybatis 검색 - 첫번째 - Getting Started - (Exploring Mapped SQL Statements)에 해당하는 문장 복사 -
resources/mappers/member/memberMapper.xml - 붙여넣기
- 필요없는것 지우기 - namespace="dao경로" 작성
root-context.xml - Namsapace - (mybatis -spring) 체크
Source - <mybatis-spring:scan base-package="dao경로" />
* dao에 지정한 메소드명과, mapper.xml에 지정한 <insert>태그 안에 id와 일치하면 실행
넘어온 값은 #{}으로 받는다
통합 test
* @Before : @test전에 실행 된다(초기화 목적)
* 통합 테스트를 하기 위해서 Mock이 필요.
* 따라서 import가 알아서 안되기 때문에 입력해야함
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
MockMvc mock = MockMvcBuilders.standaloneSetup("객체").build : 해당 객체를 동작하는 mock 생성
mock.perform(post("/경로").param("id", "1234").param("name", "아무나"))
: 해당 경로로 post방식으로 요청을 보내고, id와 name이라는 파라미터를 설청하여 요청을 보낸다
.andDo(print()) : 요청 및 응답을 출력
.andExpect(forwardedUrl("index")) : 위에 경로의 요청을 처리한 후, index페이지로 forward한다
.andExpect(status().isOk()) : status가 200이라면
* Status = 200 : 성공
아무 xml(root-context.xml) - <bean id="txMgr" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ds"></property>
</bean>
: 해당 내용을 실행하고, rollback한다
@Transactional(transactionManager = "txMgr") : rollback기능을 하고싶은 클래스에 추가하는 방법


SPRING db (2)
resultMap : dto값과 db컬럼명이 다를 수 있기 때문에
primary key = <id/>
나머지 = <result/> (proerty = "dto 명", column = "db 컬럼명")
<select> 태그 안에 resultMap="resultMap의 id명" : resultMap 적용
* model().attributeExists("키명") : 모델의 해당 키까지 접근 가능한지 확인
* redirect가 일어날 경우 status가 302이기 때문에, .andExpect(status().is3xxRedirection()); 사용
Quiz 01
풀이 과정
위에서 알려준 기본 세팅 작업 후(db 연동 및 encoding)
* ( RedirectAttributes rs )라는 파라미터를 받아오면, redirect를 해도 rs.addAttribute()를 통해 전달 가능
model처럼 따로 보내주는것을 명시 안해도, redirect면 넘어간다.

* 세션명들은 공통파일에서 따로 관리해도 효율적이다 (해당 컨트롤러에서 공통파일을 상속받아 사용 가능)
ex) common파일을 생성 후, 해당하는 common파일에 각 세션들의 키명을 변수로 지정해놓고, 꺼내와서 사용

*mapper.xml 파일 안에서도 if문 등을 사용 할 수 있다
<if test="조건">sql문</if>을 사용하여, 예를들어 같은 select문인데 조금 다른 경우 사용
@Param("변수명") String id : 해당하는 부분은 dao부분에서 mapper.xml로 보내준다.



header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
ul li{ display: inline; padding: 0 10px;}
</style>
</head>
<body>
<div align="center">
<h1 style="color: burlywood; font-size: 60px; font-family: Gabriloa;">
CARE LAB
</h1>
</div>
<div align="right">
<hr>
<c:set var="log" value='<%=session.getAttribute("id") %>' />
<c:choose>
<c:when test="${log eq null }">
<ul>
<li><a href="/root/index">HOME</a></li>
<li><a href="/root/member/login">회원 정보</a></li>
<li><a href="/root/member/login">로그인</a></li>
</ul>
</c:when>
<c:otherwise>
<ul>
<li><a href="/root/index">HOME</a></li>
<li><a href="/root/member/info">회원 정보</a></li>
<li><a href="/root/member/logout">로그아웃</a></li>
</ul>
</c:otherwise>
</c:choose>
<hr>
</div>
</body>
</html>
main.jsp
<%@ 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>
<div align="center">
<table>
<tr>
<td align="center">
<h3>내 사전에 불가능은 없다<br>
불가능은 소극적인 자의 환영이며<br>
비겁한 자의 도피처 이다.<br>
</h3>
</td>
</tr>
<tr>
<td align="right">
<h3>- 나폴레옹</h3>
</td>
</tr>
</table>
</div>
</body>
</html>
footer.jsp
<%@ 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>
<div align="center" style="padding-top: 100px">
<hr>
<i style="color: pink; font-size: 30px; font-family: Gabriola;">
Copyright © CARE Lab. All rights reserved.
</i>
</div>
</body>
</html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="default/header.jsp"></c:import>
<c:import url="default/main.jsp"></c:import>
<c:import url="default/footer.jsp"></c:import>
</body>
</html>
HomeController.java
package com.care.root;
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.GetMapping;
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 {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
@GetMapping("index")
public String index() {
return "index";
}
}
MemberController.java
package com.care.root.member.controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
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.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.care.root.member.dto.MemberDTO;
import com.care.root.member.service.MemberService;
@Controller
@RequestMapping("member")
public class MemberController {
@Autowired MemberService ms;
@GetMapping("login")
public String login() {
return "member/login";
}
@PostMapping("successLogin")
public String check(MemberDTO dto, HttpServletRequest req, Model model) {
int result = ms.check(dto);
if (result == 1) {
HttpSession session = req.getSession();
session.setAttribute("id", dto.getId());
model.addAttribute(session);
return "member/successLogin";
}else {
return "redirect:login";
}
}
@GetMapping("logout")
public String logout(HttpServletRequest req, Model model) {
HttpSession session = req.getSession();
session.invalidate();
return "index";
}
@GetMapping("info")
public String info(Model model) {
ArrayList<MemberDTO> info = ms.info();
model.addAttribute("info", info);
return "member/info";
}
@GetMapping("memberInfo")
public String memberInfo(@RequestParam("id") String id, Model model) {
ArrayList<MemberDTO> memberInfo = ms.memberInfo(id);
model.addAttribute("memberInfo", memberInfo);
return "member/memberInfo";
}
@GetMapping("register")
public String register() {
return "member/register";
}
@PostMapping("registerSuccess")
public String registerSuccess(MemberDTO dto) {
int result = ms.registerSuccess(dto);
if (result == 1) {
return "redirect:login";
}
return "redirect:register";
}
}
MemberService.java
package com.care.root.member.service;
import java.util.ArrayList;
import com.care.root.member.dto.MemberDTO;
public interface MemberService {
public int check(MemberDTO dto);
public ArrayList<MemberDTO> info();
public ArrayList<MemberDTO> memberInfo(String id);
public int registerSuccess(MemberDTO dto);
}
MemberServiceImpl.java
package com.care.root.member.service;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.care.root.member.dto.MemberDTO;
import com.care.root.mybatis.member.MemberMapper;
@Service
public class MemberServiceImpl implements MemberService{
@Autowired MemberMapper mm;
public int check(MemberDTO dto) {
ArrayList<MemberDTO> list = mm.check();
System.out.println(list.get(0).getId());
System.out.println(list.get(0).getPw());
System.out.println(list.get(1).getId());
System.out.println(list.get(1).getPw());
System.out.println("입력 id : " + dto.getId());
System.out.println("입력 pw : " + dto.getPw());
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(dto.getId()) &&
list.get(i).getPw().equals(dto.getPw())) {
return 1;
}
}
return 0;
}
public ArrayList<MemberDTO> info() {
ArrayList<MemberDTO> info = mm.check();
return info;
}
public ArrayList<MemberDTO> memberInfo(String id) {
ArrayList<MemberDTO> memberInfo = mm.memberInfo(id);
return memberInfo;
}
public int registerSuccess(MemberDTO dto) {
int result = mm.registerSuccess(dto);
return result;
}
}
MemberDTO
package com.care.root.member.dto;
public class MemberDTO {
private String id;
private String pw;
private String addr;
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;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
MemberMapper.java
package com.care.root.mybatis.member;
import java.util.ArrayList;
import com.care.root.member.dto.MemberDTO;
public interface MemberMapper {
public ArrayList<MemberDTO> check();
public ArrayList<MemberDTO> memberInfo(String id);
public int registerSuccess(MemberDTO dto);
}
MemberMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.care.root.mybatis.member.MemberMapper">
<resultMap type="com.care.root.member.dto.MemberDTO" id="member">
<id property="id" column="id"/>
<result property="pw" column="pw" />
<result property="addr" column="addr" />
</resultMap>
<select id="check" resultMap="member">
select * from membership
</select>
<select id="memberInfo" resultMap="member">
select * from membership where id=#{id}
</select>
<insert id="registerSuccess">
insert into membership (id, pw, addr) values(#{id}, #{pw}, #{addr})
</insert>
</mapper>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="../default/header.jsp" />
<div align="center">
<h2>회원등록</h2>
<form action="registerSuccess" method="post">
<input type="text" name="id" placeholder="아이디"><br>
<input type="text" name="pw" placeholder="비밀번호"><br>
<input type="text" name="addr" placeholder="주소"><br>
<input type="submit" value="회원가입">
</form>
</div>
<c:import url="../default/footer.jsp" />
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="../default/header.jsp" />
<div align="center"><h1>로그인 페이지 입니다</h1></div>
<div align="right">
<form action = "/root/member/successLogin" method="post">
<table>
<tr>
<td>
<input type="text" name="id" placeholder="아이디">
</td>
<td rowspan="2">
<input type="submit" value="로그인"style="width:60px;height:55px;">
</td>
</tr>
<tr>
<td><input type="text" name="pw" placeholder="비밀번호">
</td>
</tr>
<tr>
<td colspan="2" align="left">
<a href="/root/member/register">회원가입</a>
</td>
</tr>
</table>
</form>
</div>
<c:import url="../default/footer.jsp" />
</body>
</html>
successLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="../default/header.jsp" />
<div align="center"><h1>로그인 성공</h1></div>
<c:import url="../default/footer.jsp" />
</body>
</html>
info.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="../default/header.jsp" />
<div align="center">
<h2>회 원 정 보</h2>
<table border="1">
<tr>
<td align="center" style="width: 150px">아이디</td><td align="center" style="width: 150px">비밀번호</td><td align="center" style="width: 150px">주소</td>
</tr>
<c:forEach var="info" items="${info}">
<tr>
<td><a href="/root/member/memberInfo?id=${info.getId()}">${info.getId()}</a></td><td>${info.getPw()}</td><td>${info.getAddr()}</td>
</tr>
</c:forEach>
</table>
</div>
<c:import url="../default/footer.jsp" />
</body>
</html>
memberInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:import url="../default/header.jsp" />
<div align="center">
<h2>${memberInfo[0].getId() } 정 보</h2>
<table>
<tr>
<td align="center" style="width: 150px">아이디</td><td align="center" style="width: 150px">${memberInfo[0].getId() }</td>
</tr>
<tr>
<td align="center" style="width: 150px">비밀번호</td><td align="center" style="width: 150px">${memberInfo[0].getPw() }</td>
</tr>
<tr>
<td align="center" style="width: 150px">주소</td><td align="center" style="width: 150px">${memberInfo[0].getAddr() }</td>
</tr>
</table>
</div>
<c:import url="../default/footer.jsp" />
</body>
</html>
실행 결과
'sts_spring' 카테고리의 다른 글
SPRING 6일차 (email 전송 & 인증, scheduler, ajax, json방식, RestController, SPA) (0) | 2024.05.16 |
---|---|
SPRING 5일차 (자동 로그인, 보안 처리 XSS, 파일 업로드 & 다운로드) (0) | 2024.05.14 |
SPRING 4일차 (암호화, api, Interceptor) (0) | 2024.05.13 |
SPRING 2일차 (annotation, redirect) (0) | 2024.05.08 |
SPRING 1일차 (설치, 설정 및 실행) (0) | 2024.05.02 |