最近没事,用Spring+Struts2+Hibernate做了一个小Demo,算是对知识做一个的巩固了解。下面将逐步记录从查询待编辑删除,增加,分页,以及搜索这些功能
我们先创建好一张数据表,并向里面插入一定的数据,以便测试
首先第一步创建好项目后,当然引入jar包
然后创建一个包,在里面创建一个People.java以及它的映射文件People.hbm.xml
package com.zdxh.pojo;
public class People {
private int id;
private String name;
private String sex;
private String phone;
private String address;
/**setter and getter**/
}
<?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.zdxh.pojo">
<class name="People" table="people">
<id name="id" column="id">
<generator class="native">
</generator>
</id>
<property name="name" />
<property name="sex" />
<property name="address" />
<property name="phone" />
</class>
</hibernate-mapping>
接下来就是开发DAO层,创建 com.zdxh.dao 包,在里面定义一个接口PeopleDAO,然后在创建一个com.zdxh.dao.impl包,在里面创建一个接口的实现类 PeopleDAOImpl
1.定义方法 list();
2.PeopleDAOImpl继承HibernateTemplate,HibernateTemplate里面自带sessionfactory的set方法,可以接受注入
package com.zdxh.dao;
import java.util.List;
import com.zdxh.pojo.People;
public interface PeopleDAO {
List<People> list();
}
package com.zdxh.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.zdxh.dao.PeopleDAO;
import com.zdxh.pojo.People;
public class PeopleDAOImple extends HibernateTemplate implements PeopleDAO {
public List<People> list(){
return find("from People");
}
}
在来开发service层
1.创建com.zdxh.service包,在里面定义接口PeopleService
2.创建com.zdxh.service.impl,在里面定义实现类PeopleServiceImple
package com.zdxh.service;
import java.util.List;
import com.zdxh.pojo.People;
public interface PeopleService {
List<People> list();
}
package com.zdxh.service.impl;
import java.util.List;
import com.zdxh.dao.PeopleDAO;
import com.zdxh.pojo.People;
import com.zdxh.service.PeopleService;
public class PeopleServiceImpl implements PeopleService {
PeopleDAO peopleDAO;
public List<People> list(){
return peopleDAO.list();
}
public PeopleDAO getPeopleDAO() {
return peopleDAO;
}
//接受注入
public void setPeopleDAO(PeopleDAO peopleDAO) {
this.peopleDAO = peopleDAO;
}
}
紧跟着就是就是写一个Action了,ProductAction提供对ProductService的注入,借助SSH的整合,ProductAction就充当非常单纯的控制层的角色:
1. 创建com.zdxh.action包
2. 在包内创建PeopleAction
package com.zdxh.action;
import java.util.List;
import com.zdxh.pojo.People;
import com.zdxh.service.PeopleService;
public class PeopleAction {
List<People> ps;
PeopleService peopleService;
public String list(){
ps=peopleService.list();
return "listPeople";
}
public List<People> getPs() {
return ps;
}
public void setPs(List<People> ps) {
this.ps = ps;
}
public PeopleService getPeopleService() {
return peopleService;
}
public void setPeopleService(PeopleService peopleService) {
this.peopleService = peopleService;
}
}
然后配置环境,在src目录下创建struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.objectFactory" value="spring"/>
<package name="basicstruts" extends="struts-default">
<action name="*People" class="peopleActionBean" method="{1}">
<result name="listPeople">WEB-INF/jsp/listPeople.jsp</result>
</action>
</package>
</struts>
在WEB-INF里面创建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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean name="peopleActionBean" class="com.zdxh.action.PeopleAction">
<property name="peopleService" ref="peopleServiceImpl" />
</bean>
<bean name="peopleServiceImpl" class="com.zdxh.service.impl.PeopleServiceImpl">
<property name="peopleDAO" ref="peopleDAOImpl" />
</bean>
<bean name="peopleDAOImpl" class="com.zdxh.dao.impl.PeopleDAOImpl">
<property name="sessionFactory" ref="sf" />
</bean>
<bean name="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mappingResources">
<list>
<value>com/zdxh/pojo/People.hbm.xml</value>
</list>
</property>
<property name="schemaUpdate">
<value>true</value>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hbm2ddl.auto=update
</value>
</property>
</bean>
<bean name="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssh_demo?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="admin" />
</bean>
</beans>
同时,web.xml也要配置好struts2的拦截器和spring的监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<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>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
在WEB-INF下创建一个jsp文件夹,文件夹里面创建listPeople.jsp,把传过来的数据打印出来
然后启动tomcat测试一下 访问地址http://localhost:8080/SSH_Demo1A/listPeople
上面已经完成了普通的查询数据,下面我们来为这个Demo添加一些功能——增加信息和删除信息
1.在PeopleDAO的接口和实现类上新增add和delete方法,直接放实现类的代码
package com.zdxh.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.zdxh.dao.PeopleDAO;
import com.zdxh.pojo.People;
public class PeopleDAOImpl extends HibernateTemplate implements PeopleDAO {
public List<People> list(){
return find("from People");
}
public void add(People p){
save(p);
}
public void delete(People p){
super.delete(p);
}
}
2.给service层也增加add和delete方法
package com.zdxh.service.impl;
import java.util.List;
import com.zdxh.dao.PeopleDAO;
import com.zdxh.pojo.People;
import com.zdxh.service.PeopleService;
public class PeopleServiceImpl implements PeopleService {
PeopleDAO peopleDAO;
public List<People> list(){
return peopleDAO.list();
}
public void add(People p){
peopleDAO.add(p);
}
public void delete(People p){
peopleDAO.delete(p);
}
public PeopleDAO getPeopleDAO() {
return peopleDAO;
}
public void setPeopleDAO(PeopleDAO peopleDAO) {
this.peopleDAO = peopleDAO;
}
}
3.action控制层新增了一个对象people用来接收增加功能传递过来的people值
package com.zdxh.action;
import java.util.List;
import com.zdxh.pojo.People;
import com.zdxh.service.PeopleService;
public class PeopleAction {
List<People> ps;
PeopleService peopleService;
People people;
public String list(){
ps=peopleService.list();
return "listPeople";
}
public String add(){
peopleService.add(people);
return "listPeopleAction";
}
public String delete(){
peopleService.delete(people);
return "listPeopleAction";
}
/***setter and getter***/
}
并且需要在struts.xml里面配置跳转信息,新增<result name="listPeopleAction" type="redirect">listPeople</result>
<action name="*People" class="peopleActionBean" method="{1}">
<result name="listPeople">WEB-INF/jsp/listPeople.jsp</result>
<result name="listPeopleAction" type="redirect">listPeople</result>
</action>
在jsp页面上也要做修改 1.增加删除的按钮 2.增加表单
再来测试一下,访问上面的地址:http://localhost:8080/SSH_Demo1A/listPeople,在输入框内输入信息,点击提交
添加成功了
点击删除它,信息就没了
本篇介绍就到这里