The Debugging Chronicles : "코드의 미학"
[Spring] 실습 - 스프링 제공 설정으로 바꿔보기 본문
dispatcherServlet을 직접 만들었다
만약 스프링에서 제공하는 파일을 사용하면 어떻게 될까?
일단 어노테이션은 web.xml에 있는 설정을 대신해서 사용한 것이다.
ds내용에는 객체
그 아래에는 클래스를 쓰면 된다.
org.springframework.web.servlet.DispatcherServlet
맵핑도 같이 한다.
web.xml은 서블릿 컨테이너(톰캣)에게 줄 파일을 만드는 것이다.
필터와 리스너도 여기서 만들어야 한다.
여기서 서버를 돌려면보면 다음과 같은 에러가 난다.
https://sweetseonah1004.tistory.com/155
DS가 자기 의존성을 주입하려고 한다.
그러면 handlerMapper와 ViewResolver가 있었어야 한다.
먼저 handlerMapper만 추가 해보려고 한다.
스프링에서 제공해주는 핸들러 맵퍼로 추가한다.
여기서 id = "" 를 안써도 되는 이유는 init함수에서
handlerMapping에서 생성자 함수에 new할 때 해주었기 때문이다
login.do은 login controller 객체를
main.do은 main controller객체를 넣어 주면 된다
그러면 이제 handlerMapper가 필요 없어진다.
hanlerMapper.java 삭제....
Controller.java도 직접 만들어서 정의를 했다
스프링에서 제공하는 Controller로 한번 사용해보자
쓰던 controller를 지우면
자동으로 위에 스프링에서 사용하는 컨트롤러가 추가된다.
스프링에서 제공하는 handleRequest를 사용하면
MAV(ModleAndView)가 생성해서 추가해서 사용해야한다.
execute 안에 있던 내용을 handleRequest로 옮겨 오면 된다.
세션을 하면 무겁다
세션은 만들때 부터 request의 도움을 받아서 만들어 지는데
request은 servlet이다.
(servlet을 상속 받은 애들이 있다.
필터, 리스너이다.
근데 일부 서블릿의 일부 기능을 가져다 쓰는 애들이 있는데
1) request, session, response, .....
POJO하기에는 일부 들어가 있어서 살짝 무거움
2) String, integer, DTO, DAO,....이다.)
근데 반 서블릿, 반 POJO이다.
POJO로 쓰고 싶은 것이다.
얘가 POJO이다.
그리고 Session은 무거우니 대체 해보자
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0">
<servlet>
<servlet-name>ds</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ds</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
ds-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">login</prop>
<prop key="/main.do">main</prop>
</props>
</property>
</bean>
<bean class="com.koreait.app.view.member.LoginController" id="login" />
<bean class="com.koreait.app.view.member.MainController" id="main" />
</beans>
LoginController.java
package com.koreait.app.view.member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.koreait.app.biz.member.MemberDAO;
import com.koreait.app.biz.member.MemberDTO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class LoginController implements Controller {
@Autowired
private MemberDAO memberDAO;
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 1. 사용자(클라이언트,브라우저)가 보낸 파라미터에서 값 추출
String mid=request.getParameter("mid");
String password=request.getParameter("password");
// 2. DB 연동
MemberDTO memberDTO=new MemberDTO();
memberDTO.setMid(mid);
memberDTO.setPassword(password);
memberDTO = memberDAO.selectOne(memberDTO);
// 3. 페이지 이동 == 네비게이션
ModelAndView mav=new ModelAndView();
mav.setViewName("login");
if(memberDTO != null) {
mav.addObject("userName", memberDTO.getName());
mav.setViewName("main.do");
}
return mav;
}
}
'Spring' 카테고리의 다른 글
[Spring] viewResolver - 스프링으로 설정하기 (0) | 2024.10.08 |
---|---|
POJO란? (0) | 2024.10.07 |
[Spring] doAction - 응답(페이지 이동) (0) | 2024.10.07 |
[Spring] ViewResolver (0) | 2024.10.07 |
[Spring] DispatcherServlet(이전 FrontController) (0) | 2024.10.07 |