Eclipse搭建SSH框架(下)包含增删查改-JAVA
来源:互联网 发布:卓行信贷网络借贷 编辑:程序博客网 时间:2024/06/15 03:28
在上篇博客里,介绍了Tomcat的配置与Struts2的搭建,如果对这个还不会的童鞋去看一下我的上篇博客 Eclipse搭建SSH框架(上)-JAVA,今天我们接着上篇博客的内容,继续搭建我们滴SSH框架。
(一)在上篇博客的基础上整合Spring:
在整合Spring之前到把准备工作做好
1.首先要映射数据库表,在src下的entity中创建User.java类(里面对应表的字段,生成get set方法):
package com.cf.entity;public class User { private Integer id; private String name; private String pwd; private String userName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + ", userName=" + userName + "]"; }}
然后在同一级创建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"><!-- Mapping file autogenerated by MyEclipse Persistence Tools --><hibernate-mapping> <class name="com.cf.entity.User" table="USERDETAILS"><!-- name:对应包名 table:对应数据库表名 --> <id name="id"> <column name="ID" /><!-- id:对应数据库表的id generator:生成策略--> <generator class="increment" /> </id> <property name="userName" type="java.lang.String"><!-- name:对应数据库字段名 type:对应数据库字段类型 --> <column name="userName" /> </property> <property name="pwd" type="java.lang.String"> <column name="pwd" /> </property> <property name="name" type="java.lang.String"> <column name="name" /> </property> </class></hibernate-mapping>
在说一下Hibernate映射文件(类与表之间的关系映射):
<hibernate-mapping> <class name="类名" table="表名"> <!-- 主键 --> <id name="主键名"> <column name="主键列" /> <!-- 主键生成器 --> <generator class="生成策略" /> </id> <property name="属性名" type="数据类型"> <column name="列名" length="长度" not-null="是否不为空" /> </property> </class></hibernate-mapping>
2.写完entity包后 接下来写dao包,在src下的dao包中创建TowDao.java的接口:
package com.cf.dao;import java.util.List;import com.cf.entity.User;public interface TowDao { public List<User> findUser(); public void insert(User TowDao); public boolean UpData(User user); public boolean Delect(int userid); public User findData(int userid);}
接着在src下的dao包中创建impl包,然后创建TowDaoimpl.java文件,然后实现TowDao接口:
package com.cf.dao.impl;import java.util.List;import com.cf.dao.TowDao;import com.cf.entity.User;public class TowDaoimpl implements TowDao{ @Override public List<User> findUser() { // TODO Auto-generated method stub return null; } @Override public void insert(User TowDao) { // TODO Auto-generated method stub } @Override public boolean UpData(User user) { // TODO Auto-generated method stub return false; } @Override public boolean Delect(int userid) { // TODO Auto-generated method stub return false; } @Override public User findData(int userid) { // TODO Auto-generated method stub return null; }}
3.接着在src下的service包下面创建Towsercice.java接口,然后继承dao中的TowDao接口:
package com.cf.service;import com.cf.dao.TowDao;public interface Towsercice extends TowDao{}
接着在src下的service包中创建impl包,然后创建Towserviceimpl.java文件,然后实现Towsercice接口:
package com.cf.service.impl;import java.util.List;import com.cf.entity.User;import com.cf.service.Towsercice;public class Towserviceimpl implements Towsercice{ @Override public List<User> findUser() { // TODO Auto-generated method stub return null; } @Override public void insert(User TowDao) { // TODO Auto-generated method stub } @Override public boolean UpData(User user) { // TODO Auto-generated method stub return false; } @Override public boolean Delect(int userid) { // TODO Auto-generated method stub return false; } @Override public User findData(int userid) { // TODO Auto-generated method stub return null; }}
实现Towsercice接口后 要在Towserviceimpl的前面加上”@Transactional”注解 ,再创建一个私有的公共遍历 private TowDao towDao;,然后生成TowDao 的 get set方法,接着在每一个方法中返回dao中对应的方法:
package com.cf.service.impl;import java.util.List;import org.springframework.transaction.annotation.Transactional;import com.cf.dao.TowDao;import com.cf.entity.User;import com.cf.service.Towsercice;@Transactional//注解public class Towserviceimpl implements Towsercice{ private TowDao towDao; @Override public List<User> findUser() { // TODO Auto-generated method stub return towDao.findUser(); } @Override public void insert(User TowDao) { // TODO Auto-generated method stub towDao.insert(TowDao); } @Override public boolean UpData(User user) { // TODO Auto-generated method stub return towDao.UpData(user); } @Override public boolean Delect(int userid) { // TODO Auto-generated method stub return towDao.Delect(userid); } @Override public User findData(int userid) { // TODO Auto-generated method stub return towDao.findData(userid); } public TowDao getTowDao() { return towDao; } public void setTowDao(TowDao towDao) { this.towDao = towDao; }}
service写完后,接着在dao下的impl中写交互数据库的语句:
在src->dao->impl->TowDaoimpl中 注册sessionFactory工厂
package com.cf.dao.impl;import java.util.List;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.cf.dao.TowDao;import com.cf.entity.User;public class TowDaoimpl extends HibernateDaoSupport implements TowDao{ @Autowired SessionFactory sessionFactory;//org/springframework/orm/hibernate3/HibernateTemplate //SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象 @Override public List<User> findUser() { List<User> list=null; Query query=sessionFactory.openSession().createQuery("from User"); list=query.list(); return list; } @Override public void insert(User TowDao) { // TODO Auto-generated method stub } @Override public boolean UpData(User user) { // TODO Auto-generated method stub return false; } @Override public boolean Delect(int userid) { // TODO Auto-generated method stub return false; } @Override public User findData(int userid) { // TODO Auto-generated method stub return null; }}
在写完TowDaoimpl后,接下来要在 src->action 中调用dao的方法来获取数据再返回界面:
package com.cf.action;import java.util.ArrayList;import java.util.List;import com.cf.entity.User;import com.cf.service.Towsercice;import com.opensymphony.xwork2.ActionSupport;public class OneAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private Towsercice towsercice; User user; private List<User> list=new ArrayList<User>(); private int id; private String userName; private String pwd; private String name; List<User> Listuser; public String execute(){ String name=this.userName; String password=this.pwd; String text=this.name; System.out.println(password); Listuser=towsercice.findUser(); //request.getSession().setAttribute("user", list); return SUCCESS; } public Towsercice getTowsercice() { return towsercice; } public void setTowsercice(Towsercice towsercice) { this.towsercice = towsercice; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<User> getListuser() { return Listuser; } public void setListuser(List<User> listuser) { Listuser = listuser; }}
上面的写完后,先创建一个登陆的jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>用户登陆界面</title></head><body> <form action="executeLogin.action" method="post" name="regForm"> <table> <tr> <td>用户名</td> <td><input type="text" name="userName" size="15" /></td> </tr> <tr> <td>密码</td> <td><input type="pwd" name="pwd" size="15" /></td> </tr> <tr> <td>姓名</td> <td><input type="text" name="name" size="15" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="注册"></td> </tr> </table> </form></body></html>
然后要在jsp中接收数据,所以要修改/SSH/WebContent/jsp/regsuccess.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><h1>登录成功</h1><table> <thead> <tr> <td>名字</td> <td>密码</td> <td>用户名</td> </tr> </thead> <c:forEach items="${Listuser}" var="Listuser"> <tr> <td style="display:none;">${Listuser.id}</td> <td>${Listuser.name}</td> <td>${Listuser.pwd}</td> <td>${Listuser.userName}</td> <td><a href="delectUserLogin.action?id=${Listuser.id}">删除</a></td> <td><a href="findDataLogin.action?id=${Listuser.id}">修改</a></td> </tr> </c:forEach></table><a href="/SSH/jsp/insertuser.jsp">新增</a></body></html>
准备完后在src下创建名为:applicationContext.xml文件(和struts.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" default-autowire="byName"> <!-- 开启注解 --> <context:annotation-config /> <!-- spring 扫描路径,注意当前工程只需要扫描dao和service,srpingmvc或者struts2注解才有变化 --> <context:component-scan base-package="cf.it" /><!-- 这里要对应包名 --> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /><!-- 指定连接数据库的驱动 --> <property name="url" value="jdbc:mysql://localhost:3306/test" /><!-- 指定连接数据库的URL --> <property name="username" value="root" /><!-- 指定连接数据库的用户名 --> <property name="password" value="root" /><!-- 指定连接数据库的密码 --> </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.MySQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.connection.autocommit">true </prop> <prop key="hibernate.show_sql">true</prop> <prop key="sql_format">true</prop> </props> </property> <property name="mappingResources"> <!-- 指定hibernate映射文件 --> <list> <value>com/cf/entity/User.hbm.xml</value> <!-- 这里就是我们的框架用到Hibernate,写映射表后,但是别忘了配置文件中指定。 --> </list> </property> </bean> <bean id="loginService" class="com.cf.service.impl.Towserviceimpl"></bean> <bean id="loginServer" class="com.cf.action.OneAction" scope="prototype"> <property name="loginService" ref="loginService"></property> </bean> <!-- Dao配置 --> <bean id="towDao" class="com.cf.dao.impl.TowDaoimpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- Action配置 --> <bean id="reg" class="com.cf.action.OneAction" scope="prototype"> <property name="towsercice" ref="towsercice"></property> </bean> <!-- Service配置 --> <bean id="towsercice" class="com.cf.service.impl.Towserviceimpl"> <property name="towDao" ref="towDao"></property> </bean> <!-- 配置声明式事务管理(采用注解的方式) 不写这个事务是操作不了数据库的 比如:不能新增 不能删除 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 开启注解事务 --> <tx:annotation-driven transaction-manager="txManager" /></beans>
以上都配置好后 启动项目 效果如下:
这样就查询就成功了。接下来就 增 删 改就简单多了。
先在sshTow->WebContent->jsp->下创建一个fail.jsp,是失败返回的jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body> 失败!!!</body></html>
然后在创建insertuser.jsp(用于新增):
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body> <form action="insertuserLogin.action" method="post" name="regForm"> <table> <tr> <td>用户名</td> <td><input type="text" name="userName" size="15" /></td> </tr> <tr> <td>密码</td> <td><input type="pwd" name="pwd" size="15" /></td> </tr> <tr> <td>姓名</td> <td><input type="text" name="name" size="15" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="新增"></td> </tr> </table> </form></body></html>
顺便把修改的updata.jsp也创建了:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>${user.userName} <form action="UpDataLogin.action" method="post" name="regForm"> <table> <tr> <td>用户名</td> <td><input type="text" name="userName" value="${user.userName}" size="15" /></td> <td><input style="display: none" type="text" name="id" value="${user.id}" size="15" /></td> </tr> <tr> <td>密码</td> <td><input type="pwd" name="pwd" value="${user.pwd}" size="15" /></td> </tr> <tr> <td>姓名</td> <td><input type="text" name="name" value="${user.name}"size="15" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="修改"></td> </tr> </table> </form></body></html>
上面的jsp都创建好后,在struts.xml中补全跳转jsp:
<?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="action" extends="struts-default" > <action name="*Login" class="com.cf.action.OneAction"> <result name="success">/jsp/regsuccess.jsp</result> <result name="loginsuccess">/jsp/index.jsp</result> <result name="fail">/jsp/fail.jsp</result> <result name="insert">/jsp/insert.jsp</result> <result name="updata">/jsp/updata.jsp</result> </action> </package> </struts>
接下来就是补全src->dao->impl->TowDaoimpl.java中的增 删 改 操作了:
package com.cf.dao.impl;import java.util.List;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.cf.dao.TowDao;import com.cf.entity.User;public class TowDaoimpl extends HibernateDaoSupport implements TowDao{ @Autowired SessionFactory sessionFactory;//org/springframework/orm/hibernate3/HibernateTemplate //SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象 @Override public List<User> findUser() { List<User> list=null; Query query=sessionFactory.openSession().createQuery("from User"); list=query.list(); return list; } @Override public void insert(User TowDao) { // TODO Auto-generated method stub getHibernateTemplate().save(TowDao); } @Override public boolean UpData(User user) { // TODO Auto-generated method stub boolean falg=false; try{ getHibernateTemplate().update(user); falg=true; }catch (Exception e) { e.printStackTrace(); } return falg; } @Override public boolean Delect(int userid) { boolean falg=false; try{ User user =new User(); user.setId(userid); getHibernateTemplate().delete(user); falg=true; }catch (Exception e) { e.printStackTrace(); } return falg; } @Override public User findData(int userid) { // TODO Auto-generated method stub return (User) sessionFactory.getCurrentSession().get(User.class,userid); }}
然后在补全src->co->cf->action->OneAction.java中的增 删 改 :
package com.cf.action;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.cf.entity.User;import com.cf.service.Towsercice;import com.opensymphony.xwork2.ActionSupport;public class OneAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; public HttpServletRequest request=ServletActionContext.getRequest(); public HttpServletResponse reaponse=ServletActionContext.getResponse(); private Towsercice towsercice; User user; private List<User> list=new ArrayList<User>(); private int id; private String userName; private String pwd; private String name; List<User> Listuser; public String execute(){ String name=this.userName; String password=this.pwd; String text=this.name; System.out.println(password); Listuser=towsercice.findUser(); //request.getSession().setAttribute("user", list); return SUCCESS; } public String UpData(){ Integer id=this.id; String name=this.userName; String password=this.pwd; String text=this.name; User user=new User(); user.setId(id); user.setName(text); user.setUserName(name); user.setPwd(password); boolean UpDataUser=towsercice.UpData(user); if(UpDataUser){ Listuser=towsercice.findUser(); return SUCCESS; }else{ return "fail"; } } public String findData(){ int user_id =Integer.parseInt(request.getParameter("id")); user=towsercice.findData(user_id); return "updata"; } public String insertuser(){ User user=new User(); user.setName(name); user.setUserName(userName); user.setPwd(pwd); towsercice.insert(user); Listuser=towsercice.findUser(); return SUCCESS; } public String delectUser() throws Exception{ int user_id =Integer.parseInt(request.getParameter("id")); boolean delectuser=towsercice.Delect(user_id); if(delectuser){ Listuser=towsercice.findUser(); return SUCCESS; }else{ return "fail"; } } public Towsercice getTowsercice() { return towsercice; } public void setTowsercice(Towsercice towsercice) { this.towsercice = towsercice; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<User> getListuser() { return Listuser; } public void setListuser(List<User> listuser) { Listuser = listuser; }}
最后附一张全图:
到这里搭建SSH到这里就结束啦,代码中有有些地方没有封装的,就看着来封装),如有疑问,请给我留言~~ QQ:304966802
源码->Eclipse搭建SSH框架-JAVA(源码+数据库)
注意:
1.这里的calss是对应包名 不要写错了喔! Dao Action Service 的配置 id要对应
- Eclipse搭建SSH框架(下)包含增删查改-JAVA
- Eclipse搭建SSH框架(上)包含增删查改-JAVA
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程及增删改查经验总结
- java 项目ssh框架搭建的增删查改,带数据库文件
- ssh框架下 对数据库的增删改查
- Mac OS 下搭建memcached java 增删改查
- SSM框架搭建+easyui增删改查
- SSH增删改查
- ssh框架搭建:婚庆财务管理系统,AJAX自动刷新,实现增删改查四个功能,
- Yii框架下的增删改查
- SSH搭建流程以及实现增删查改(整合)
- 基于SSH框架的增删改查实例附带源码
- SSH 增删改查综合
- 学习SSH 增删改查
- Spring JdbcTemplate框架搭建及其增删改查使用指南
- Spring JdbcTemplate框架搭建及其增删改查使用指南
- SSM框架搭建+easyui增删改查实现
- Spring JdbcTemplate框架搭建及其增删改查使用指南
- memo
- PHP ajax实现数组返回
- Postgres小版本升级
- rxjava 常用用法实例
- gitlab之:gitlab 403 forbidden 并发引起ip被封
- Eclipse搭建SSH框架(下)包含增删查改-JAVA
- INIT_WORK的宏定义的解释
- Bootstrap3笔记2
- gulp匹配模式不起作用
- ansible tower 3.2.2 安装
- Rhyme/Hibernate JTA与thread上下文的区别
- leetcode5 最长回文子串
- 使用Scrapyd部署爬虫
- Java六大设计原则