머리말
SSH는 프레임 워크가 아니라 여러 프레임 워크 (Struts+Spring+Hibernate)의 통합입니다. 현재 웹 애플리케이션에 인기있는 오픈 소스 통합 프레임 워크로 유연하고 스케일링하기 쉬운 다층 웹 애플리케이션을 구축하는 데 사용됩니다.
SSH 프레임 워크를 통합하는 시스템은 프레젠테이션 계층, 비즈니스 로직 계층, 데이터 지속성 계층 및 도메인 모듈 계층 (엔티티 계층)의 책임 측면에서 4 개의 계층으로 나뉩니다.
시스템의 전체 인프라로서 Struts는 MVC의 분리를 담당합니다. Struts 프레임 워크의 모델 부분에서 비즈니스 점프를 제어하고 최대 절전 모드 프레임 워크를 사용하여 지속성 계층을 지원합니다. 한편으로, Spring은 가벼운 IOC 컨테이너로 객체와 객체 간의 종속성을 찾고, 포지셔닝, 생성 및 관리하는 것을 담당하며, 다른 한편으로는 스트럿과 최대 절전 모드를 개선 할 수 있습니다.
MyEclipse를 사용하여 세 가지 주요 SSH 프레임 워크를 통합하고 버전에 해당하는 사용자 등록을 시뮬레이션하는 데모를 구현하십시오.
스트럿 버전 : 2.1;
스프링 버전 : 3.1;
최대 절전 모드 버전 : 3.3;
1. 통합 전 준비
1. 다음과 같이 웹 프로젝트를 만듭니다.
참고 : 작업을 지원하는 패키지 이름은 "작업"이어야하며 작업 클래스는 동작으로 끝나야합니다.
2. 데이터베이스 및 테이블 작성 :
데이터베이스 생성 sshdemo; 테이블 생성 t_user (ID int 기본 키, 사용자 이름 varchar (10), Password Varchar (20))
3. 데이터베이스 연결 풀 C3P0JAR 패키지 가져 오기를 클릭하여 다운로드하십시오.
C3P0-0.9.2-PRE1.jar, MySQL-Connector-Java-5.1.13-Bin.jar
2. Struts 프레임 워크 구성 :
1. 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하려면 다음을 선택하려면 다음과 같이 선택하십시오. myeclipse-> 프로젝트 패싯 [기능] -> 다음과 같이 Apache Struts (2.x)면을 설치하십시오.
2. 버전을 선택하십시오. 여기에서 2.1을 선택하고 다음과 같이 "Finish"를 클릭하십시오.
3. 위의 단계를 완료하면 SRC 디렉토리에 다음 내용이있는 추가 struts.xml 파일이 있음을 알 수 있습니다.
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype struts public "-// apache 소프트웨어 재단 // dtd struts configuration 2.1 // en" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> </struts>
4. Web-Inf 디렉토리의 web.xml 파일에는 다음과 같이 Struts 필터에 대한 구성 코드의 추가 섹션이 있습니다.
5. 위의 그림을 참조하십시오 .
3. 스프링 프레임 워크 구성 :
1. Struts 구성을 참조하고 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하고 선택하십시오. Myeclipse -> 프로젝트 패싯 [기능] -> 스프링 패싯 설치, 버전을 선택한 다음 3.1을 선택하십시오.
2. "Finish"를 클릭하면 SRC 디렉토리에 ApplicationContext.xml 파일, Spring-Form.tld 및 Spring.tld 파일이 web-inf 디렉토리의 파일이 있으며 Spring 구성과 관련된 코드가 web.xml 파일에 추가됩니다. 스프링 프레임 워크의 구성은 기본적으로 완료되었습니다 (네임 스페이스의 도입은 나중에 설명합니다).
4. 최대 절전 모드 프레임 워크 구성 :
1. Struts 구성을 참조하고 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하고 선택하십시오. MyEclipse -> Project Facets [기능] -> HibernateFacet 설치, 버전을 선택하고 여기에서 3.3을 선택하십시오.
2. "Finish"를 클릭하면 SRC 디렉토리에 추가 기본 패키지가 있으며 (삭제 될 수 있음) 다음과 같이 Web.xml 파일에 코드가 있습니다.
3. "@Entity"주석을 지원하는 JAR 패키지 가져 오기 : 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하려면 다음을 선택하십시오. myeclipse-> 프로젝트 패킷 [기능] -> 다음 단계의 단계를 따르십시오.
위의 단계를 완료 한 후 세 가지 주요 프레임 워크가 기본적으로 구축 된 다음 통합됩니다.
5. 통합
1. ApplicationContext.xml이 너무 부풀어 오르고 관리하기 쉬운 모습을 방지하기 위해 Hibernate 관련 구성을 다른 .xml 파일에 저장 한 다음 ApplicationContext.xml에서 가져옵니다. 특정 단계 :
(1) SRC 디렉토리에서 HiberNateContext.xml 이라는 파일을 작성하고 (ApplicationContext.xml과 동일) applicationcontext.xml에 내용을 복사 한 다음 변경하십시오.
(2) HibernateContext.xml 파일의 내용 :
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : p = "http://www.springframework.org/schema/p"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/sprone--1.sdecema/schema/schema/schema/schema/schema/schema/schema. SessionFactory 구성-> <bean id = "sessionFactory"> <!-DataSource 속성은 ApplicationContext.xml 파일에서 구성됩니다. ref = "DataSource"> </property> <!-설정 최대 절전 모드 관련 구성 항목-> <속성 이름 = "HibernateProperties"> <!-소품 태그 유형의 속성을 주입하는 것-> <!-키는 hibernate.prefix-> props> <prop이어야합니다. key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </prop> <!-show_sql은 SQL 문을 인쇄하는 목적-> <prop key = "hibernate.show_sql"> true </prop> <!-SQL의 인쇄 형식을 미각하십시오. key = "hibernate.format_sql"> true </prop> <!-a) drop 만들기 : 프로그램을 실행할 때 데이터 테이블을 작성하고 실행 후 테이블을 삭제하십시오. 실제 개발에서 B) 생성에 종종 사용됩니다. 프로그램이 실행될 때마다 데이터 테이블 재현. C) 업데이트 : 프로그램을 실행할 때 테이블이 생성되지 않으면 데이터 테이블이 생성되고 데이터 테이블의 필드가 Entity (개발 환경)의 속성 증가에 따라 자동으로 추가되는 경우 데이터 테이블의 필드가 자동으로 추가 될 것이라고 판단됩니다. 테이블의 필드와 일치하지 않으면 오류가보고됩니다 (제작 환경)-> <prop key = "hibernate.hbm2ddl.auto"> Validate </prop> </props> </property> <!-hibernate의 엔터티 클래스를 구성합니다.> <propertagestoscan ">-목록 태그는 문자열의 특성을 주입하는 데 사용됩니다. 그 값은 일반적으로 해당 Bean 패키지의 전체 이름이며 Bean 패키지의 클래스는 일반적으로 데이터베이스의 테이블에 해당합니다-> <list> <value> com.beauxie.bean </value> </list> </bean> <!-hibernateTemplate 템플릿-> <bean id = "hibernateTemplate"> sessiontory ""ref = "reftortor" </bean> </beans>
(3) ApplicationContext.xm에서 "sessionFactory"구성을 삭제 한 다음 (HiberNateContext.xml로 구성 되었기 때문에) 수정 된 HiberNateContext.xml 컨텐츠를 가져 오십시오. 가져 오면 ApplicationContext.xml의 내용은 다음과 같습니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : p = "http://www.springframework.org/schema/p"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spride-beans- id = "dataSource"> </bean> <!- 다른 스프링 구성 파일을 가져옵니다. 하나의 파일에 배치되면 부풀어 오른 것처럼 보입니다 -> <import resource = "hibernatecontext.xml"/> </beans>
2. ApplicationContext.xm 파일의 원래 DataSource를 기반으로 구성 (데이터베이스 이름, 사용자 이름, 비밀번호 등)을 수정하십시오 ( 참고 : 값 태그에는 공간이 포함되어 있지 않아야합니다! ).
<bean id = "dataSource"> <property name = "jdbcurl"> <!-값 태그 대신 값 속성을 직접 사용하면 탈출하고 값 태그를 사용해야합니다. <span style = "color :#ff0000;"> 태그에는 공백이나 캐리지 리턴이 포함되어 있지 않아야합니다. 공백을 ""</span>로 변환하기 때문에 데이터 소스를 다시 작성하지 않으면 데이터베이스가 연결할 수 없게됩니다. <value> <! [cdata [jdbc : mysql : // localhost : 3306/sshdemo? useUnicode = true & charac rue & prepstmtcachesqllimit = 256 & cacheprepstmts = true & prepstmtcachesize = 256 & rewritebatchedstatements = true]> </value> </property> <property name = "driver class"value = "com.mysql.jdbc.driver"> </property> <속성 이름 = "user"value = "root"> </property name = "production"= "vale ="root "> </property> <속성 이름 ="arcireIncrement "value ="3 "> 이름 = "minpoolsize"value = "2"> </property> <속성 이름 = "maxpoolsize"value = "10"> </property> </bean>
3. ApplicationContext.xm에서 스프링 스캐너를 구성하여 스프링 구성 요소 주석을 클래스에 추가하면 Bean을 자동으로로드 할 수 있습니다. 특정 단계는 다음과 같습니다. (1) 컨텍스트 네임 스페이스를 소개하고 컨텍스트 태그를 지원하고 하단에서 "네임 스페이스"를 클릭 한 다음 컨텍스트 항목을 확인하십시오.
(2) 스프링 스캐너 구성 :
<!-스프링 스캐너를 구성하고 스프링 구성 요소 주석을 클래스에 추가하여 Bean을 자동으로로드하십시오->
<context : component-scan base-package = "com.beauxie.action, com.beauxie.service, com.beauxie.dao">
</context : component-scan>
이 시점에서 세 가지 주요 SSH 프레임 워크 환경이 구축되었으며 다음 단계는 SSH 프레임 워크를 기반으로 사용자 등록을 구현하는 것입니다.
6. 사례 : 사용자 등록의 간단한 모방
1. 프론트 데스크 등록 페이지 코드, index.jsp :
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%string path = request.getContextPath (); String BasePath = request.getScheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! doctype html public "-// w3c // dtd html 4.01 과도기 // en"> <html> <head> <head> <base href = "<%= basepath%>"> <title> 등록에 오신 것을 환영합니다. http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css">->-> </head> <body> <form action = "$ {pagecontext.request.contextpath}/user/regist"method = "post"> <!-사용자 속성을 자동으로로드하기 위해 username을로드 할 수 있지만, 그 가치를 수동으로 얻을 수 있습니다. type = "text"name = "username"> <br> 비밀번호 : <입력 유형 = "password"name = "password"> <br> <input type = "value ="registration "> </form> </body> </html>2. 사용자 클래스 코드 :
패키지 com.beauxie.bean; javax.persistence.entity import; javax.persistence.id import; javax.persistence.table import; /** * @author beauxie * 여기서 사용자의 속성은 t_user 테이블의 필드와 동일해야합니다. * 그렇지 않으면 * 다른 속성에 대한 해당 테이블의 필드를 수동으로 지정해야합니다 */ @entity // map 데이터베이스 테이블 @table (name = "t_user") //이 공개 기조에 해당하지 않습니다. t_user 테이블 개인 int id; // 사용자 ID 개인 문자열 사용자 이름; // 사용자 이름 개인 문자열 비밀번호; // public int getId () {return id; } public void setid (int id) {this.id = id; } public String getUserName () {return username; } public void setusername (String username) {this.username = username; } public String getPassword () {return password; } public void setpassword (문자열 비밀번호) {this.password = password; }} 3. Userdao 클래스 코드 :
패키지 com.beauxie.dao; org.springframework.beans.factory.annotation.autowired; org.springframework.orm.hibernate3.hibernateTemplate; org.springframework.stereotype.repository import; com.beauxie.bean.user import; /*** @author beauxie* dao 레이어, 데이터베이스*/ @repository //이 속성은 지속성 계층 (일반적으로 DAO 레이어)에 해당하며, 이는 스프링 관리에 전달되는 것을 의미하며, 패키지의 해당 클래스 이름은 또한 "S"공개 클래스 userdao { @autowired //의 템플릿이 필요하지 않습니다. 스프링 구성 파일에서; /*** 사용자 등록. }} 4. UserService 클래스 코드 :
패키지 com.beauxie.service; org.springframework.beans.factory.annotation.autowired; org.springframework.stereotyp.service; com.beauxie.bean.user import; import com.beauxie.dao.userdao; /*** @Author Beauxie* 서비스 계층*/ @service //이 속성은 일반적으로 서비스 계층에 해당합니다. 이는 일반적으로 서비스 계층입니다)는 스프링 관리에 전달되어 해당 클래스 이름에 "S"공개 클래스 사용자 서비스 { @Autowired // 또한 자동으로 개인 userDao userDao; public void addUser (user user) {// dao 계층 userdao.adduser (user)의 추가 장치 메소드를 호출합니다. }} 5. 사용자 수정 클래스 코드 :
패키지 com.beauxie.action; import javax.servlet.http.httpservletrequest; import org.apache.struts2.servletactionContext; import org.apache.struts2.convention.annotation.action; import org.apache.struts2.convention.annotation.namespace; import org.apache.struts2.convention.annotation.results; org.springframework.beans.factory.annotation.autowired; import org.springframework.context.annotation.scope; org.springframework.stereotyp.controller import; com.beauxie.bean.user import; com.beauxie.service.userservice import; /** * @author beauxie * */ @controller // 제어 레이어 구성 요소 @namespace ( "/user") // url prefix @scope ( "프로토 타입") // 액션은 기본적으로 싱글 톤이지만 실제 발달에서는 일반적으로 여러 다른 요청에 해당 할 수 있기 때문에, parentpackage (struts-defaults) ( ")////////////// @deratpaints에 해당 할 수 있기 때문입니다. 기본값은 "struts-default"입니다. 그래서 @Results ({@result (name = "registsuccess", location = "/msg.jsp")) public class userAction { @autowired // 자동 사용자 정류 서비스를 자동으로 주입합니다. // ".Action 및 접미사없이"@Action (value = "regist") // access : /user/regist.action 또는/regist public string regist () {// request httpservletRequest request = servleTactionContext.getRequest (); // 제출 된 데이터 문자열 username = request.getParameter ( "username"); 문자열 비밀번호 = request.getParameter ( "password"); // 사용자 비어 user user = new user (); user.setid (1000); user.setusername (사용자 이름); user.setpassword (비밀번호); // 서비스 계층 메소드를 호출하여 데이터베이스 서비스에 레코드를 추가합니다. // 프롬프트 정보를 요청 도메인 및 표시 요청에 저장합니다 .SetAttribute ( "msg", "축하, 등록이 성공했습니다! <br> 레지스터 이름 :"+username); "registsuccess"를 반환합니다. }} 6. 메시지 프롬프트 인터페이스 : msg.jsp 코드, 다음과 같이 :
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%string path = request.getContextPath (); String BasePath = request.getScheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! doctype html public "-// w3c // dtd html 4.01 전환 // en"> <html> <head> <base href = "<%= basepath%>"> <title> 메시지 프롬프트 </title> <meta http-refiv = "pragma"> <no-cache "> content = "no-cache"> <meta http-equiv = "만료"content = "0"> <meta http-equiv = "keywords"content = "keyword1, keyword2, keyword3"> <meta http-equiv = "description ="이것은 내 페이지입니다 ">-<link rel ="text/css " href = "styles.css"> -> </head> <body> $ {msg} </body> </html>7. 프로젝트를 서버에 추가하고 서비스를 시작하고 브라우저를 열고 http : // localhost/sshdemo/user/regist를 방문하십시오.
8. 사용자 이름과 비밀번호를 입력하고 "등록"을 클릭하여 결과를 표시합니다.
9. 콘솔은 SQL 문을 출력합니다 (출력이 구성되었고 SQL 문이 HiberNateContext.xml 파일에서 미화되었습니다) :
10. 데이터베이스 결과보기 :
이 간단한 경우가 끝났습니다. 양식 제출 데이터 검증 및 차량 코드에는 문제가 없습니다. 앞으로 업데이트되어야합니다.
7. 요약 :
1. 세 가지 주요 프레임 워크의 통합은 먼저 소개 된 다음 통합되어야합니다.
2. 데이터베이스 JAR 패키지를 가져 오는 것을 기억하십시오.
3. 액션 클래스는 패키지 이름 "action"아래에 배치되어야하며 클래스 이름은 "xxxaction"과 같은 작업으로 끝나야합니다.
4. 최대 절전 모드를 구성 할 때는 "@Entity"주석을 지원하는 JAR 패키지를 가져와야합니다.
5. struts.xml 파일에 가로 채는 struts의 요청 유형을 정의 할 수 있습니다.
6. Web.xml 파일에서 Struts 필터의 필터 유형을 정의 할 수 있습니다. 기본값은 *.action이며 / *로 변경해야합니다.
7. ApplicationContext.xm 파일에서는 SessionFactory, Hibernate Entity Class, HibernateTemplate 템플릿, 데이터 소스 데이터 소스 및 스프링 스캐너 (HiberNateContext.xml 포함)를 구성해야합니다.
8. 각 클래스는 해당 주석을 추가해야하며 작동중인 방법도 추가해야합니다.
인스턴스 소스 소스 코드를 다운로드하십시오 : http://xiazai.vevb.com/201610/yuanma/sshzhuce(vevb.com).rar
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.