您的位置:首页 > 编程语言 > Java开发

Eclipse搭建SSH框架(下)包含增删查改-JAVA

2017-12-22 17:59 447 查看
在上篇博客里,介绍了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>
&
4000
lt;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要对应

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息