古语有云: 万恶淫为首,百善孝为先。 我们后辈当自勉。

上一章简单介绍了Maven创建一个Servlet项目(五),如果没有看过,​​请观看上一章​​

一. Maven 整合SSH 框架

关于SSH 框架,不了解的,可以看老蝴蝶以前写的系列文章: Struts2 ,Hibernate 和Spring

SSH 框架,目前用的较少,大多数都是用 SSM 框架, 但 Maven 整合 SSH 框架也需要了解一下。

以一个简单的例子, 用户 User 来进行整合。

二. Maven 整合SSH 框架的具体步骤

二.一 创建数据库, 取名为 ssh. 编码用 utf-8

利用 Navicat For MySQL 软件进行创建数据库

Maven整合SSH项目(六)_hibernate

Hibernate 可以自动生成表, 故不需要创建表 user.

二.二 创建 Maven 项目,类型为 war 类型

具体的详细步骤 可以观看上一章的内容。

文件—>新建—>选择其他—>Maven Project–>勾选跳过—>填写 SSH框架的信息

公司为 com.yjl, 项目为 SSH, packagings 类型为 war 类型。

创建之后,缺少 web.xml 报错。

选中 SSH 项目, 右键 Java EE Tools——>Generate Deployment Descriptor Stub, 系统便会自动创建 web.xml 文件了。

二.三 在 pom.xml 中添加依赖 (最重要的一步)

在pom.xml 中,需要将 struts2, spring,hibernate 等框架的 jar包引用进来,同时也要引入 log4j 日志包, 和jstl 库包, junit 测试包, servlet-api 的Tomcat 运行环境包。 在进行依赖的时候,要注意引入的顺序。

为了简单,老蝴蝶 直接就把 pom.xml 所需要的依赖放置进来了。 不了解这些jar包的, 可以观看老蝴蝶以前写的文章:
​S2SH框架整合XML版(九)​​

pom.xml 中的内容

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yjl</groupId>
<artifactId>SSH</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- junit 测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- tomcat -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl 与 standard -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>

<!-- struts2依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- 关于json的依赖 -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<!-- struts2与 json的依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.3.24</version>
</dependency>

<!-- hibernate的依赖 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version>
</dependency>
<!-- aspectjweaver 依赖 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.3</version>
</dependency>
<!-- jboss-api依赖 -->
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
<version>1.1.1.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.4.0</version>
</dependency>
<!-- hibernate与c3p0整合 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.0.7.Final</version>
</dependency>
<!-- spring依赖 -->
<!-- spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring-aspects依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>

<!-- spring 与orm 依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring 测试的依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- strtus2与 spring整合 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
</dependency>
<!-- mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- 日志依赖 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<!-- slf4j 与log4j进行整合 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>

<!--tomcat 插件配置-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<!--tomcat的插件名, tomcat7-maven-plugin, 用的是tomcat7版本 -->
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8026</port> <!--tomcat的端口号 -->
<path>/ssh</path> <!--tomcat的项目名 -->
<uriEncoding>UTF-8</uriEncoding> <!-- 防止get 提交时乱码 -->
</configuration>
</plugin>
</plugins>
</build>

</project>

所引用的jar 包有

Maven整合SSH项目(六)_hibernate_02

二.四 创建各个 配置文件,将各自框架的 配置信息放置进去

配置文件 要放置在 src/main/resources 里面。

Maven整合SSH项目(六)_hibernate_03

1 . jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=abc123

2 .log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout

3 . hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入相应的结束 -->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- 对节点暂时不做介绍 -->
<hibernate-configuration>
<session-factory>
<!-- 关于Hibernate的相应配置 -->
<!-- 引入方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.format_sql">true</property>
<!-- 引入相应的约束文件 ctrl点击时可以正确进入-->
<mapping resource="com/yjl/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

4 . struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 开启开发者模式 -->
<constant name="struts.devMode" value="true" />
<!-- 把扩展名配置为action -->
<constant name="struts.action.extension" value="action" />
<!-- 设置主题为默认,即为标签本来的样子,不用struts2中设置好的标签 -->
<constant name="struts.ui.theme" value="simple"></constant>
<!-- 设置编码格式为utf-8,避免出现乱码的情况 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<constant name="struts.action.excludePattern" value="/JS/.*?" />
<!-- 引入相应的文件 -->
<include file="struts2/struts-user.xml"></include>
</struts>

5 . struts2 下的 struts2-user.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" extends="struts-default" namespace="/">
<action name="User_*" class="userAction" method="{1}">
<result name="list">list.jsp</result>
<result name="toList" type="redirectAction">
User_list
</result>
<result name="detail">detail.jsp</result>
</action>
</package>
</struts>

6 . applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 采用注解的方式进行 -->
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.yjl"></context:component-scan>
<!-- 引入配置文件 前面要加上classpath-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 创建sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 创建Hibernate模板 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

二.五 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/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>SSH整合</display-name>
<!-- 配置spring 启动时的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置启动参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置全局编码格式 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 配置struts2的过滤器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<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>
</web-app>

配置文件就算了配置好了,接下来,就是代码部分了。

二.六 User 实体类和其配置文件

User.java 所在的包是 com.yjl.pojo 包。

package com.yjl.pojo;
/**
@author:岳泽霖
@date: 2019年4月20日 上午10:06:22
@Description 类的相关描述
*/
public class User {
/**
* @param id 主键编号
* @param name 姓名
* @param sex 性别
* @param age 年龄
*/
private Integer id;
private String name;
private String sex;
private Integer age;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age+"]";
}
}

User.hbm.xml 配置文件 (目前放置在 src/main/java/resources/ com/yjl/pojo 目录下,即与 User.java 同级目录)

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入相应的约束 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--暂时不介绍具体的标签什么意思-->
<hibernate-mapping package="com.yjl.pojo">
<!-- 具体的实体类 -->
<class name="User" table="user">
<!-- 主键 -->
<id name="id" column="id">
<generator class="native"></generator>
</id>
<!-- 其余属性 -->
<property name="name"></property>
<property name="sex" ></property>
<property name="age"></property>
</class>
</hibernate-mapping>

Maven整合SSH项目(六)_Maven整合SSH项目_04

二.七 dao层及其实现类 UserDao 和UserDaoImpl

UserDao.java

package com.yjl.dao;
import java.util.List;
import com.yjl.pojo.User;
/**
@author:岳泽霖
@date: 2019年5月22日 下午8:04:06
@Description 类的相关描述
*/
public interface UserDao{
User getById(Integer id);
List<User> findAll();
void insertInfo(User user);
void updateInfo(User user);
void deleteById(Integer id);
}

UserDaoImpl.java

package com.yjl.dao.impl;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.yjl.dao.UserDao;
import com.yjl.pojo.User;

/**
@author:岳泽霖
@date: 2019年5月22日 下午8:04:43
@Description 类的相关描述
*/
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public User getById(Integer id) {
return sessionFactory.getCurrentSession().get(User.class, id);
}

@SuppressWarnings("unchecked")
@Override
public List<User> findAll() {
return sessionFactory.getCurrentSession().createQuery("FROM User")
.list();
}

@Override
public void insertInfo(User user) {
sessionFactory.getCurrentSession().save(user);
}

@Override
public void updateInfo(User user) {
sessionFactory.getCurrentSession().update(user);
}

@Override
public void deleteById(Integer id) {
User user=getById(id);
sessionFactory.getCurrentSession().delete(user);
}

}

二.八 service层及其实现类 UserService和 UserServiceImpl

UserService.java

package com.yjl.service;

import java.util.List;

import com.yjl.pojo.User;

/**
@author:岳泽霖
@date: 2019年5月22日 下午8:04:57
@Description 类的相关描述
*/
public interface UserService{
/**
* @param t pojo插入对象
* @return 添加对象
*/
void addEntity(User t);
/**
*
* @param id 主键编号
* @return 根据id编号删除当前对象
*/
void deleteEntity(Integer id);
/**
* @param t pojo更新对象
* @return 更新对象
*/
void updateEntity(User t);

/**
* @param id 主键编号
* @return 根据id编号查询当前对象,是唯一值.
*/
User getEntityById(Integer id);
/**
* @return 查询所有的对象信息
*/
List<User> findAllEntitys();

}

UserServiceImpl.java

package com.yjl.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.yjl.dao.UserDao;
import com.yjl.pojo.User;
import com.yjl.service.UserService;

/**
@author:yuejl
@date: 2019年5月22日 下午8:05:15
@Description 类的相关描述
*/
@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;

@Override
public void addEntity(User t) {
userDao.insertInfo(t);
}

@Override
public void deleteEntity(Integer id) {
userDao.deleteById(id);
}

@Override
public void updateEntity(User t) {
userDao.updateInfo(t);

}

@Override
public User getEntityById(Integer id) {
return userDao.getById(id);
}

@Override
public List<User> findAllEntitys() {
return userDao.findAll();
}


}

二.九 action层 UserAction

package com.yjl.web.action;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yjl.pojo.User;
import com.yjl.service.UserService;

/**
@author:岳泽霖
@date: 2019年5月22日 下午8:05:24
@Description 类的相关描述
*/
@Controller
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = 1L;

@Resource
private UserService userService;

private User user=new User();
@Override
public User getModel() {
return user;
}
public String list(){
List<User> userList=userService.findAllEntitys();
ActionContext.getContext().getValueStack().set("userList", userList);
return "list";
}

public String add(){
System.out.println("输出值:"+user.toString());
userService.addEntity(user);
return "toList";
}

public String update(){
userService.updateEntity(user);
return "toList";
}
public String delete(){
userService.deleteEntity(user.getId());
return "toList";
}

public String getById(){
User info=userService.getEntityById(user.getId());
ActionContext.getContext().getValueStack().push(info);
return "detail";
}

}

返回值 的 String 要与 struts-user.xml 的值相对应。

二.十 前端页面 展示

Maven整合SSH项目(六)_Maven整合SSH项目_05

bootstrap 里面放置的是 bootstrap 框架

list.jsp 页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="${pageContext.request.contextPath}/JS/bootstrap/css/bootstrap.min.css" type="text/css"/>
<script type="text/javascript" src="${pageContext.request.contextPath}/JS/jquery/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/JS/bootstrap/js/bootstrap.min.js"></script>
<title>显示列表信息</title>
</head>
<body>
<div class="container">
<div class="row">
<table class="table table-bordered table-hover">
<caption>查看用户信息</caption>
<thead>
<tr>
<th class="col-xs-2">姓名</th>
<th class="col-xs-2">性别</th>
<th class="col-xs-2">年龄</th>
<th class="col-xs-4" colspan="3">相关操作
<span style="padding-left:40px">
<s:a action="User_add.action?name=岳泽霖&age=24&sex=男">添加</s:a>
</span>
</th>
</tr>
</thead>
<tbody>
<s:iterator value="userList" var="user">
<tr>
<td>${user.name}</td>
<td>${user.sex}</td>
<td>${user.age}</td>
<td>
<s:a action="User_getById.action?id=%{id}">查看详情</s:a>      
<s:a action="User_update.action?id=%{id}&name=岳泽霖&age=25&sex=男">修改</s:a>      
<s:a action="User_delete.action?id=%{id}">删除</s:a>
</tr>
</s:iterator>
</tbody>
</table>
</div>
</div>
</body>
</html>

detail.jsp 页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="${pageContext.request.contextPath}/JS/bootstrap/css/bootstrap.min.css" type="text/css"/>
<script type="text/javascript" src="${pageContext.request.contextPath}/JS/jquery/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/JS/bootstrap/js/bootstrap.min.js"></script>
<title>查看详情</title>
</head>
<body>
<div class="container">
<div class="row">
<table class="table table-bordered table-hover">
<caption>查看用户信息</caption>
<thead>
<tr>
<th class="col-xs-2">姓名</th>
<th class="col-xs-2">性别</th>
<th class="col-xs-2">年龄</th>
</tr>
</thead>
<tbody>
<tr>
<td>${name}</td>
<td>${sex}</td>
<td>${age}</td>

</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>

二.十一 启动服务器,输入命令 运行

选中 SSH 项目, 运行方式–> maven build…

输入命令: clean tomcat7:run

Maven整合SSH项目(六)_Maven整合SSH项目_06

控制台会报错,打印输出,最后的原因是

Maven整合SSH项目(六)_Maven整合SSH项目_07

说是 User.hbm.xml 文件没有找到。

Maven 运行时,会把 src/main/java 里面的内容都编译成 .class 文件, 会把 com/yjl/pojo/User.hbm.xml 文件去除掉,所以说找不到该文件。

可以把该文件 User.hbm.xml 放置在 src/main/resources 下面。

在resources 下面创建 com/yjl/pojo 文件,里面放置 User.hbm.xml 文件。

Maven整合SSH项目(六)_struts_08

这个时候,再次运行命令 clean tomcat7:run 便可以正常运行了

二.十二 测试

发现 ssh 数据库下创建了 user 表,

Maven整合SSH项目(六)_hibernate_09


里面没有数据,手动添加几条

Maven整合SSH项目(六)_hibernate_10

输入 http://localhost:8026/ssh/User_list.action

进入查询列表

Maven整合SSH项目(六)_Maven整合SSH项目_11

点击添加按钮之后

Maven整合SSH项目(六)_struts_12

将岳泽霖 那一条进行 修改, 即点击其后面的修改按钮

Maven整合SSH项目(六)_struts_13

点击查看详情

Maven整合SSH项目(六)_Maven整合SSH项目_14

将老蝴蝶 那一条记录进行删除,点击后面的删除按钮

Maven整合SSH项目(六)_hibernate_15

是正常运行的

Maven 进行整合 SSH项目,是成功的。

谢谢!!!