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要对应
这里写图片描述


原创粉丝点击