基于SSH框架的增删改查实例附带源码

    xiaoxiao2021-12-14  22

    一步一教你搭建SSH框架,实现简单的增删改查功能

    一、首先创建一个Java web项目,并按下图建好项目目录

    二、在网上搜索ssh所需jar包,并将其放到WEB_INF下的lib里面(这里截图了部分)

    三、如下图配置web.xml(添加spring监听器以及struts过滤器等)

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ssh</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- ########## 过滤器 ########## --> <!-- OpenSessionInView --> <filter> <filter-name>OpenSessionInView</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>OpenSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置字符过滤 --> <filter> <filter-name>setCharactor</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>setCharactor</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- struts拦截器 --> <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>*.do</url-pattern> <url-pattern>*.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE </dispatcher> </filter-mapping> <!-- spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext.xml </param-value> </context-param> <!-- ########## 监听器 ########## --> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>四、在bo包建立User实体类及其Hibernate映射文件

    User.java

    package com.suo.bo; /** * User entity. @author MyEclipse Persistence Tools */ public class User implements java.io.Serializable { // Fields private Integer id; private String name; private String password; private String email; private String address; // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } }User类的Hibernate映射文件User.hbm.xml

    <?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"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.suo.bo.User" table="user" catalog="baseframe"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="25" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="25" /> </property> <property name="email" type="java.lang.String"> <column name="email" length="25" /> </property> <property name="address" type="java.lang.String"> <column name="address" length="25" /> </property> </class> </hibernate-mapping> 五、Dao层编写  (该层用于数据的持久化操作)

    UserDAO.java

    package com.suo.dao; import com.suo.bo.User; public interface UserDAO { /** * 保存 * @param user */ void saveUser(User user); /** * 更新 * @param user */ void updateUser(User user); /** * 删除 */ void deleteUser(User user); /** * 查询 * @return */ User queryUserbyName(String name); } UserDAO.Java package com.suo.dao.impl; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.suo.bo.User; import com.suo.dao.UserDAO; public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { @Override public void saveUser(User user) { // TODO Auto-generated method stub getHibernateTemplate().save(user); } @Override public void updateUser(User user) { // TODO Auto-generated method stub getHibernateTemplate().update(user); } @Override public void deleteUser(User user) { // TODO Auto-generated method stub getHibernateTemplate().delete(user); } @Override public User queryUserbyName(String name) { // TODO Auto-generated method stub String queryString="from User t where t.name=?"; // return (User)getHibernateTemplate().find(queryString,new String[]{name}).get(0); return (User) getHibernateTemplate().find(queryString, name).get(0); } }

    六、Service层编写(该层用于数据的业务处理)

    UserService.java

    package com.suo.service; import com.suo.bo.User; public interface UserService { void save(User user); User queryUserbyName(String name); void updateUser(User user); void deleteUser(String name); } UserServiceImpl.java package com.suo.service.impl; import com.suo.bo.User; import com.suo.dao.UserDAO; import com.suo.service.UserService; public class UserServiceImpl implements UserService{ private UserDAO userDAO; @Override public void save(User user) { // TODO Auto-generated method stub userDAO.saveUser(user); } @Override public User queryUserbyName(String name) { // TODO Auto-generated method stub return userDAO.queryUserbyName(name); } @Override public void updateUser(User user) { // TODO Auto-generated method stub User userdata=userDAO.queryUserbyName(user.getName()); userdata.setAddress(user.getAddress()); userdata.setEmail(user.getEmail()); userdata.setPassword(user.getPassword()); userDAO.updateUser(userdata); } @Override public void deleteUser(String name) { // TODO Auto-generated method stub User user=userDAO.queryUserbyName(name); userDAO.deleteUser(user); } public UserDAO getUserDAO() { return userDAO; } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } } 七、Action编写 package com.suo.action; import com.opensymphony.xwork2.ActionSupport; import com.suo.bo.User; import com.suo.service.UserService; public class UserAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private UserService userService; private User user; private String name; public String save(){ userService.save(user); return "add_success"; } public String queryUserbyName(){ user =userService.queryUserbyName(name); return "query_success"; } public String deleteUser(){ userService.deleteUser(name); return "delete_success"; } public String updateUser(){ String str=user.getName(); //更改前preUser User preuUser=userService.queryUserbyName(str); userService.updateUser(user); //更改后user User afteruser=userService.queryUserbyName(str); return "update_success"; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 八、在hibernate.properties中配置数据相关数据,以及在applicationContext.xml中配置Spring管理

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 属性配置文件 --> <bean id="propertyConfigeurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:hibernate.properties</value> </property> </bean> <!-- 数据库配置 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>${mysql.database.driver_class}</value> </property> <property name="url"> <value>${mysql.database.url}</value> </property> <property name="username"> <value>${mysql.database.username}</value> </property> <property name="password"> <value>${mysql.database.password}</value> </property> </bean> <!-- sessionFactory配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQL5Dialect </prop> </props> </property> <property name="mappingDirectoryLocations"> <list> <value>classpath:com/suo/bo</value> </list> </property> </bean> <!-- Util --> <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <bean id="baseTxProxy" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="count*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="select*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="find*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="load*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="import*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="batch*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="del*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="save">PROPAGATION_REQUIRED,-Exception</prop> <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="union*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- action配置 --> <bean id="userAction" class="com.suo.action.UserAction" scope="prototype"> <property name="userService"> <ref bean="userService"></ref> </property> </bean> <!-- service配置 --> <bean id="userService" parent="baseTxProxy" > <property name="target"> <bean class="com.suo.service.impl.UserServiceImpl"> <property name="userDAO"> <ref bean="userDAO"/> </property> </bean> </property> </bean> <!-- dao配置 --> <bean id="userDAO" class="com.suo.dao.impl.UserDAOImpl"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>

    九、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> <package name="struts_pub" namespace="/" extends="struts-default"> <!-- 默认拦截器 --> <default-interceptor-ref name="defaultStack"/> <action name="user" class="userAction" > <result name="add_success">/add_success.jsp</result> <result name="delete_success">/delete_success.jsp</result> <result name="update_success">/update_success.jsp</result> <result name="query_success">/query_success.jsp</result> </action> </package> </struts>十、前端Jsp页面的编写

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> ssh框架整合学习demo <p>新增</p> <form action="user!save.do"> 名称:<input name="user.name"><br/> 密码:<input name="user.password"> <br/> 邮箱:<input name="user.email"> <br/> 住址:<input name="user.address"> <br/> <input type="submit" value="提交"> <br/> </form> <p>查询</p> <form action="user!queryUserbyName.do"> 名称:<input name="name"> <input type="submit" value="提交"> <br/> </form> <p>修改</p> <form action="user!updateUser.do"> 名称:<input name="user.name"><br/> 密码:<input name="user.password"> <br/> 邮箱:<input name="user.email"> <br/> 住址:<input name="user.address"> <br/> <input type="submit" value="提交"> <br/> </form> <p>删除</p> <form action="user!deleteUser.do"> 名称:<input name="name"> <input type="submit" value="提交"> <br/> </form> </body> </html> query_success.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'query_success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 查询成功! <br> 查询结果<br/> 名字 :<s:property value="user.name"/> <br/> 密码:<s:property value="user.password"/> <br/> 邮箱:<s:property value="user.email"/> <br/> 住址:<s:property value="user.address"/> <br/> </body> </html>

    其他的前端jsp类似  就不在写了

    源码下载地址:点击打开链接

    十一、部署运行

    转载请注明原文地址: https://ju.6miu.com/read-971550.html

    最新回复(0)