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>

 

실행 결과

+ Recent posts