TIL_Java Spring the Modern Way_12

-·2021년 4월 4일
0

Java Spring the Modern Way

목록 보기
12/13

spring mvc project

DispatcherServlet 설정

<servlet>
    <!-- 그냥 이름 정하기 -->
	<servlet-name>dispatcher</servlet-name>
	<!-- 사용할 클래스 --> 
	<servlet-class>
        org.springframework.web.servlet.DispatcherServlet 
	</servlet-class>
    <!-- 불러올 설정파일 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/todo-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- DispatcherServlet 으로 보낼 url -->
<!-- http://localhost:8080/spring-mvc/으로 시작하는 모든 url이 DispatcherServlet으로 감 -->
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/spring-mvc/*</url-pattern>
</servlet-mapping>

http://localhost:8080/spring-mvc/login 요청시의 흐름

/login이니까 LoginController

// MVC의 Controller (Handler)명시
@Controller
public class LoginController {

	// 의존성 주입
	@Autowired
	LoginService service;
	
//	// 어떤 url에 매핑할것인가. 
//	// 여기서는 http://localhost:8080/spring-mvc/login이 되겠다.
//	@RequestMapping(value = "/login")
//	// view page로 출력되는게 아닌 HTTP Response Body 에 직접 쓰여지게 됩니다.
//	// 쉽게 말해서 지금은 return이 String이니까 어떤 페이지로 보내는게 아니고 String값 자체가 return 됨
//	@ResponseBody 
//	public String sayHello() {
//		return "hello world dummy";
//	}

	// method옵션으로 get, post 정할수있음
	@RequestMapping(value = "/login", method = RequestMethod.GET)
	// view page를 찾아서 보냄. 여기서는 login.jsp
	public String showLoginRequest() {
		return "login";
	}
	// @RequestParam: request.getParameter("name") 처럼 name 이름을 가진 parameter를 받아줌
	@RequestMapping(value = "/login", method = RequestMethod.POST)
	public String handleLoginRequest(@RequestParam String name, @RequestParam String password, ModelMap model) {
		if(!service.validateUser(name, password)) {
			model.put("errorMessage", "Invalid Error!!");	
			return "login";
		}
		// ModelMap: model객체에 넣고 전달하면 view page에서 사용가능
		model.put("name", name);
		model.put("password", password);
		return "welcome";
	}
}

Service

@Service
public class LoginService {
	public boolean validateUser(String name, String password) {
		return name.equalsIgnoreCase("in28Minutes") && password.equals("dummy");
	}
}
  • ViewResolver에 보냄

근데 login이라는 걸로는 login.jsp를 찾을수없음

/WEB-INF/views/login.jsp 이렇게 써줘야 찾음

그래서 ViewResolver에 설정을 해주면 댐. 여기서는 todo-servlet.xml 이 되겠음.

	<!-- ViewResolver 설정 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix">
			<value>/WEB-INF/views/</value>
		</property>
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>

이러면 내가 login만 써주면 알아서 앞뒤에 연결시켜서 /WEB-INF/views/login.jsp를 찾음.

그래서 최종적으로 login.jsp가 브라우저에게 가서 브라우저에서 로그인페이지가 잘나옴

profile
거북이는 오늘도 걷는다

0개의 댓글