整理了好几天,查了好多资料,终于整理好了一个整合方案,实在是因为ssh整合jar总是容易发生冲突错误,来之不易,存下来以备以后需要
配置文件模板
1.web.xml
<?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"> <!-- 对spring容器实例化 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 对struts进行配置 --> <servlet> <servlet-name>struts</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>struts</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>encoding</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> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2.struts-config.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-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="user" type="edu.gzu.ssh.bean.UserFoemBean"></form-bean> </form-beans> <action-mappings> <action path="/user/list" type="edu.gzu.ssh.action.UserAction" validate="false"> <forward name="list_show" path="/WEB-INF/page/show_list.jsp"></forward> </action> <action path="/user/add" type="edu.gzu.ssh.action.UserAddForAction" validate="false"> <forward name="add_show_for" path="/WEB-INF/page/show_add.jsp"></forward> </action> <action path="/user/register" validate="false" parameter="method" scope="request" name="user"> <forward name="register" path="/index.jsp"></forward> </action> </action-mappings> <!-- 将action交给spring容器管理 --> <controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> </controller> </struts-config>
3.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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/sshtest?useUnicode=true&characterEncoding=UTF8"/> <property name="username" value="root"/> <property name="password" value=""/> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1"/> <!-- 连接池的最大值 --> <property name="maxActive" value="500"/> <!-- 最大空闲值,当经过一个高峰时间后,连接池可以慢慢释放用不到的连接,直到maxidle为止--> <property name="maxIdle" value="2"/> <!-- 最小空闲值,当连接池的剩余小于阀值时,连接池会自动生气个链接--> <property name="minIdle" value="1"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mappingResources"> <list> <value>edu/gzu/ssh/bean/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.hbm2ddl.auto=update hibernate.show_sql=false hibernate.format_sql=false </value> </property> </bean> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven transaction-manager="txManager"/> <bean id="UserService" class="edu.gzu.ssh.service.UserServiceImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean name="/user/register" class="edu.gzu.ssh.action.UserAddAction"></bean> </beans>
4.bean对象 MVC之M(model)层 User.java
package edu.gzu.ssh.bean; public class User{ private int id; private String username; private String gender; private int stunumber; private String classname; public User() { super(); } public User(String username, String gender, int stunumber, String calssname) { super(); this.username = username; this.gender = gender; this.stunumber = stunumber; this.classname = calssname; }//省略geeter和setter
}
5.hibernate配置bean User.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 package="edu.gzu.ssh.bean"> <class name="User" table="user_info"> <id name="id" column="id" type="int"> <generator class="native"/> </id> <property name="username" type="string" column="username"></property> <property name="gender" type="string" column="gender"></property> <property name="stunumber" type="int" column="stu_number"></property> <property name="classname" type="string" column="classname"></property> </class> </hibernate-mapping>
6.hibernate接口类 主用于数据库操作UserServiceDao.java MVC之C(contorler)
package edu.gzu.ssh.Dao; import java.util.List; import edu.gzu.ssh.bean.User; public interface UserServiceDao{ public void saveUser(User user); public void deleteUser(Integer id); public void updateUser(User user); public User getUser(Integer id); public List<User> getAllUser(); }
7.hibernate实现类,数据库操作的实例对象UserServiceImpl.java
package edu.gzu.ssh.service; import java.util.List; import javax.annotation.Resource; import org.hibernate.SessionFactory; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import edu.gzu.ssh.Dao.UserServiceDao; import edu.gzu.ssh.bean.User; @Transactional public class UserServiceImpl implements UserServiceDao { @Resource private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void deleteUser(Integer id) { sessionFactory.getCurrentSession().delete( sessionFactory.getCurrentSession().load(User.class, id)); } @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true) @SuppressWarnings("unchecked") public List<User> getAllUser() { return sessionFactory.getCurrentSession().createQuery("from User").list(); } @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true) public User getUser(Integer id) { return (User) sessionFactory.getCurrentSession().get(User.class, id); } public void saveUser(User user) { sessionFactory.getCurrentSession().persist(user); } public void updateUser(User user) { sessionFactory.getCurrentSession().merge(user); } }
8.测试类 UserServiceTest.java
package edu.gzu.ssh.Test; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.transaction.annotation.Transactional; import edu.gzu.ssh.Dao.UserServiceDao; import edu.gzu.ssh.bean.User; @Transactional public class UserServiceTest { private static UserServiceDao userService; @BeforeClass public static void setUpBeforeClass() throws Exception { try { ApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext.xml"); userService=(UserServiceDao) applicationContext.getBean("UserService"); } catch (Exception e) { e.printStackTrace(); } } @Test public void saveTest(){ User user=new User("张三", "男", 1201021102, "法律学122"); userService.saveUser(user); System.out.print("保存成功!!!"); } @Test public void getUser(){ User user=userService.getUser(2); System.out.println("Username:"+user.getUsername()); System.out.println("Gender:"+user.getGender()); System.out.println("Stunumber:"+user.getStunumber()); System.out.println("Classname:"+user.getClassname()); } @Test public void updateTest(){ User user=userService.getUser(1); user.setStunumber(1501021102); userService.updateUser(user); System.out.print("update成功!!!"); } @Test public void getAllTest(){ List<User> users=userService.getAllUser(); for(User user:users){ System.out.println("Username:"+user.getUsername()+ " Gender:"+user.getGender()+ " Stunumber:"+user.getStunumber()+ " Classname:"+user.getClassname()); } } }
9.struts实例 获取数据库所有对象UserAction.java
package edu.gzu.ssh.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import edu.gzu.ssh.Dao.UserServiceDao; import edu.gzu.ssh.bean.User; public class UserAction extends Action{ private UserServiceDao dao; @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ApplicationContext application=new ClassPathXmlApplicationContext("applicationContext.xml"); dao=(UserServiceDao) application.getBean("UserService"); List<User> users=dao.getAllUser(); request.setAttribute("users", users); return mapping.findForward("list_show"); } }
10.jsp显示show_list.jsp MVC之V(View)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'show_list.jsp' starting page</title> </head> <body> <center> <h2>已注册用户信息</h2> <table border="1px solid gray"> <tr><td>用户ID</td><td>姓名</td><td>性别</td><td>学号</td><td>班级</td></tr> <c:forEach items="${users}" var="user"> <tr><td>${user.id }</td><td>${user.username}</td><td>${user.gender}</td> <td>${user.stunumber}</td><td>${user.classname}</td></tr> </c:forEach> </table> <a href="${pageContext.request.contextPath }/index.jsp">返回首页</a> <a href="${pageContext.request.contextPath }/user/add.do">注册新信息</a> </center> </body> </html>