欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven整合SSH项目(六)

程序员文章站 2022-07-12 22:31:16
...

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

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

一. Maven 整合SSH 框架

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

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

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

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

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

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

Maven整合SSH项目(六)

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项目(六)

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

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

Maven整合SSH项目(六)

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项目(六)

二.七 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项目(六)

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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
										<s:a action="User_update.action?id=%{id}&name=岳泽霖&age=25&sex=男">修改</s:a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
										<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项目(六)

说是 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项目(六)

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

二.十二 测试

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

Maven整合SSH项目(六)
里面没有数据,手动添加几条
Maven整合SSH项目(六)

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

进入查询列表

Maven整合SSH项目(六)

点击添加按钮之后

Maven整合SSH项目(六)

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

Maven整合SSH项目(六)

点击查看详情

Maven整合SSH项目(六)

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

Maven整合SSH项目(六)

是正常运行的

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

谢谢!!!