1、ssh整合
(1)加载必要的jar包(aop,连接池等)
2)建立POJO,如User:(省略getterhe setter)
private int id;
private int age;
private String name;
public User(){}
public User(int id,int age,String name){
this.id = id;
this.age = age;
this.name = name;
}
(3)接口(增删改等),如IUserDao:
public interface IUserDao {
public void insert(User user);
public User find(int id);
public int getUserAccount();
public List getAll();
}
(4)接口的实现类:UserDao.java,要注意的是HibernateTemplate 的使用以及SessionFactory 的setter注入。
public class UserDao implements IUserDao {
private HibernateTemplate hibernateTemplate;
//在spring的配置文件中通过该方法注入SessionFactory
public void setSessionFactory(SessionFactory sessionFactory){
hibernateTemplate =new HibernateTemplate(sessionFactory);
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public User find(int id) {
// TODO Auto-generated method stub
return (User)hibernateTemplate.get(User.class, id);
}
public void insert(User user) {
// TODO Auto-generated method stub
hibernateTemplate.save(user);
}
}
(5)hibernate的映射文件(如果不想自己建立表的话就留着hibernate.cfg.xml文件,然后用ExportDB.java来创立表)
(6)修改web.xml:要指明Spring的配置文件,配置org.springframework.web.context.ContextLoaderListener,ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息以及配置struts2的过滤器:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Sping的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<!-- ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息 --> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
(7)建立Action:,如UserRegistAction ,在这里声明表单组件相对应的属性,如name和age,然后继承了ActionSupport ,并实现了RequestAware,SessionAware,让Struts2自动注入request和session的实例,代码如下:
public class UserRegistAction extends ActionSupport implements RequestAware,SessionAware{
User user ;
String name,age;
UserDao userDao;
private Map<String ,Object> request;
private Map<String ,Object> session;
@Override
public String execute() throws Exception {
if(request==null){
return "error";
}else{
user = new User();
user.setName(name);
System.out.println(age);
user.setAge(Integer.parseInt(age));
userDao.insert(user);
return SUCCESS;
}
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.request = arg0;
}
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.session = arg0;
}
.......省略name和age的setter和getter.
}
(8)配置Spring的配置文件:主要是配置dataSource和sessionFactory,然后将sessionFactory注入UserDao,还要将UserDao注入到引用了UserDao的Action中。
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
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">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testspring"/>
<property name="username" value="root"/>
<property name="password" value="shutao"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 通过 mappingDirectoryLocations来设置某个路径下的全部xxx.hbm.xml配置文件-->
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/shutao/testSSH</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<bean id="UserDao" class="shutao.testSSH.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userRegistAction" class="shutao.ssh.action.UserRegistAction" scope="prototype">
<property name="userDao" ref="UserDao"/>
</bean>
</beans>
(9)Struts的配置文件:
<?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="GBK"/>
<constant name="struts.devModel" value="true"/>
<constant name="struts.objectFactory" value="spring"/>
<package name="user" namespace="/user_reg" extends="struts-default">
<action name="userReg">
<result>/regist.jsp</result>
</action>
<!--★ 引用了Spring容器中的Bean,class的名字必须和Spring中配置的一样,这是Struts和Spring整合的关键之一 -->
<action name="userRegistAction" class="userRegistAction">
<result name="error">
/error.jsp
</result>
<result name="success">
/userRegSuccess.jsp
</result>
</action>
</package>
</struts>
最后看看regist.jsp:
<form action="user_reg/userRegistAction" method="post">
用户名:<input type="text" name="name"> <br>
年龄:<input type="text" name="age"> <br>
<input type="submit" value="提交">
<s:debug></s:debug>
</form>
整个文件结构: