AOP(애스매틱 지향 프로그래밍)
- 부가기능(로깅, 트랜잭션)
- OOP는 비지니스 로직
횡단관심모듈 - 여러 클래스에 걸쳐서 적용되는 기능들(삽입하는 코드)
조인포인트 - 어느 라인에 코드가 삽입되느냐
포인트 컷 - 삽입될 특정 클래스의 특정 메소드를 선택하는 방법 정의
어드바이스 또는 인터셉터 - 횡단관심모듈(로깅,보안,트랜잭션 등 삽입하려는 코드)
위빙 또는 크로스커팅 - 포인트 컷에 의해 결저된 조인포인트에 어드바이스를 삽입하는 과정
인트로 덕션 또는 인터타입 선언 - 기존의 클래스와 인터페이스에 필요한 메소드나 필드를 동적으로 추가해서 사용할 수 있게 해주는 방법
애스팩트 또는 어드바이저 - 포인트 컷과 어드바이스를 합쳐놓은것. 즉 어디에서 무엇을 할지를 나타냄
Proxy클래스를 사용할 경우 AOP를 구현 할 수 있다.
DAO - DB조회 (Object-Relation Mapper)
Struts 요청 --> Action servlet --> Action 객체들
Spring MVC 요청 --> Dispatcher Servlet --> controller 객체들
Action 과 Dispatcher는 하는 일이 같다.
다이나믹 웹 프로젝트를 실행하고 WebContent안에 lib에 해당하는 Spring lib를 넣어준다.
applicationContext.xml을 기본적으로 로드하고 DispatcherServlet의 이름에 따라 다르지만 이 프로젝트에서는 SimpleSite-servlet.xml을 로드한다. 직접 xml에서 넣어준다.
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>simplesite</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simplesite</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> |
WEB-INF안에서 Spring Bean Configuration File을 선택해서 applicationContext.xml 과 simplesite-servlet.xml 만들어 준다. 여기까지가 Dispatcher Servlet까지 한 상태이다.
LoginController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package kr.co.bit.simplesite.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class LoginController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { //request.setAttribute("message",Hello! Spring"); //return new ModelAndView("login/login"); // 이 두줄은 아래의 한줄과 동일하다. return new ModelAndView("login/login","message","Hello! Spring"); } } |
그리고 java packeage를 만들어서 Controller를 구현하는 LoginController라는 class를 생성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?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 id="LoginController" class="kr.co.bit.simplesite.controller.LoginController"></bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login/login.do">loginController</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp"/> </bean> </beans> |
simplesite-servlet.xml에 controller추가한다.
login.jsp
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <p><%=request.getAttribute("message") %></p> </body> </html> |
WEB-INF안에 view라는 폴더를 만들고 login.jsp를 작성한다.
xml에서 <bean>안에 선언해야지 작동이 된다.
struts에서는 execute() , spring에서는 handleRequest() 이고 하는 일은 같다.
MultiActionController 클래스를 상속하면 여러개의 요청을 처리할 수 있다.
/user/form.do
/user/add.do
/user/modify.do
/user/delete.do
/user/search.do
를 UserController클래스에서 MultiActionController클래스를 상속받아 하나로 컨트롤 할 것이다.
HandleRequest는 MultiActionController안에 담겨있다.
Simplesite-servlet.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?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 id="loginController" class="kr.co.bit.simplesite.controller.LoginController"></bean> <bean id="userController" class="kr.co.bit.simplesite.controller.UserController"> <property name="methodNameResolver"> <ref bean="userControllerMethodNameResolver"/> </property> </bean> <bean id="userControllerMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> <property name="mappings"> <props> <prop key="/user/form.do">form</prop> <prop key="/user/add.do">add</prop> <prop key="/user/modify.do">modify</prop> <prop key="/user/delete.do">delete</prop> <prop key="/user/search.do">search</prop> </props> </property> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login/login.do">loginController</prop> <prop key="/user/form.do">userController</prop> <prop key="/user/add.do">userController</prop> <prop key="/user/modify.do">userController</prop> <prop key="/user/delete.do">userController</prop> <prop key="/user/search.do">userController</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp"/> <!-- /WEB-INF/view/login/login.jsp 출력--> <!-- prefix /viewname/ suffix 가 된다.--> </bean> </beans> |
추가를 해준다.
UserController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | package kr.co.bit.simplesite.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class UserController extends MultiActionController { public ModelAndView form(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return new ModelAndView("user/form"); } public ModelAndView add(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return new ModelAndView("user/add"); } public ModelAndView modify(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return new ModelAndView("user/modify"); } public ModelAndView delete(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return new ModelAndView("user/delete"); } public ModelAndView search(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return new ModelAndView("user/search"); } } |
클래스를 만들어주고 view폴더안에 user폴더를 만들고 각각 form,add,modify,delete,search.jsp를 만들어준다.
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>User Form</title> </head> <body> <p>User Form</p> </body> </html> |
각각 만들어 총 5개 만들고 실행
'(Before)BitSchool' 카테고리의 다른 글
2014/06/30 AjaxLogin (0) | 2014.06.30 |
---|---|
2014/06/27 SimpleSite - login,logout (0) | 2014.06.27 |
2014/06/23 Spring Framework (0) | 2014.06.23 |
2014/06/19 웹 어플리케이션 서버 분석과 실습 (0) | 2014.06.19 |
2014/06/18 AJAX를 이용하여 Suggest 기능 만들기 (0) | 2014.06.18 |