經典 SSH 整合最小化 Demo,實現「添加用戶」功能,涵蓋配置文件、Action/Service/DAO、實體映射、JSP 頁面,適合初學者快速跑通整合流程。
src/
├── cn.bj.ssh.entity.User
├── cn.bj.ssh.dao.UserDao
├── cn.bj.ssh.service.UserService
├── cn.bj.ssh.action.UserAction
resources/
├── applicationContext.xml
├── jdbc.properties
├── User.hbm.xml
web/
├── WEB-INF/
│ ├── web.xml
│ ├── struts.xml
│ └── zwy-servlet.xml
└── addUser.jsp
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssh
jdbc.username=root
jdbc.password=root
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingResources">
<list><value>cn/bj/ssh/entity/User.hbm.xml</value></list>
</property>
</bean>
<!-- 事務管理 -->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<!-- Bean 註冊 -->
<bean id="userDao" class="cn.bj.ssh.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userService" class="cn.bj.ssh.service.UserService">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userAction" class="cn.bj.ssh.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>
<package name="ssh" extends="struts-default" namespace="/">
<action name="user_*" class="userAction" method="{1}">
<result name="loginSuccess">/index.jsp</result>
</action>
</package>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
<servlet>
<servlet-name>zwy</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>zwy</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context:component-scan base-package="com.zwy.web"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
public class User {
private Integer pid; private String name, password; private Double height;
// getter/setter/構造器
}
<class name="cn.bj.ssh.entity.User" table="user">
<id name="pid" column="pid"><generator class="native"/></id>
<property name="name" column="name" length="20"/>
<property name="password" column="password" length="20"/>
<property name="height" column="height"/>
</class>
public class UserDao {
private SessionFactory sessionFactory;
public void save(User user) {
sessionFactory.getCurrentSession().save(user);
}
}
@Transactional
public class UserService {
private UserDao userDao;
public void save(User user) { userDao.save(user); }
}
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
private UserService userService;
public User getModel() { return user; }
public void setUserService(UserService userService) { this.userService = userService; }
public String save() {
userService.save(user);
return "loginSuccess";
}
}
<s:form action="user_save" method="post" namespace="/" theme="simple">
<table border="1" width="400">
<tr><td>用戶名</td><td><s:textfield name="name"/></td></tr>
<tr><td>密碼</td><td><s:textfield name="password"/></td></tr>
<tr><td>身高</td><td><s:textfield name="height"/></td></tr>
<tr><td colspan="2"><input type="submit" value="添加"/></td></tr>
</table>
</s:form>
https://localhost:8080/專案名/addUser.jsp。user 表新增記錄。index.jsp(需自建)。源碼下載:微雲分享(含完整 JAR 包與 SQL)。