SPRING annotation
* annotation은 어떤걸 붙여도 상관없지만 왼쪽 아래와 같이 이름에 맞게 붙이는게 좋다
@Autowired : 자료형을 기준으로 bean주입, 같은 타입일 경우 이름을 주입(객체 생성)
* @Autowired를 붙이지 않으면 null값이 나온다
* annotation뒤에 ("객체명")을 붙이면 객체명을 바꿀 수 있다
* @Autowired를 쓸 경우, 타입이 겹치면 객체 생성할 때, 객체명을 생성할떄 이름과 동일하게 하면 된다
* @Inject 와 @Qualifier("객체명")을 통해서도 구분 가능하다
req.getMethod() : 어떤 방식으로 보내줬는지(GET, POST)
@RequestMapping안에 method = RequestMethod.GET : get방식만 받겠다.(post방식은 안받음)
@PostMapping : post방식만 받겠다(get방식은 안받음)
@RequestParam("키명") 타입 변수명 : request로 넘어오는 값을 처리(키명과 변수명이 동일하면 키명 생략 가능)
* HttpServletRequest : 사용자가 요청한 값 받아오기
* @Controller 바로 밑에 @RequestMapping("경로") : 해당 경로가 겹치면, 해당 경로 생략 가능
* model.addAttribute("키", 밸류) 형태
* controller에서 넘겨 받는 곳에 dto를 입력하면 setter로 인해 자동으로 dto안으로 들어옴



package com.care.ex02;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("ex02")
public class MemberController {
@Autowired
private MemberService ms;
public MemberController() {
System.out.println("---- controller ----");
}
@RequestMapping("index")
public String index(Model model) {
System.out.println("service : " + ms);
ms.getData(model);
return "ex02/index";
}
@RequestMapping(value = "result", method = RequestMethod.GET)
public String result(HttpServletRequest req, Model model) {
System.out.println(req.getMethod());
System.out.println(req.getParameter("name"));
System.out.println(req.getParameter("age"));
model.addAttribute("method", req.getMethod());
model.addAttribute("name", req.getParameter("name"));
model.addAttribute("age", req.getParameter("age"));
return "ex02/result";
}
@PostMapping("result")
public String result02(
@RequestParam("name") String n,
@RequestParam int age,
Model model,
HttpServletRequest req
) {
model.addAttribute("method", req.getMethod());
model.addAttribute("name", n);
model.addAttribute("age", age);
return "ex02/result";
}
@PostMapping("object")
public String object(MemberDTO dto, Model model) {
model.addAttribute("dto", dto);
return "ex02/object";
}
}
package com.care.ex02;
import javax.inject.Inject;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
@Service("ms")
public class MemberService {
//@Autowired
@Inject
@Qualifier("dao2")
MemberDAO dao;
public MemberService() {
System.out.println("---- service ----");
}
public void getData(Model model) {
System.out.println("get data 연동 : " + dao);
String msg = dao.getData();
model.addAttribute("msg", msg);
}
}
package com.care.ex02;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDAO {
public MemberDAO() {
System.out.println("---- dao ----");
}
public String getData() {
return "아무값이나!~";
}
}
package com.care.ex02;
public class MemberDTO {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
실행 결과
Quiz 01

풀이 과정

package com.care.member.controller;
import javax.servlet.http.HttpServletRequest;
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.RequestParam;
import com.care.member.dto.MemberDTO;
import com.care.member.service.MemberService;
@Controller
public class MemberController {
@Autowired(required = false)
MemberService ms;
@GetMapping("index")
public String index() {
return "index";
}
@GetMapping("register_form")
public String registerForm() {
return "register_form";
}
@GetMapping("list")
public String list(Model model ) {
System.out.println("ms : "+ms);
ms.getList( model );
return "list";
}
@PostMapping("register")
public String register(HttpServletRequest req,
@RequestParam String id,
@RequestParam String pwd,
@RequestParam String name,
MemberDTO dto) {
System.out.println( req.getParameter("id"));
System.out.println( req.getParameter("pwd"));
System.out.println( req.getParameter("name"));
System.out.println("--------");
System.out.println(id+","+pwd+","+name);
System.out.println("--------");
System.out.println(dto.getId());
System.out.println(dto.getPwd() );
System.out.println(dto.getName());
ms.register( dto );
return "register";
}
}
package com.care.member.service;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import com.care.member.dao.MemberDAO;
import com.care.member.dto.MemberDTO;
@Service
public class MemberService {
@Autowired
MemberDAO dao;
public void getList( Model model ) {
ArrayList<MemberDTO> list = dao.getList();
model.addAttribute("list", list);
}
public void register( MemberDTO dto ) {
dao.register(dto);
}
}
package com.care.member.dao;
import java.util.ArrayList;
import org.springframework.stereotype.Repository;
import com.care.member.dto.MemberDTO;
@Repository
public class MemberDAO {
ArrayList<MemberDTO> list;
public MemberDAO() {
list = new ArrayList<MemberDTO>();
}
public ArrayList<MemberDTO> getList( ){
//select * from table;
return list;
}
public void register( MemberDTO dto ) {
//insert
list.add(dto);
}
}
package com.care.member.dto;
public class MemberDTO {
String id, pwd, name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
실행 결과
SPRING redirect & forward
redirect:경로 : 사용자에게 경로를 주고, 사용자가 다시 경로를 요청(req값이 안나온다)
forward:경로 : 사용자에게 들리지 않고, 서버딴에서 움직인다, 화면은 이동하지만 경로는 이동되지 않는다(req값 유지)
* req.setAttribute()는 req.getAttribute로 받아온다

package com.care.ex03;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("ex03")
public class Ex03Controller {
@RequestMapping("login")
public String login(HttpServletRequest req) {
System.out.println("login method : " + req.getMethod());
System.out.println("login param id : " + req.getParameter("id"));
System.out.println("login atta id : " + req.getAttribute("test"));
return "ex03/login";
}
@PostMapping("result")
public String result(HttpServletRequest req) {
String uId = req.getParameter("id");
req.setAttribute("test", "아무거나");
if (uId.equals("abc")) {
return "forward:success";
//return "redirect:success";
}
return "redirect:login";
//return "forward:login";
}
@PostMapping("success")
public String success(HttpServletRequest req, Model model) {
System.out.println("id : " + req.getParameter("id"));
System.out.println("test : " + req.getAttribute("test"));
model.addAttribute("id", req.getParameter("id"));
model.addAttribute("test", req.getAttribute("test"));
return "ex03/success";
}
}
<%@ 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>
<form action="result" method="post">
<input type="text" name="id"><br>
<input type="submit" value="로그인">
</form>
</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>
test : ${test }<br>
<a href="login">login</a>
</body>
</html>
실행 결과
Quiz 01 +
풀이과정

package com.care.member.controller;
import javax.servlet.http.HttpServletRequest;
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.member.dto.MemberDTO;
import com.care.member.service.MemberService;
@Controller
public class MemberController {
@Autowired(required = false)
MemberService ms;
@GetMapping("index")
public String index() {
return "index";
}
@GetMapping("register_form")
public String registerForm() {
return "register_form";
}
@GetMapping("list")
public String list(Model model ) {
System.out.println("ms : "+ms);
ms.getList( model );
return "list";
}
@PostMapping("register")
public String register(HttpServletRequest req,
@RequestParam String id,
@RequestParam String pwd,
@RequestParam String name,
MemberDTO dto) {
ms.register( dto );
return "register";
}
@RequestMapping("one_list")
public String one_list(HttpServletRequest req, Model model) {
ms.getOneList(req.getParameter("name"), model);
return "one_list";
}
}
package com.care.member.service;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import com.care.member.dao.MemberDAO;
import com.care.member.dto.MemberDTO;
@Service
public class MemberService {
@Autowired
MemberDAO dao;
public void getList( Model model ) {
ArrayList<MemberDTO> list = dao.getList();
model.addAttribute("list", list);
}
public void register( MemberDTO dto ) {
dao.register(dto);
}
public void getOneList(String name, Model model) {
dao.getOneList(name, model);
}
}
package com.care.member.dao;
import java.util.ArrayList;
import org.springframework.stereotype.Repository;
import org.springframework.ui.Model;
import com.care.member.dto.MemberDTO;
@Repository
public class MemberDAO {
ArrayList<MemberDTO> list;
public MemberDAO() {
list = new ArrayList<MemberDTO>();
}
public ArrayList<MemberDTO> getList( ){
//select * from table;
return list;
}
public void register( MemberDTO dto ) {
//insert
list.add(dto);
}
public void getOneList(String name, Model model) {
System.out.println("list.size() : " + list.size());
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getName().equals(name)) {
model.addAttribute("id", list.get(i).getId());
model.addAttribute("pwd", list.get(i).getPwd());
model.addAttribute("name", list.get(i).getName());
}
}
}
}
<%@ 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>
list페이지 : ${list.size() }
<table border="1">
<tr>
<th>id</th>
<th>pwd</th>
<th>name</th>
</tr>
<c:choose>
<c:when test="${list.size() == 0 }">
<tr>
<td colspan="3" align="cetner">
<b>데이터가 없음!!!!</b>
</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach var="dto" items="${ list }">
<tr>
<td>${dto.id }</td>
<td>${dto.pwd }</td>
<td><a href="one_list?name=${dto.name}">${dto.name }</a></td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
<tr>
<td colspan="3">
<a href="index">index이동</a>
</td>
</tr>
</table>
</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>
<h2>${name }님 안녕하세요!</h2><br>
아이디 : ${id }<br>
비밀번호 : ${pwd }<br>
<a href="index">index 이동</a><br>
</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 3일차 (cookie, session 및 database) (0) | 2024.05.09 |
SPRING 1일차 (설치, 설정 및 실행) (0) | 2024.05.02 |