이 기사는 환경 구축과 S2SH를 단계별로 통합하는 것으로 시작하여 온라인 쇼핑몰 프로젝트로 시작합니다. 이 블로그 게시물은 주로 Struts2, Hibernate4.3 및 Spring4.2를 통합하는 방법을 요약합니다.
세 가지 주요 프레임 워크를 통합하려면 먼저 다양한 환경을 구축하여 시작해야합니다. 즉, 먼저 스프링, 최대 절전 모드 및 struts2의 환경을 구축하여 문제가 없도록 통합해야합니다. 이 블로그 게시물이 다음과 같은 순서는 다음과 같습니다. 먼저 스프링 환경을 구축 한 다음 최대 절전 모드 환경 구축 -> 스프링 및 최대 절전 모드 -> struts2 환경 구축 -> 스프링 및 struts2를 통합하십시오.
1. 전체 프로젝트 JAR 패키지 관리
봄에는 많은 항아리 패키지가 있습니다. 카테고리로 분류 한 다음 쉽게 관리하고 한 눈에 명확하게 관리 할 수 있도록 사용자 라이브러리에 추가하는 것이 좋습니다. 여기서는 전체 SSH에 필요한 기본 JAR 패키지를 요약하고 다음 그림을 보겠습니다.
그림에서 볼 수 있듯이 첫 번째로, 스프링 항아리는 Spring-4.2.4-Core, Spring-4.2.4-Aop, Spring-4.2.4-Persistence 및 Spring-4.2.4-Web의 네 가지 범주로 나뉩니다. 스프링의 모든 핵심 패키지를 코어에 넣고 AOP와 관련된 모든 것을 AOP에 넣고 지속성 (최대 절전 모드와 통합)과 관련된 모든 것을 지속성에 넣고 웹과 관련된 모든 것을 웹에 넣습니다. 각 부분에는 어떤 항아리 패키지가 있습니까? 아래 스크린 샷을 참조하십시오.
참고 : 위의 각 범주의 패키지에는 원래 패키지의 모든 항아리가 포함되어 있지 않습니다. 일부 JAR 파일은 사용되지 않습니다. 특정 프로젝트가 필요할 때 추가하십시오. 위의 그림은 프로젝트 환경이 가장 기본적인 JAR 패키지를 구축 할 수 있도록하는 데 필요한 가장 기본적인 JAR 패키지입니다.
2. 스프링 환경을 구축하십시오
JAR 패키지의 위 스크린 샷은 마지막으로 통합 된 모든 JAR 패키지입니다. 처음에 환경을 구축 할 때 한 번에 환경을 추가 할 필요가 없습니다. 조금씩 추가 할 수 있습니다. 이것은 또한 각 부품의 JAR 패키지를 이해하는 데 더 도움이됩니다. 물론, 한 번에 그것들을 추가 할 수도 있습니다.
2.1 구성 파일 Beans.xml 및 해당 JAR 패키지 추가
새 프로젝트를 작성한 다음 자신의 라이브러리를 사용자 라이브러리에 추가하십시오. 다음은 Spring-4.2.4 코어와 Spring4.2.4-AOP의 두 가지 주요 것입니다. 항아리 패키지 추가에 대한 자세한 내용을 보지 못할 것입니다. 추가 후 SRC 디렉토리에 beans.xml 파일을 추가하십시오. 이 파일에 온라인으로 많은 템플릿이 있으며 Spring에서 제공하는 예도 있습니다. 사본을 찍고 다음 그림을 참조하십시오.
2.2 테스트 스프링의 IOC 환경
Spring IOC가 정상인지 테스트하기 위해 일반 Java 클래스 java.util.date 클래스를 작성해 봅시다. 테스트 프로그램에서 정상적으로 주입 할 수 있다면 Spring의 IOC 환경이 성공적으로 구축되었음을 의미합니다. 아래에 테스트 사례를 작성해 봅시다.
/** * @description todo (Spring의 주석 디버깅 사용, Spring3.1 이상 만 지원) * @author ni shengwu * * / / * * Spring3.1 이후에는 추가 스프링 테스트 -4.2.4. Release.jar 패키지가 있습니다. 이 JAR 패키지는 Junit 주석 기반 테스트를 지원하는 데 특별히 사용됩니다. JAR 패키지는 Spring-4.2.4-Core *에 있습니다. @contextConfiguration (locations = "classpath : beans.xml") public class sshtest {@Resource 개인 날짜 날짜; @test // 스프링 IOC 공개 void springioc () {System.out.println (날짜)의 개발 환경을 테스트합니다. }} 마지막으로, 그것은 정상적으로 출력 할 수 있습니다 : Thu 4 월 28 일 282:45:13 CST 2016. 이는 날짜 객체가 스프링에 의해 주입되었음을 나타냅니다. 이는 스프링 IOC 함수가 정상인지 확인합니다. 이러한 이유로 스프링 환경이 구축되었습니다.
3. 최대 절전 모드 환경을 구축하십시오
최대 절전 모드의 환경 구조는 MyClipse에서 역 엔지니어링을 사용하기 때문에 Spring보다 더 복잡합니다. 우리는 최대 절전 모드 개발 환경을 구축하기 위해 다음 단계를 따릅니다.
3.1 해당 JAR 패키지를 추가하십시오
여기서 우리는 주로 사용자 라이브러리에 두 개의 JAR 패키지를 추가합니다.
3.2 새 데이터베이스와 테이블을 만듭니다
삭제 데이터베이스가 존재하는 경우; 데이터베이스 상점 생성 기본 문자 세트 UTF8; 상점 사용; 드롭 테이블이 존재하는 경우 카테고리; 테이블 카테고리 생성 ( /* 카테고리 번호, 자동 성장* / id int null auto_increment, /* 카테고리 이름* / 유형 varchar (20), /* 카테고리가 핫 카테고리인지 여부에 관계없이 홈 페이지에 핫 카테고리가 표시 될 수 있습니다.
3.3 DB 브라우저는 MySQL 데이터베이스에 연결됩니다
DB 브라우저는 myeclipse의보기 창을 나타냅니다. MySQL에 어떤 데이터베이스와 테이블이 있는지 직관적으로 볼 수 있습니다. DB 브라우저를 열 수있는 방법 : Window-> Open Perspective-> DB 브라우저는 DB 브라우저 작동 창을 열어줍니다. DB 브라우저가없는 경우 다음을 따르십시오. Window->보기-> 기타-> DB 브라우저를 입력하고 그것을 열도록 찾으십시오.
열면 MySQL 데이터베이스에 연결을 시작합니다. 마우스 오른쪽 버튼을 클릭하십시오 -> DB 브라우저 창의 빈 공간에서 새로 새로워지면 다음 대화 상자가 나타납니다.
작성한 후 테스트 드라이버를 클릭하여 테스트하십시오. 테스트는 테스트를 통과하고 데이터베이스 연결 드라이버가 구성되었음을 나타냅니다. 이러한 방식으로 DB 브라우저 창에서 데이터베이스 MySQL 5.6을 볼 수 있습니다. 마우스 오른쪽 버튼을 클릭하여 다음과 같이 데이터베이스의 기존 라이브러리와 테이블을 확인하려면 다음과 같이합니다.
3.4 XML 매핑 파일 및 SessionFactory를 만듭니다
SessionFactory는 세션을 만드는 데 사용됩니다. 프로젝트 이름을 마우스 오른쪽 단추로 클릭하십시오-> myeclipse-> 최대 절전 모드 기능 추가. 최대 절전 모드 기능을 추가하지 않으면 프로젝트 패싯을 클릭하십시오.> 최대 절전 모드 설치면 다음 창이 나타납니다.
다음으로 최대 절전 모드 지원, 즉 Hibernate.cfg.xml 매핑 파일과 MyClipse에서 SessionFactory를 추가하십시오. 여기서 우리는 주로 SessionFactory를위한 패키지를 만듭니다. 기본 패키지를 사용할 수 없습니다.
다음으로 드라이버를 추가하십시오. 우리는 전에 드라이버를 구성 했으므로 여기에서 새로 구성된 드라이버를 직접 선택할 수 있습니다.
다음으로, 우리는 전에 우리 자신의 JAR 예약을 추가 했으므로 여기에서 선택할 필요가 없으며 직접 완료하십시오.
이런 식으로, 우리는 최대 절전 모드 구성 파일과 sessionFactory의 생성을 완료합니다. MyClipse에서 만든 세션의 내용을 간략하게 살펴 보겠습니다.
공개 클래스 hibernatesessionsectionfactory {private static final strook <session> threadlocal = new ThreadLocal <session> (); // SessionFactory는 SessionFactory 개인 정적 org.hibernate.sessionFactory SessionFactory에서 사용됩니다. // sessionFactory : 세션을위한 공장 생성 개인 정적 구성 구성 = 새로운 구성 (); 민간 정적 서비스 요법 서비스; static {// 초기화 sessionfactory try {configuration.configure (); ServiceRegistry = New ServiceRegistryBuilder (). ApplySettings (configuration.getProperties ()). BuildServiceRegistry (); sessionFactory = configuration.buildSessionFactory (ServiceRegistry); // hibernate4}에서 sessionFactory를 생성하는 메소드} catch (예외 e) {System.err.println ( "%%%%% 오류 생성 SessionFactory %%%%%; e.printstacktrace (); }} private hibernatessessionfactory () {// 개인 생성자 메소드는 새 객체가 릴리스되는 것을 방지하여 SessionFactory Singleton} public static session getsession ()가 HibernateException {세션 세션 = (세션) ThreadLocal.get (); // 스레드 풀에서 세션을 가져옵니다. // SessionFactory가 비어 있으면 STATIC PART} SESSION = (SessionFactory! = NULL)과 동일하게 다시 작성하십시오. SessionFactory.opensession () : NULL; // sessionFactory는 비어 있지 않으며 세션을 작성합니다. threadLocal.set (session); // 그런 다음이 세션을 스레드 풀에 넣고 다음 번에 가져옵니다} return 세션; } public static void rebuildsessionfactory () {try {configuration.configure (); ServiceRegistry = New ServiceRegistryBuilder (). ApplySettings (configuration.getProperties ()). BuildServiceRegistry (); sessionFactory = configuration.buildSessionFactory (ServiceRegistry); } catch (예외 e) {System.err.println ( "%%%%%는 SessionCactory %%%%; e.printstacktrace (); }} public static void closeSession ()은 HiberNateException {세션 세션 = (세션) ThreadLocal.get (); ThreadLocal.set (null); if (session! = null) {session.close (); }} public static org.hibernate.sessionFactory getSessionFactory () {// 외부 세계 가이 싱글 톤 SessionFactory return SessionFactory를 얻을 수 있도록 공개 인터페이스를 제공합니다. } public static configuration getConfiguration () {return configuration; }} 싱글 톤 패턴과 스레드 풀링 기술이 주로 사용된다는 것은 HibernatesessionSectionFactory에서 볼 수 있습니다. 이해하기 어렵지 않습니다.
3.5 리버스 엔지니어링을 통해 모델 및 ORM 매핑 파일 생성
다음으로 리버스 엔지니어링을 사용하여 인스턴스 객체, 즉 데이터베이스 테이블에 해당하는 모델을 만듭니다. DB Browsera 창에서 방금 만든 테이블 상점을 마우스 오른쪽 단추로 클릭하고 최대 절전 모드 엔지니어링을 선택하여 생성을 시작하십시오.
구성 파일과 주석을 기반으로하는 두 가지 방법이 있습니다. 개발자의 분위기에 달려 있습니다. 선택할 수 있습니다 :
그런 다음 다음 단계에서 기본 1 차 키 자동화 메소드를 선택한 다음 리버스 엔지니어링을 완료하여 모델 및 ORM 매핑을 작성하십시오.
완료되면 카테고리의 모델이 생성되고 해당 매핑도 Hibernate.cfg.xml 파일에서 생성됩니다. 구성 파일을 기반으로 한 이전 매핑 및 주석을 기반으로 한 주석이 다릅니다.
3.6 최대 절전 모드 영구 데이터베이스 테스트
Spring과 통합되지 않았기 때문에 최대 절전 모드 개발 환경의 간단한 구성이므로 주석을 사용할 필요가 없습니다. 직접 새로운 서비스를 통해 데이터베이스에 데이터 입력을 실행합니다.
먼저 카테고리 서비스 인터페이스 및 구현 클래스를 작성하십시오.
공개 인터페이스 카테고리 서비스 서비스 {public void save (범주 범주); // 최대 절전 모드 환경을 테스트하는 데 사용} 공개 클래스 카테고리 reviceimpl은 범주를 구현합니다. {// 수동 트랜잭션 세션 .getTransaction (). 시작 (); // 비즈니스 로직 세션을 실행합니다 .SAVE (카테고리); // 수동으로 session.getTransaction (). commit (); } catch (예외 e) {session.getTransaction (). Rollback (); 새로운 runtimeexception (e)을 던지십시오. } 마침내 {hibernatessessionFactory.closesession (); }}} 다음은 지금 테스트 케이스에서 최대 절전 모드 테스트를 추가하는 것입니다.
@RunWith (SpringJunit4classRunner.class) @ContextConfiguration (locations = "classPath : beans.xml") public class sshtest {@Resource 개인 날짜 날짜; @test // 스프링 IOC 공개 void springioc () {System.out.println (날짜)의 개발 환경을 테스트합니다. } @test // 최대 절전 모드의 개발 환경을 테스트 /테스트하십시오. 통합이 없기 때문에 직접 새로운 공개 void hihernate () {categoryService categyService = new CategoryServiceImpl (); 카테고리 카테고리 = 새로운 카테고리 ( "남자 캐주얼", 참); CategoryService.save (카테고리); }}우리는 데이터베이스를 확인한 후 방금 삽입 된 항목이 너무 많다는 것을 발견했습니다. 즉, 최대 절전 모드 환경에 아무런 문제가 없었습니다. 이 시점에서 우리는 최대 절전 모드 개발 환경을 구축했습니다.
4. 스프링과 최대 절전 모드를 통합하십시오
Spring and Hibernate의 개발 환경을 구축 한 후, 우리는 두 가지를 통합하기 시작했습니다. 스프링과 최대 절전 모드를 통합 한 후 AOP를 사용하여 스프링이 최대 절전 모드 트랜잭션을 관리 할 수 있습니다. 스프링과 최대 절전 모드 통합은 주로 두 가지 측면에서 시작됩니다. 하나는 필요한 JAR 패키지를 가져 오는 것입니다. 다른 하나는 Beans.xml 파일을 구성하는 것입니다. 아래에서 스프링과 최대 절전 모드를 단계별로 통합합니다.
4.1 해당 JAR 패키지를 가져옵니다
Spring and Hibernate, Spring4.2.4-Persistence 및 C3P0-0.9.5.1을 통합 할 때 가져와야하는 두 가지 주요 JAR 패키지가 있습니다. 각 JAR 패키지의 특정 JAR 파일의 경우 위의 스크린 샷을 참조하십시오. 여기에는 설명되지 않습니다. 이제 Beans.xml 파일 구성을 시작합니다.
4.2 데이터 소스 데이터 소스 구성
먼저 DataSource를 구성한 다음 Hibernate.cfg.xml의 해당 부분을 죽일 수 있습니다. 봄에 구성되기 때문에 Spring 은이 데이터 소스를 초기화합니다. 즉, hibernate.cfg.xml의 해당 부분을 삭제할 수 있습니다. 다음과 같이 :
<!-com.mchange.v2.c3p0.combopooleddatasource 클래스는 c3p0-0.9.5.1.jar 패키지의 com.mchange.v2.c3p0 패키지에 있습니다.> <bean id = "dataSource"> <property name = "driverclass"value = "com.mysql.jdbc.driver" /> <property name = "jdbcurl" value = "jdbc : mysql : // localhost : 3306/shop"/> <property name = "user"value = "root"/> <property name = "password"vale = "root"/> </bean>
Hibernate.cfg.xml에서 죽여야하는 부분 :
4.3 SessionFactory 구성
SessionFactory는 세션을 생성하도록 구성되었습니다. 또한 HibernateTemplate도 가능합니다. 그러나 HibernateTemplate은 Spring에 의해 제공되며 스프링에 의존하기 때문에 SessionFactory는 HibernateTemplate 대신 여기에서 사용됩니다. 스프링이 언젠가 사용되지 않으면 오류 가보고됩니다. 그리고 세션은 최대 절전 모드에 의해 제공됩니다. HibernateTemplate은 너무 의존적입니다. 특정 구성을 살펴 보겠습니다.
<!-org.springframework.orm.hibernate4.localsession factorybean class in org.springframework.orm.hibernate4 spring-orm-4.2.4.4.release.jar 패키지-> <bean id = "sessionfactory"> <property name = "dataSource"ref = "dataSource" /> <특성 이름 " value = "classpath : hibernate.cfg.xml" /> <!-Hibernate 구성 파일-> < /bean>
방금 SessionFactory에서 DataSource를 사용하여 DataSource를 Ref 속성으로 참조했습니다. 우리는 더 이상 configlocation을 사용하지 않습니다. Hibernate.cfg.xml 파일을 직접로드하고 Hibernate 구성 파일의 구성을 사용하여 더 간결하고 편리하게 만듭니다.
4.4 거래 관리자 구성
구성 트랜잭션 관리자는 SessionFactory를 관리하는 데 사용되므로 SessionFactory에 의해 생성 된 모든 세션은 선언적으로 관리됩니다. 구성은 다음과 같습니다.
<!-org.springframework.orm.hibernate4.hibernatetransactionmanager class spring-orm-4.2.4.release.jar 패키지 org.springframework.orm.hibernate4 패키지-> <bean id = "transactionManager"> <property name = "sessionCactory"ref = "sessionfactory" /bean>
마찬가지로, 우리는 단지 구성된 SessionFactory를 사용하여 ref 속성으로 참조 할 수 있습니다. 이 시점에서, 당신은 위의 모든 것이 일련의 운영이며, 그것들을 하나씩 인용한다는 것을 알게 될 것입니다.
4.5 조언 구성 (알림)
조언을 구성하는 목적은 어떤 유형의 트랜잭션 모드가 필요한지를 지정하는 것입니다. 구성 참조 :
<TX : 조언 ID = "조언"Transaction-Manager = "TransActionManager"> <TX : attributes> <TX : 메소드 이름 = "저장*"전파 = "필수"/> <TX : attributes> </tx : 속성> </tx : 조언>
필수 란 거래가 있으면 현재 거래가 지원되는 것을 의미합니다. 없으면 새로운 트랜잭션이 생성됩니다. 이 트랜잭션 모드는 데이터베이스를 추가, 삭제 및 수정할 때 저장, 업데이트 및 삭제로 시작하는 모든 메소드에 적용됩니다. 지원은 거래가 있으면 현재 거래가 지원되며 아무도 없으면 괜찮을 것임을 의미합니다.
4.6 AOP 측면 구성
<aop : config> <!-트랜잭션을 입력 할 패키지 클래스를 구성합니다-> <aop : pointcut id = "pointcut"expression = "execution (*cn.it.shop.service.impl.*. Style = "Font-Family : Microsoft Yahei;"> 위의 포인트 컷-> <!-AOP : AOP : Advisor에 표시해야합니다. 그렇지 않으면 오류 가보고됩니다-> </aop : config>
AOP는 탄젠트 지향 프로그래밍입니다. AOP : Pointcut는 탄젠트를 정의합니다. 표현식 속성의 구성은 반환 값 및 매개 변수에 관계없이 CN.IT.SHOP.Service.impl 패키지의 모든 메소드가 트랜잭션을 입력해야 함을 의미합니다. 이 패키지는 DAO 계층에 속하며 데이터베이스를 직접 작동합니다. AOP : 조언은 알림과 섹션을 결합합니다. 위에서 구성된 조언과 포인트 컷을 직접 사용하여 소개 할 수 있습니다. 이 구성 후 CN.IT.Shop.service.impl 패키지의 모든 메소드는 트랜잭션 관리를 입력해야 함을 의미합니다. 구체적으로, 저장, 업데이트 및 삭제로 시작하는 메소드는 필수 메소드를 사용하고 다른 메소드는 지원 메소드를 사용합니다. 이를 통해이 구성의 의미를 쉽게 이해할 수 있습니다.
4.7 테스트 통합 결과
이전에 최대 절전 모드 환경을 구축했을 때, 우리는 그 당시 스프링과 통합되지 않았기 때문에 데이터베이스를 운영하기위한 서비스를 직접 새롭게 테스트했습니다. 이제 Beans.xml을 구성한 후 Spring은 최대 절전 모드 거래를 관리 할 수 있습니다. 따라서 현재 테스트는 스프링 관리에 서비스를 양도하고 봄을 통해 주입하며 SessionFactory에 의존해야합니다. 데이터를 데이터베이스에 삽입 할 수 있다면 트랜잭션이 정상임을 의미합니다.
먼저 Spring의 구성 파일 Beans.xml 에서이 서비스를 일치시켜야합니다.
다음과 같이 코드를 복사하십시오. <bean id = "CategoryService">
<property name = "sessionFactory"ref = "sessionFactory" /> <!-종속성 SessionFactory는 이전에 장착 한 SessionFactory를 사용합니다.
</bean>
둘째, 통합 상황을 테스트하기 위해 카테고리 서비스 인터페이스 및 구현 클래스 범주에 메소드를 추가해야합니다.
공개 인터페이스 카테고리 서비스 서비스 {public void save (범주 범주); // 최대 절전 모드 환경을 테스트하는 데 사용되는 공개 void 업데이트 (범주 범주); // Spring and Hibernate의 통합을 테스트하는 데 사용} 공개 클래스 카테고리 reviceimpl은 범주를 구현합니다. {// 수동 트랜잭션 세션 .getTransaction (). 시작 (); // 비즈니스 로직 세션을 실행합니다 .SAVE (카테고리); // 수동으로 session.getTransaction (). commit (); } catch (예외 e) {session.getTransaction (). Rollback (); 새로운 runtimeexception (e)을 던지십시오. } 마침내 {hibernatessessionFactory.closesession (); }} /*스프링 및 전체* / private sessionfactory sessionFactory; // sessionFactory 정의 // sessionFactory를 사용해야 할 때 Spring은 sessionFactory를 공개 void setsesssesssessionFactory (sessionFactory sessionFactory)에 주입합니다. } protected session getsession () {// 현재 스레드에서 세션을 가져옵니다. 그렇지 않은 경우 새 세션을 작성하십시오 SessionFactory.getCurrentSession (); } @override // Spring 및 Hibernate 이후의 상황은 통합 공개 공개 업데이트 (범주 범주) {getsession (). 업데이트 (범주); }} 이제 스프링 및 최대 절전 모드가 통합 된 후 결과를 테스트하기 위해 테스트 방법을 테스트 클래스에 추가 할 수 있습니다.
@RunWith (SpringJunit4classRunner.class) @ContextConfiguration (locations = "classPath : beans.xml") public class sshtest {@Resource 개인 날짜 날짜; @Resource private categoryService categoryService; @test // 테스트 스프링 IOC 개발 환경 공개 void springioc () {System.out.println (날짜); } @test // test // test hibernate의 개발 환경 테스트 - 통합이 없기 때문에 새로운 public void hihernate () {categoryService categyService = new CategoryServiceImpl (); 카테고리 카테고리 = 새로운 카테고리 ( "남자 캐주얼", 참); CategoryService.save (카테고리); } @test // test public void hibernateAndspring () {categoryService.update (새로운 범주 (1, "캐주얼 여성", true); // 카테고리 서비스가 위에서 봄까지 주입}}}그런 다음 데이터베이스를 확인한 후 ID = 1 인 카테고리가 캐주얼 여성 스타일로 수정되었음을 발견했습니다. 이는 업데이트가 성공했음을 의미합니다. 이 시점에서 Spring과 Hibernate는 성공적으로 통합되었습니다.
5. Struts2 환경을 구축하십시오
5.1 해당 구성 및 JAR 패키지 추가
Struts2에 필요한 JAR 패키지를 Struts2.3.41 라이브러리에서 실행하기 때문에 직접 소개 할 수 있으며 반복하지 않습니다. 또한 web.xml 파일은 다음과 같이 구성해야합니다.
<? 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 http://java.sun.com/xml/ns/javaee/web-app_3_3_0.xsd"3. ""webapp_ "" " <display-name> e_shop </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.strutspreanfuteNcutefuteN </filter> <filter-mapping> <filter-name> struts2 </filter-name> <Url-pattern>*. Action </url-pattern> </filter-mapping> </web-app>
위와 같이, 우리는 strutsprepareandexecutefilter 필터를 구성하고 필터의 URL 패턴을 *.action으로 설정합니다.
5.2 작업을 작성하고 struts.xml 파일로 구성하십시오
우리는 다음과 같이 조치를 만듭니다.
공개 클래스 카테고리 actionAction actionSupport {private categoryService categoryService; // CategoryService는 Spring public void setCategoryService와의 통합 전후의 차이점을 직관적으로 확인하도록 설정되어 있습니다. } public String update () {System.out.println ( "---- 업데이트 ----"); System.out.println (CategoryService); // 다른 반환 "index"를 출력합니다. } public String save () {system.out.println ( "---- 저장 ----"); System.out.println (CategoryService); // 통합 전후에 다른 리턴 "색인"을 열어; }} 그런 다음 src 디렉토리에 배치 된 struts.xml 파일을 구성합니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype struts public "-// apache 소프트웨어 재단 // dtd struts configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd "> <struts> <package"extend "> extend" " Category_update.actiocan : 액세스 업데이트 메소드-> <action name = "category_*"method = "{1}"> <결과 이름 = "index">/index.jsp </resent> </action> </package> </struts> 5.3 Struts2 환경 테스트
테스트 방법은 다음과 같습니다. JSP 액세스 동작을 작성하고 동작을 만들 수 있다면 struts2 환경이 정상임을 의미합니다. 즉, struts2의 일련의 프로세스는 정상적으로 완료 될 수 있습니다. 간단한 index.jsp를 작성해 봅시다
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <title> my jsp 'index. 액세스-> </span> <a href = "$ {pagecontext.request.contextpath} /category_update.action"> 액세스 업데이트 </a> <a href = "category_save.action"> 액세스 저장 </a> </body> </html> 그런 다음 다음 프로젝트를 배포하고 Tomcat 서버를 열고 다음과 같은 입력 : http : // localhost : 8080/e_shop/index.jsp는 브라우저에서 일반적인 JSP 페이지가 나타난 다음 두 개의 버튼을 클릭 한 다음 여전히 index.jsp로 점프합니다.
---업데이트---
널
---구하다---
널
이것은 struts2 라인이 완료되었으며 환경에 아무런 문제가 없음을 보여줍니다. 이 시점에서 Struts2 개발 환경이 구축되었습니다.
우리는 콘솔이 NULL을 출력한다는 것을 알 수 있습니다. 즉, 카테고리 서비스가 비어 있음을 의미합니다. 즉, 스프링과 통합되지 않았고 주입되지 않았기 때문에 카테고리 서비스가 전혀 없었 음을 의미합니다. 콘솔에서 정보 출력을 따라 뒤집히고 (com.opensymphony.xwork2.objectory)에 대한 Bean (struts)을 선택합니다. 브래킷은 struts가 spring과 통합되기 전에 struts2에 의해 생성된다고 말합니다.
6. Spring and Struts2 통합
6.1 해당 JAR 패키지를 추가하십시오
Spring 및 Struts2가 통합되면 JAR 패키지는 주로 Spruts2-Spring-Plugin-2.3.24.1.jar를 포함하여 Spring4.2.4-Web에 있습니다. 가이드 패키지는 다시 설명되지 않습니다.
6.2 스프링 관리에 대한 행동과 그 종속성을 떠나십시오
Spring의 구성 파일 Beans.xml에서 작업 및 종속성을 구성하십시오. 우리는 현재 하나의 조치 만 가지고 있으며 다음과 같이 구성됩니다.
<bean id = "date" /> <bean id = "categoryAction"scope = "프로토 타입"> <property name = "categoryService"ref = "categoryService" /> <!-종속 카테고리 서비스는 위의 및 최대 절전 모드-> < /bean>을 구성 할 때 구성됩니다.
6.3 struts.xml에서 구성을 수정하십시오
struts.xml에서 클래스 속성은 특정 조치의 자격을 갖춘 이름에 해당합니다. 이제 클래스 속성의 값을 스프링, 즉 카테고리 션의 ID 값으로 변경하십시오.
<struts> <package name = "shop"extends = "struts-default"> <!-클래스는 스프링 관리로 구성된 조치의 ID 값에 해당합니다-> <action name = "category_*"method = "{1}"> <result name = "index">/index.jsp </action> </struts> </struts> </struts> </struts> </strut> </strut> </strut> 6.4 리스너를 구성하십시오
서버가 시작될 때 스프링 구성 파일을로드 할 수 있도록 Web.xml에서 리스너 ContextLoaderListener를 구성하십시오. 다음과 같이 :
<? 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 http://java.sun.com/xml/ns/javaee/web-app_3_3_0.xsd"3. ""webapp_ "" " <display-name> e_shop </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.strutspreanfuteNcutefuteN </filter> <filter-mapping> <filter-name> struts2 </filter-name> <Url-pattern>*. Action </url-pattern> </filter-mapping> <!-Web.xml에서 리스너의 시작 우선 순위는 필터보다 높기 때문에 아래에서 일치하는 것은 중요하지 않습니다. <Leater-Class> org.springframework.web.context.contextloaderListener </Learter-Class> </liareer> <coundxt-param> <Param-name> contextConfigLocation </param-value> classPath : beans.xml </param-value> </context-param> </web-app>
6.5 테스트 통합 결과
다음과 같이 데이터베이스를 업데이트하기 위해 조치에 새 문장을 추가합니다.
Public Class CategoryAction은 ActionSupport {Private Category Category; // URL에서 가져온 매개 변수를 수신 할 개인 구성원 변수를 설정합니다. Get and Set 메소드는 아래에 작성해야합니다. 개인 카테고리 서비스 카테고리 서비스; public void setCategoryService (CategoryService CategoryService) {this.categoryService = CategoryService; } public String update () {System.out.println ( "--- update ---"); System.out.println (CategoryService); // Spring과 통합 되었으므로이 CategoryService를 얻을 수 있습니다. 범주를 인쇄 한 후에는 null이 아닙니다. // 데이터베이스를 업데이트하기 위해 새 명령문을 추가합니다. } public String save () {system.out.println (CategoryService); "색인"을 반환합니다. } 공개 범주 getCategory () {return 카테고리; } public void setCategory (범주 범주) {this.category = 범주; }} 그런 다음 다음과 같이 index.jsp 파일을 수정합니다.
<%@ page language = "java"import = "java.util.*"pageEncoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <title> my jsp 'index 시작 페이지 </head> </head> </head> < href = "$ {pagecontext.request.contextpath} /category_update.action?category.id=2&category.type=gga&category.hot=false"> Access Update </a> <a href = "category_save.action"> 액세스 저장 </a> </html> </html> </html> 그런 다음 다음 프로젝트를 배포하고 Tomcat 서버를 열고 다음과 같은 입력 : http : // localhost : 8080/e_shop/index.jsp는 브라우저에서 일반적인 JSP 페이지가 나타나고 "액세스 업데이트"버튼을 클릭 한 다음 여전히 index.jsp로 점프합니다.
--- 업데이트 --- cn.it.shop.service.impl.categoryserviceimpl@7c5ecf80 Hibernate : 업데이트 카테고리 set hot =?, type =? 여기서 id =?
카테고리 서비스 객체의 정보를 출력 할 수 있으며 업데이트 문을 실행할 때 SQL 문을 출력 할 수도 있습니다. 그런 다음 데이터베이스를 쿼리하고 ID = 2 인 데이터 유형이 GGA로 업데이트되었고 HOT가 False로 업데이트되었음을 발견합니다. 우리는 콘솔에서 정보 출력을 위쪽으로 뒤집고 브래킷 스프링과 함께 (com.opensymphony.xwork2.objectory)를 위해 Bean (spring) 선택 : 선택합니다. 위의 상황과 비교할 때 Struts2가 Spring과 통합 된 후에는 행동이 관리를 위해 스프링으로 넘겨 져 있음을 알 수 있습니다.
이 시점에서 Struts2, Hibernate4 및 Spring4의 통합이 완료되었으며 다음 SSH 환경에서 개발할 수 있습니다!
이 기사에서 소개 된 SSH 통합에 필요한 완전한 JAR 패키지 : 무료 다운로드
전체 프로젝트의 소스 코드 다운로드 주소 : //www.vevb.com/article/86099.htm
원본 주소 : http://blog.csdn.net/eson_15/article/details/51277324
(참고 : 결국 전체 프로젝트의 소스 코드 다운로드가 제공됩니다! 모든 사람은 수집하거나 팔로우 할 수 있습니다)
위는이 기사의 전체 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.