728x90
패키지 구조
- com.example.demo01.controller → Controller
- com.example.demo01.service →Service
- com.example.demo01.domain → DTO
- com.example.demo01.model → DAO
main 메서드의 @SpringBootApplication
@SpringBootApplication
public class Demo01Application {
public static void main(String[] args) {
SpringApplication.run(Demo01Application.class, args);
}
}
➡️ 해당 클래스가 Springboot의 설정 클래스임을 명시하며 해당 클래스를 메인으로 실행됨
해당 클래스가 있는 Package를 기본 Package로 간주함 그러므로 같은 Package 내의 클래스들은 Scan 됨.
( 즉, @ComponentScan 을 이미 포함하고 있음 )
소스코드 내부를 보면 다양한 @들을 내포하여 기본동작을 실행하고 자동설정한다
@ Controller의
@RequestMapping(value = "/요청명")
@RequestMapping 특징
기본적인 결합 방법은 클래스 레벨의 @RequestMapping을 기준으로 삼고,
메서드 레벨의 @RequestMapping으로 세분화하는 방식으로 사용된다.
url 당 하나의 컨트롤러에 매핑되던 다른 핸들러 매핑과 달리 메서드 단위까지 세분화하여 적용할 수 있으며,
url 뿐 아니라 파라미터, 헤더 등 더욱 넓은 범위를 적용할 수 있다.
@Controller
@RequestMapping(value = "/member")
public class MemberController {
@Autowired(required = false)
MemberService service;
@RequestMapping(value = "memberList", method = RequestMethod.GET)
public void mList(Model model) {
model.addAttribute("banana", service.selectList());
}
}
@RequestMapping 가 현재 클래스 단위 , 메서드 단위로 설정되어 있다.
계층적으로 구성되어 클래스는 /member를 읽고,
메서드는 /member/memberList를 읽고,
viewResolver가 최종적으로 webapp/WEB-INF/views/member/memberList.jsp를 전달한다.
Service 구조
@Service
public class MemberService {
// ** 전역변수 정의
@Autowired(required = false)
MemberDAO dao ;
DAO 구조
@Repository
public class MemberDAO {
// ** 전역변수 정의
private static Connection cn = DBConnection.getConection();
private static PreparedStatement pst; // Sql구문처리 단일화
DTO 구조
@AllArgsConstructor
-> 모든 Autowired 에 대해 대신 생성자 주입을 도와주는 애노테이션(생성은 하지 않음.)
AllArgsConstructor 한 클래스의 멤버 ' JoService joservice;'
-> joservice 에 해당하는 JoService 클래스 위에 생성자 생성(@Service)을 하지 않았으면 실행되지 않음을 의미.
public MemberController(JoService joservice) { this.joservice = joservice; } 이와 같다.
@NoArgsConstructor
-> 기본 생성자
@Data
->getter, setter , toString
@Getter
->(모든 필드) getter 생성하도록 지원
@Setter
->(모든 필드-final로 선언되지 않은) setter를 생성하도록 지원
@ToString
->모든 필드를 출력하는 toString() 메소드 생성
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MemberDTO {
private String id;
private String password;
private String name;
private int age;
private int jno;
private String info;
private double point;
private String birthday;
private String rid;
}
인자의 자동화 시스템
public String mLogin(Model model, HttpServletRequest request,
HttpSession session,MemberDTO dto, JoDTO jdto
spring 은 파라미터 값을 인자의 setter를 찾아 자동으로 값을 넣어준다.
만약 MemberDTO dto, JoDTO jdto 의 같은 setter 명이 있다면 각각의 setter 를 통해 파라미터의 값을 넣어준다.
@RequestParam
스프링 MVC에서HTTP 요청 파라미터를 컨트롤러 메서드의 매개변수로 바인딩하는 데 사용되는 애노테이션이야. 주로 GET 이나 POST 요청에서 쿼리 파라미터나 폼 데이터를 처리할 때 사용
주요 속성
1. name (또는 value) : 요청 파라미터의 이름을 지정
ex ) @RequestParam("name")→?name=John
2. required : 파라미터가 필수인지 여부를 지정
기본값은 true고 , 요청에서 해당 파라미터가 없으면 예외 오류(400) 발생한다.
required = false 지정시 파라미터가 없어도 예외가 발생하지 않는다.
3. defaultValue : 요청 파라미터가 없을 경우 사용할 기본값을 지정 ,
required = false 와 함께 자주 사용
ex ) @RequestParam(name = "name", defaultValue = "Guest")
@Controller
public class MyController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(name = "name", required = false, defaultValue = "Guest") String name, Model model) {
model.addAttribute("greeting", "Hello, " + name + "!");
return "greeting"; // View 이름 반환
}
}
@RequestParam 애노테이션은 name이라는 요청 파라미터를 String 타입의 name 변수에 바인딩한다.
클라이언트가 ?name=John과 같이 요청을 보내면 name 파라미터 값인 "John"이 변수에 할당한다.
ex ) http://localhost:8080/greeting?name=John → Hello, John!
ex ) http://localhost:8080/greeting → Hello, Guest!
'Developer > Spring eGov4.0 (Java11, Tomcat9)' 카테고리의 다른 글
Spring , service 의 구현 (0) | 2024.10.27 |
---|---|
Spring , log message (0) | 2024.10.27 |
spring , service를 나누는 이유 (0) | 2024.09.27 |
Spring, 스프링의 MVC (1) | 2024.09.26 |
Spring , java_config 방식을 활용한 스프링 빈 설정 관리, xml과 혼용 관리 (1) | 2024.09.26 |