eclipse创建项目
File -> new ->Dynamic Web Project
->next ->next
Generate web.xml deployment descriptor 打上勾,项目创建时会自动创建web.xml文件。->finish
复制相关jar文件到lib
struts2_lib
spring_lib
hibernate_lib
这三个lib目录分别单独属于struts2、spring、hibernate三个框架,整合在一起的会有部分重复,删除旧版本,保留新版本即可
三个框架整合是struts-spring.jar一定要加,调试的时候忘记导入这个包,spring和struts2整合疯狂报错,当时一脸懵
这里推荐一个jar下载网站Jar File Download,需要的jar、源文件一般都可以在里面找到=-=重要的是,完全免费,不需要积分,都知道说的是谁奥:) 或者使用maven,只需要配置pom.xml就可以自动下载所需的jar包
导入jar到项目中
选中lib包下所有的jar(按住shift,左键点第一个文件,最后一个文件,即可选中所有的jar)右键->Build Path -> add to Build Path
需求:查询数据库中user表中的所有记录,以表格形式显示所有的记录(user表字段【id,username,password】)
前期准备
在src文件下新建下列包和.java,.xml文件
Demo.java
public class Demo extends ActionSupport{
DemoService demoService;
public void setDemoService(DemoService demoService) {
this.demoService = demoService;
}
public String query() throws Exception{
List list = demoService.queryAll();
//获取值栈对象,将demoService返回的List放入值栈中
ActionContext context = ActionContext.getContext();
ValueStack valueStack = context.getValueStack();
valueStack.set("users",list);
return "query";
}
}
User.java
package cn.sshdemo.entity;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
DemoDao.java
public interface DemoDao {
//返回User集合
List queryAll();
}
DemoDaoImpl.java 实现DemoDao接口
public class DemoDaoImpl extends HibernateDaoSupport implements DemoDao{
@Override
public List queryAll() {
// TODO Auto-generated method stub
List users = (List)this.getHibernateTemplate().find("from User");
return users;
}
}
DemoService.java
类名上添加事务注解
@Transactional
public class DemoService {
DemoDao demoDao;
public void setDemoDao(DemoDao demoDao) {
this.demoDao = demoDao;
}
public List queryAll(){
return demoDao.queryAll();
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
index
id
username
password
搭建struts2环境
(1)创建struts.xml,在xml中配置action
index.jsp
(2)在web.xml中配置struts2的过滤器
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
搭建hibernate环境
创建hibernate.cfg.xml 配置数据库连接信息、映射文件
com.mysql.jdbc.Driver
【数据库url地址】
【用户名】
【密码】
true
true
update
org.hibernate.dialect.MySQLDialect
创建映射配置文件user.hbm.xml(实体类和数据库表相互映射)
搭建spring环境
创建applicationContext.xml,添加相关约束
web.xml中相关配置
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
struts2和spring整合
配置applicationContext.xml
spring核心功能之一IOC:控制反转,将实例化对象交由spring处理。这里生成demoService、demoDaoImpl分别通过set方法注入到DemoAction、DemoService中去
修改struts.xml文件,action的class修改为demoAction,因为该对象已由spring创建
index.jsp
hibernate和spring整合
在applicationContext.xml中配置dataSource、sessionFactory等相关信息
注释掉hibernate.cfg.xml中配置的数据库连接信息,因为已由spring配置完毕
true
true
update
org.hibernate.dialect.MySQLDialect
配置事务
在applicationContext.xml中添加一下代码
运行
右键add and remove,将要运行的项目添加进 Configured
右键start,服务器启动。查看console,如果程序没有问题,控制台不会有异常抛出且数据库会自动生成m_user表,如果出现异常,则根据异常一步步排查错误
打开chrome浏览器,地址栏中输入localhost:8080/sshdemo/demo_query.action 调用Demo中的query方法
因为数据库中只插了一行记录,当然只有一行显示啦==
如果出现404错误,检查路径;出现500错误,检查代码就行了:)