Spring 통합 Struts 와 Hibernate 입문 상세 설명

14365 단어 springhibernatestruts
머리말
최근 Spring,Struts,Hiberbate 기 초 를 배 웠 습 니 다.스스로 이 세 개의 프레임 워 크 를 통합 한 후에 백 스테이지 관리 사 이 트 를 써 서 연습 하고 싶다.Spring 의 역할 은 주입 에 의존 하 는 것 이 고,Struts 는 디 스 플레이 층 의 것 이 며,이 두 프레임 이 집 적 된 후 어떤 모습 인지 알 수 있다.공부 하면 서 기록 하 다.타.
Spring 통합 에 필요 한 jar 패키지
우선,Spring 은 Struts 를 통합 합 니 다.그러면 applicationContext.xml 과 struts.xml,web.xml 은 없어 서 는 안 됩 니 다.앞의 두 개 는 Spring 과 Struts 의 프로필 이 고,뒤의 하 나 는 전체 웹 의 전역 프로필 입 니 다.모든 프로필 에서 어떻게 설정 해 야 하 는 지,어떻게 서로 연결 해 야 하 는 지.사실은 Struts 에서 지정 한 Action 클래스 를 Spring 에 주입 하 는 클래스 입 니 다.
3 대 프레임 워 크 통합 개발 은 어렵 지 않다.어 려 운 점 은 각 가방 의 의존 도 를 파악 하고 버 전 간 의 차이 도 한 가지 이다.Spring 통합 Struts 가 의존 하 는 가방 을 보 여 줍 니 다:
의존 가방
이 곳 의 모든 의존 도 는 Struts 2.0 과 Spring 3.0 입 니 다.판본 이 좀 낡 아서 나 는 최신 판 으로 시종 통합 이 정확 하지 않다.잘 되면 버 전 업그레이드 해.
Number
Package
Platform
Function
1
commons-fileupload-1.2.2.jar
common
파일 업로드 기능
2
commons-io-2.0.1.jar
common
3
commons-lang-2.5.jar
common
4
commons-logging-1.1.1.jar
common
로그
5
freemarker-2.3.16.jar
Struts
모듈 엔진
6
javassist-3.11.0.GA.jar
common
동적 프로 그래 밍
7
ognl-3.0.1.jar
common
표현 식 언어,속성 제공,방법 호출
8
org.springframework.asm-3.1.1.RELEASE.jar
spring
Spring 독립 된 asm 프로그램,Spring 2.5.6 시 asmJar 가방 3.0.6 이 필요 합 니 다.당분간 나 도 이 일 을 왜 하 는 지 모 르 겠 어.
9
org.springframework.beans-3.1.1.RELEASE.jar
spring
Spring IOC 구현
10
org.springframework.context-3.1.1.RELEASE.jar
spring
Spring 은 기본 적 인 IoC 기능 에 대한 확장 서 비 스 를 제공 합 니 다.그 밖 에 메 일 서비스,작업 스케줄 링,JNDI 포 지 셔 닝,EJB 통합,원 격 액세스,캐 시 와 각종 시각 계층 프레임 워 크 의 패 키 징 등 기업 급 서 비 스 를 지원 합 니 다.
org.springframework.context.support-3.1.1.RELEASE.jar
spring
Spring-context 확장 지원,MVC 에 사용
12
org.springframework.core-3.1.1.RELEASE.jar
spring
Spring 핵심 공구 꾸러미
13
org.springframework.expression-3.1.1.RELEASE.jar
spring
Spring 표현 식 언어
14
org.springframework.web-3.1.1.RELEASE.jar
spring
Spring 웹 도구 꾸러미
15
org.springframework.web.servlet-3.1.1.RELEASE.jar
spring
servlet 기반 MVC 구현
16
struts2-core-2.2.3.1.jar
struts
Struts 핵심 라 이브 러 리
17
xwork-core-2.2.3.1.jar
struts
xwork 핵심 라 이브 러 리
18
struts2-spring-plugin-2.2.3.1.jar
struts
Spring 과 Struts 가 서로 통합 되 어 있 습 니 다.
19
antlr-2.7.2.jar
common
언어 문법 분석 기
20
aopalliance-1.0.jar
common
절단면 프로 그래 밍 인터페이스
21
commons-dbcp.jar
common
DBCP 데이터베이스 연결 풀
22
commons-pool.jar
common
DBCP 데이터베이스 연결 풀
23
dom4j-1.6.1.jar
hibernate
유연 한 xml 프레임 워 크
24
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate
주해 사용 클래스
25
hibernate3.jar
hibernate
데이터베이스 핵심 패키지
26
jta-1.1.jar
hibernate
분산 처리
27
mysql-connector-java-5.1.18-bin.jar
hibernate
jdbc 커 넥 터
28
org.springframework.jdbc-3.1.1.RELEASE.jar
hibernate
spring 과 jdbc 통합
29
org.springframework.orm-3.1.1.RELEASE.jar
hibernate
데이터베이스 통합
30
org.springframework.transaction-3.1.1.RELEASE.jar
hibernate
트 랜 잭 션 통합
31
slf4j-api-1.6.1.jar
common
로그 시스템
집성
모델 층
새 사용자 모델 은 다음 과 같 습 니 다.

package com.action;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@javax.persistence.Table(name="user")
public class User implements Serializable{
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue
 @Column(name="id")
 public int id;
 @Column(name="name")
 public String name;
 @Column(name="password")
 public String password;
 
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
 @Override
 public String toString() {
 return "User [name=" + name + ", password=" + password + "]";
 }
}
dao 층
새 dao 인터페이스:

package com.dao.impl;
import java.util.List;
import com.action.User;
import com.action.UserAction;
public interface UserDao {
 public void save(User action);
 
 public User getUser(int id);
 
 public void update(User action);
 
 public void delete(User userAction);
 
 public List<User> findByName(String name);
}
dao 인터페이스 구현

package com.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.action.User;
import com.action.UserAction;
public class UserDaoImpl implements UserDao {
 
 private SessionFactory sessionFactory;
 private HibernateTemplate mHibernateTemplate;
 
 public SessionFactory getSessionFactory() {
 return sessionFactory;
 }
 public void setSessionFactory(SessionFactory sessionFactory) {
 this.sessionFactory = sessionFactory;
 }
 public HibernateTemplate getHbernateTemplate() {
 if (mHibernateTemplate==null) {
 mHibernateTemplate = new HibernateTemplate(sessionFactory);
 }
 return mHibernateTemplate;
 }
 
 public void save(User action) {
 // TODO Auto-generated method stub
 getHbernateTemplate().save(action);
 }
 public User getUser(int id) {
 // TODO Auto-generated method stub
 User userAction = getHbernateTemplate().get(User.class, new Integer(id));
 return userAction;
 }
 public void update(User action) {
 // TODO Auto-generated method stub
 getHbernateTemplate().update(action);
 }
 public void delete(User userAction) {
 // TODO Auto-generated method stub
 getHbernateTemplate().delete(userAction);
 }
 @SuppressWarnings("unchecked")
 public List<User> findByName(String name) {
 // TODO Auto-generated method stub
 String queryString = "from User u where u.name like ?";
 return getHbernateTemplate().find(queryString);
 }
 
}
뷰 층
표시 및 action

/**
 * 
 */
package com.action;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.dao.impl.UserDaoImpl;
import com.opensymphony.xwork2.ActionSupport;
/**
 * @author kevin
 *
 */
public class UserAction extends ActionSupport {
 public String name;
 public String password;
 private UserDaoImpl userDao;
 
 public String getName() {
 return name;
 }
 
 public void setUserDao(UserDaoImpl userDao) {
 this.userDao = userDao;
 }
 
 public UserDaoImpl getUserDao() {
 return userDao;
 }
 public void setName(String name) {
 this.name = name;
 }
 
 
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
 @Override
 public String execute() throws Exception {
 //     new   applicationContext   
 HttpServletResponse response = ServletActionContext.getResponse();
 response.setContentType("text/xml;charset=UTF-8");
 User user = new User();
 user.name = name;
 user.password = password;
 userDao.save(user);
 response.getWriter().write(user.toString());
 return "success";
 }
}
첫 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>  </h1>
<s:form action="user">
<s:textfield name="name" label="username"></s:textfield>
<s:textfield name="password" label="password"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
</html>
두 번 째 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>    </h1>
${name} 
${password} 
</body>
</html>
프로필
전역 웹 프로필 추가

<?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">
 <display-name>SpringSS</display-name>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 <welcome-file>index.htm</welcome-file>
 <welcome-file>index.jsp</welcome-file>
 <welcome-file>default.html</welcome-file>
 <welcome-file>default.htm</welcome-file>
 <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 
 <filter>
 <filter-name>struts2</filter-name>
 <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
 </filter>
 <listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern> 
 </filter-mapping>
</web-app>
Spring 프로필

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
 
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
 <property name="driverClassName">
 <value>com.mysql.jdbc.Driver</value>
 </property>
 <property name="url">
 <value>jdbc:mysql://localhost/spring</value>
 </property>
 <property name="username">
 <value>root</value>
 </property>
 <property name="password">
 <value>123456</value>
 </property>
 </bean>
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="dataSource">
 <ref local="dataSource"/>
 </property>
 <property name="annotatedClasses">
 <list>
 <value>com.action.User</value>
 </list>
 </property>
 <property name="hibernateProperties">
 <props>
 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
 <prop key="show_sql">true</prop>
 </props>
 </property>
 </bean>
 <bean id="userDao" class="com.dao.impl.UserDaoImpl">
 <property name="sessionFactory">
 <ref local="sessionFactory"/>
 </property>
 </bean>
</beans>
Struts 프로필

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value="spring" />
 <package name="default" extends="struts-default">
 <action name="user" class="userAction">
  <result name="success">/user.jsp</result>
 </action>
 </package>
</struts>
결과 표시
입력 페이지

결과 페이지

데이터베이스

결국 어렵 지 않 을 것 같 군.사실 UserDao 는 추상 화 할 수 있 고 한 번 만 주입 하면 나중에 보완 할 수 있다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기