<a href="${ pageContext.servletContext.contextPath }/home.do"><img src="resources/image/spring.png"></a>
-url-pattern안에 *.do로 적어주면 ~.do로 끝나는 url 실행시켜줌
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
@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 = ⭐"/home.do", method = RequestMethod.GET)
<button class="btn btn-primary btn-lg" type="button" onclick="location.href='${ contextPath }/loginView.me'">SIGN IN</button>
<servlet>
<servlet-name>memberServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> //💡실행될 클래스! (spring.io document 확인)
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param> //💡viewResolver
</servlet>
<servlet-mapping>
<servlet-name>memberServlet</servlet-name>
<url-pattern>*.me</url-pattern>
</servlet-mapping>
----------------------------------------------------------------------------------------------------------------------------
⭐<servlet-name>memberServlet</servlet-name> 동일 해야함!!
import org.springframework.web.bind.annotation.RequestMapping;
public class MemberController {
@RequestMapping("loginView.me")
public String moveToLoginView() {
return "login";
}
}
1) @Controller를 이용한 객체 생성
@Controller
public class HomeController {
2) bean 태그를 이용한 객체 생성
<body class="text-center">
<main class="form-signin w-100 m-auto">
⭐<form action="${ contextPath }/login.me" method="post">
@Controller
public class MemberController {
@RequestMapping("loginView.me")
public String moveToLoginView() {
return "member/login";
}
}

② 선택 하지 않고 바로 finish

③ servlet-context내용 그대로 복사하되,
일부 수정
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/🍒beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 어노테이션 설정 방식 사용 -->
<mvc:annotation-driven />
<!-- 정적인 데이터 파일들의 위치 매핑, 작은 resources -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/🍒member/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 등록된 bean들의 annotation을 활성화 -->
<context:component-scan base-package="com.kh.meatPizza" />
</beans>
💡bean은 객체를 만들어주는 태그
💡beans를 대표로 xml로 지정했기 때문에 beans: beans 이렇게 두 번 안써도 됨
🍒member를 안쓰려고 생성한 것이기 때문에 views/member/ 경로 지정해주기
④ web.xml로 돌아가 servlet-context였던 것을 member-context로 변경해주기
<param-value>/WEB-INF/spring/appServlet/member-context.xml</param-value>
⑤ return login으로 재변경
@RequestMapping("loginView.me")
public String moveToLoginView() {
return "login";
@RequestMapping("loginView.me")
public String login() {
return null;
}
@RequestMapping("login.me")
public String login(HttpServletRequest request) {
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
System.out.println("id1 : " + id);
System.out.println("pwd1 : " + pwd);
return null;
② @RequestParam 어노테이션 방식
스프링에서 조금 더 간단히 파라미터를 받아올 수 있는 @RequestParam 제공
value : view에서 받아 올 파라미터 이름이 들어가는 곳 @RequestParam 속성이 하나 뿐이라면 value 생략 가능
defaultValue : 값이 null이거나 들어오지 않았을 때 기본적으로 들어갈 데이터를 지정하는 속성
데이터가 들어온 경우에는 defaultValue에 설정된 값이 들어가지 않음
required : 기본 값은 true, 지정한 파라미터가 꼭 필요한(필수적인) 변수인지 설정하는 속성
만일 해당 파라미터가 없어도 된다, 혹은 없을 수도 있다라고 한다면 false 값을 주어 해당 자료형의 기본값을 받아옴
@RequestMapping("login.me")
public String login(@RequestParam(value="id", defaultValue="hello") String userId,
@RequestParam(value="pwd", defaultValue="world") String userPwd,
@RequestParam(value="test", required=false) String test){
System.out.println("id2 : " + userId);
System.out.println("pwd2 : " + userPwd);
System.out.println(test);
return null;
}
넘겨받을 인자가 너무 많을 떄 사용 좋음(mode Attribute) 단, getter setter가없으면 사용할 수 없음
③ RequestParam 생략 (jsp의 name 파라미터명이랑 변수값이 같아야지 생략 가능)

@RequestMapping("login.me")
public String login(String id, String pwd){
System.out.println("id2 : " + id);
System.out.println("pwd2 : " + pwd);
return null;
}
④ lombok을 이용한 getter / setter
4-1) member 클래스 생성
package com.kh.meatpizza.member.model.vo;
import java.sql.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class Member {
private String id;
private String pwd;
private String name;
private String nickName;
private String email;
private String gender;
private int age;
private String phone;
private String address;
private Date enrollDate;
private Date updateDate;
private String status;
private String isAdmin;
}
4-2) lombok 설치

4-3) @ModelAttribute 방식 (get / set 방식으로 id/pwd 불러오기, 파라미터명과 setter명이 같으면 자동 매핑)
@RequestMapping("login.me")
public String login(@ModelAttribute Member m){
System.out.println("id3 : " + m.getId());
System.out.println("pwd3 : " + m.getPwd());
return null;
}
⑤ @ModelAttribute 생략
@RequestMapping("login.me")
public String login(Member m){
System.out.println("id5 : " + m.getId());
System.out.println("pwd5 : " + m.getPwd());
return null;
}
}