四、创建SSH2工程(重点)
需求,用SSH2集成框架搭建工程mavenweb ,功能为单表的列表查询。
表名称 dep (部门表)
字段名称 | 字段类型 | 字段含义 |
uuid | bigint | 主键:部门编号 |
name | varchar | 部门名称 |
tele | varchar | 部门电话 |
(一)创建war工程
1. 选择菜单 File ->new -> Other
选择Maven下的Maven Project, next
2. 选中下图红框部分的复选框(跳过骨架),next
3. 定义工程坐标
注意打包方式选择war工程。
4. 手动添加web.xml
(1)在src /main/webapp 目录下手动创建WEB-INF目录
(2)将资源文件夹下的web.xml拷贝至WEB-INF目录
5. 添加插件
将下列配置拷贝至pom.xml
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <!-- 指定端口 --> <port>8080</port> <!-- 请求路径 --> <path>/</path> </configuration> </plugin> </plugins> </build> |
点击工程右键 Maven -> Update Project ...
6. 在pom.xml中添加servlet-api
因为我们创建的是war工程 ,需要response 和request 等对象,而这些对象是在servlet-api中的,所以我们需要添加servlet-api ,才能保证工程正常编译。
注意:必须指定scope为provided , 这是设置依赖范围,我们后边的章节会详细讲解。如果设置则启动会报错。
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies> |
添加后更新工程
7. 创建index.jsp
<%@ 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>测试页面</title> </head> <body> 开启神秘的Maven世界~ </body> </html> |
部署运行测试 执行命令
tomcat7:run |
用浏览器测试,地址: http://localhost:8080/index.jsp
(二)添加SSH依赖
SSH2框架需要添加的依赖如下:
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.0.7.Final</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.7</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.24</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> |
(三)SSH工程搭建
1. 建立包结构
2. 添加spring配置文件
拷贝资源下的配置文件文件夹中的applicationContext.xml
3. 添加struts配置文件
<?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="default"namespace="/"extends="struts-default"> </package> </struts> |
4. 修改web.xml 配置文件,添加以下配置
<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>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
5. 编写实体类
package cn.itcast.mavenweb.domain; /** * 部门 * @author Administrator * */ publicclass Dep {
private Long uuid; private String name; private String tele;
public Long getUuid() { returnuuid; } publicvoid setUuid(Long uuid) { this.uuid = uuid; } public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } public String getTele() { returntele; } publicvoid setTele(String tele) { this.tele = tele; } } |
6. 编写映射文件
在src/main/resources 下创建包cn.itcat.mavenweb.domain
在此目录下创建映射文件dep.hbm.xml ,内容如下:
<?xml version="1.0"encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.itcast.mavenweb.domain.Dep" table="dep"> <id name="uuid"> </id> <property name="name"/> <property name="tele"/> </class> </hibernate-mapping> |
7. 创建数据访问层接口DepDao
package cn.itcast.mavenweb.dao;
import java.util.List;
import cn.itcast.mavenweb.domain.Dep;
/** * 部门Dao * @author Administrator * */ publicinterface DepDao {
public List<Dep> getList(); } |
8. 创建数据访问类DepDaoImpl
package cn.itcast.mavenweb.dao.impl; import java.util.List; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import cn.itcast.mavenweb.dao.DepDao; import cn.itcast.mavenweb.domain.Dep; /** * 部门数据访问类 * @author Administrator * */ publicclass DepDaoImpl extends HibernateDaoSupport implements DepDao {
@Override public List<Dep> getList() {
return (List<Dep>) getHibernateTemplate().find("from Dep"); } } |
9. 创建业务逻辑层接口
package cn.itcast.mavenweb.service;
import java.util.List;
import cn.itcast.mavenweb.domain.Dep;
/** * 部门业务层接口 * @author Administrator * */ publicinterface DepService {
/** * 全部列表 * @return */ public List<Dep> getList(); }
|
10. 创建业务逻辑类
package cn.itcast.mavenweb.service.impl;
import java.util.List;
import cn.itcast.mavenweb.dao.DepDao; import cn.itcast.mavenweb.domain.Dep; import cn.itcast.mavenweb.service.DepService; /** * 部门业务逻辑类 * @author Administrator * */ publicclass DepServiceImpl implements DepService{
private DepDao depDao;
publicvoid setDepDao(DepDao depDao) { this.depDao = depDao; }
/** * 全部列表 */ public List<Dep> getList() { // TODO Auto-generated method stub returndepDao.getList(); }
} |
11. 创建action类
package cn.itcast.mavenweb.web.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import cn.itcast.mavenweb.domain.Dep; import cn.itcast.mavenweb.service.DepService;
/** * 部门action * @author Administrator * */ publicclass DepAction {
private DepService depService;
publicvoid setDepService(DepService depService) { this.depService = depService; }
public String list(){ List<Dep> list = depService.getList(); ServletActionContext.getRequest().setAttribute("list", list); return"list"; }
}
|
12.编写spring配置文件的内容
<bean id="depDao"class="cn.itcast.mavenweb.dao.impl.DepDaoImpl"> <property name="sessionFactory"ref="sessionFactory"></property> </bean>
<bean id="depService" class="cn.itcast.mavenweb.service.impl.DepServiceImpl"> <property name="depDao"ref="depDao"></property> </bean>
<bean id="depAction"class="cn.itcast.mavenweb.web.action.DepAction"> <property name="depService"ref="depService"></property> </bean> |
13. 编写struts配置文件的内容
<action name="dep_*"class="depAction"method="{1}"> <result name="list">/index.jsp</result> </action> |
14. 编写index.jsp的内容
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>测试页面</title> </head> <body> 开启神秘的Maven世界~<br> <c:forEach var="i"items="${list}"> ${i.uuid} ${i.name} ${i.tele}<br> </c:forEach> </body> </html> |
(四)定义变量
在pom.xml中插入配置
<properties> <hinernate.version>5.0.7.Final</hinernate.version> <spring.version>4.2.4.RELEASE</spring.version> <struts.version>2.3.24</struts.version> </properties> |
此时相当于创建了三个变量。
我们在下面可以通过el表达式引用这三个变量的值
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.7</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> |
这样做的好处是一旦版本发生变化,直接修改属性标签里的值即可。
(五)打war包
执行命令package 即可将war工程打成war工程。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">