增删改查 源码

导入jar包

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">

	
	<welcome-file-list>
		<welcome-file>/index.html</welcome-file>
	</welcome-file-list>


	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	
	

</web-app>

asm-5.2.jar
asm-commons-5.2.jar
asm-tree-5.2.jar
commons-dbutils-1.6.jar
commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang3-3.6.jar
druid-1.0.26.jar
fastjson-1.2.21.jar
freemarker-2.3.26-incubating.jar
javassist-3.20.0-GA.jar
jsp-api.jar
log4j-api-2.9.1.jar
log4j-core-2.9.1.jar
mysql-connector-java-5.1.40-bin.jar
ognl-3.1.15.jar
servlet-api.jar
struts2-core-2.5.16.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar

欢迎界面  index,xml

<script type="text/javascript">
	//跳转到列表页面
	window.location.href = "list.action";
</script>

添加页面addUI.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>
	<h1>添加用户页面</h1>
	<form action="${pageContext.request.contextPath}/add.action" method="post">
		<input type="text" name="model.logname"/><br/>
		<input type="password" name="model.password"/><br/>
		<input type="submit" value="添加"/>
	</form>
</body>
</html

列表页面list.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>
	<h1>添加用户页面</h1>
	<form action="${pageContext.request.contextPath}/add.action" method="post">
		<input type="text" name="model.logname"/><br/>
		<input type="password" name="model.password"/><br/>
		<input type="submit" value="添加"/>
	</form>
</body>
</html>

修改页面 updateUI.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>
	<h1>修改用户页面</h1>
	<form action="${pageContext.request.contextPath }/update.action" method="post">
		<input type="hidden" value="${user.userid }" name="model.userid">
		<input type="text" name="model.logname" value="${user.logname }"/><br/>
		<input type="password" name="model.password" value="${user.password }"/><br/>
		<input type="submit" value="添加"/>
	</form>
</body>
</html>

导入script 

配置好Struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="p1" extends="struts-default">
		<action name="list" class="com.xingxue.crud.web.controller.UserInfoController" method="list">
			<result name="list">
				/WEB-INF/jsps/list.jsp
			</result>
		</action>
		
		<action name="addUI" class="com.xingxue.crud.web.controller.UserInfoController" method="addUI">
			<result name="addUI">
				/WEB-INF/jsps/addUI.jsp
			</result>
		</action>
		
		<action name="add" class="com.xingxue.crud.web.controller.UserInfoController" method="add">
			<result name="toList" type="redirectAction">
				<param name="actionName">list.action</param>
			</result>
		</action>
		
		<action name="del" class="com.xingxue.crud.web.controller.UserInfoController" method="del">
			<result name="del" type="redirectAction">
				<param name="actionName">list.action</param>
			</result>
		</action>
		
		<action name="updateUI" class="com.xingxue.crud.web.controller.UserInfoController" method="updateUI">
			<result name="updateUI">
				/WEB-INF/jsps/upateUI.jsp
			</result>
		</action>
		
		<action name="update" class="com.xingxue.crud.web.controller.UserInfoController" method="update">
			<result name="toList" type="redirectAction">
				<param name="actionName">list.action</param>
			</result>
		</action>
		
	</package>
</struts>

连接数据库

url=jdbc:mysql:///xingxue27
username=root
password=root
driverClassName=com.mysql.jdbc.Driver

util    动作类的  帮助类

package com.xingxue.crud.util;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class ActionUtils {

	/**
	 * 向request 域对象中 放入数据
	 */
	public static void putToRequest(String key, Object value) {
		getRequest().setAttribute(key, value);
	}

	/**
	 * 向request 域对象中 取数据
	 */
	public static void getToRequest(String key) {
		getRequest().getAttribute(key);
	}

	private static HttpServletRequest getRequest() {

		return ServletActionContext.getRequest();
	}


}

util  连接数据库的帮助类

package com.xingxue.crud.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

//jdbc工具类
public class DBUtil {
	
	private static final DataSource DATASOURCE;
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
	static {
		try {
			InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
			Properties p = new Properties();
			p.load(inStream);
			DATASOURCE = DruidDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			throw new ExceptionInInitializerError("jdbc配置文件加载错误!!");
		}
	}
	private DBUtil() {
	}

	/**
	 * 通过连接池获取的连接对象
	 * 
	 * @return
	 */
	public static Connection getConn() {

		try {
			Connection conn = null;
			// 先从线程中取Connection对象
			if (tl.get() == null) {
				conn = DATASOURCE.getConnection();
				// 放入到当前线程中
				tl.set(conn);
			}
			return tl.get();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e.getMessage() + "----创建connection 失败----");
		}
	}

	/**
	 * 开启事务
	 */
	public static void startTransaction() {
		Connection conn = getConn();
		try {
			conn.setAutoCommit(false);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 提交事务
	 */
	public static void commit() {
		try {
			Connection conn = getConn();
			conn.commit();
			conn.close();
			tl.remove();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 事务回滚
	 */
	public static void rollback() {
		try {
			Connection conn = getConn();
			conn.rollback();
			conn.close();
			tl.remove();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 得到数据源对象
	 * 
	 */
	public static DataSource getDataSource() {

		return DATASOURCE;

	}

}

util  加密帮助类

package com.xingxue.crud.util;

import java.security.MessageDigest;

public class MD5Util {

	private MD5Util() {
	}

	public static String md5Encode(String text) {
		// 用于加密的字符
		char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			// 使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
			byte[] btInput = text.getBytes();

			// 信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
			MessageDigest mdInst = MessageDigest.getInstance("MD5");

			// MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
			mdInst.update(btInput);

			// 摘要更新之后,通过调用digest()执行哈希计算,获得密文
			byte[] md = mdInst.digest();

			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) { // i = 0
				byte byte0 = md[i]; // 95
				str[k++] = md5String[byte0 >>> 4 & 0xf]; // 5
				str[k++] = md5String[byte0 & 0xf]; // F
			}

			// 返回经过加密后的字符串
			return new String(str);

		} catch (Exception e) {
			return null;
		}
	}
}

model  跟数据库的名称一致

package com.xingxue.crud.model;

public class UserInfoModel {

	private Long userid;
	private String logname;

	private String password;

	public Long getUserid() {
		return userid;
	}

	public void setUserid(Long userid) {
		this.userid = userid;
	}

	public String getLogname() {
		return logname;
	}

	public void setLogname(String logname) {
		this.logname = logname;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

control  调度室 起一个承上启下的作用

package com.xingxue.crud.web.controller;

import java.util.List;

import com.xingxue.crud.model.UserInfoModel;
import com.xingxue.crud.service.IUserInfoService;
import com.xingxue.crud.service.impl.UserInfoServiceImpl;
import com.xingxue.crud.util.ActionUtils;

public class UserInfoController {

	private static final String LIST = "list";
	private static final String ADDUI = "addUI";
	private static final String TOLIST = "toList";
	private static final String DEL = "del";
	private static final String UPDATEUI = "updateUI";

	private IUserInfoService userInfoService = new UserInfoServiceImpl();

	public UserInfoModel model = new UserInfoModel();

	/**
	 * 响应列表页面的 接口
	 * 
	 * @return list 逻辑视图名称
	 */
	public String list() {
		List<UserInfoModel> users = userInfoService.list();
		ActionUtils.putToRequest("users", users);
		return UserInfoController.LIST;
	}

	/**
	 * 响应添加页面 接口
	 */
	public String addUI() {

		return UserInfoController.ADDUI;
	}

	/**
	 * 响应 添加数据 接口
	 * 
	 * @return
	 */
	public String add() {
		// 1.把 添加页面的数据保存到数据库中
		userInfoService.addUserInfo(model);
		return UserInfoController.TOLIST;
	}

	/**
	 * 删除一个用户
	 * 
	 * @return
	 */
	public String del() {
		userInfoService.deleteUserById(model.getUserid());
		return UserInfoController.DEL;
	}

	/**
	 * 响应修改页面 接口
	 * 
	 * @return
	 */
	public String updateUI() {
		// 查询更新用户的数据
		UserInfoModel user = userInfoService.getUserById(model.getUserid());
		ActionUtils.putToRequest("user", user);
		return UserInfoController.UPDATEUI;
	}

	/**
	 * 更新数据
	 * 
	 * @return
	 */
	public String update() {
		userInfoService.updateUserById(model);
		return UserInfoController.TOLIST;
	}

}

service   接口 这个和Dao层差不多  就是查什么就导入什么  然后再去导下面的方法  最后再去写自己的实现类

package com.xingxue.crud.service;

import java.util.List;

import com.xingxue.crud.model.UserInfoModel;

public interface IUserInfoService {

	/**
	 * 添加用户的业务方法
	 * 
	 * @param model
	 *            页面数据
	 */
	void addUserInfo(UserInfoModel model);

	/**
	 * 获取列表 数据
	 * 
	 * @return List 集合
	 */
	List<UserInfoModel> list();

	void deleteUserById(Long userid);

	UserInfoModel getUserById(Long userid);

	void updateUserById(UserInfoModel model);

}

serviceIMPL   实现类

package com.xingxue.crud.service.impl;

import java.util.List;

import com.xingxue.crud.dao.IUserInfoDao;
import com.xingxue.crud.dao.impl.UserInfoDaoImpl;
import com.xingxue.crud.model.UserInfoModel;
import com.xingxue.crud.service.IUserInfoService;
import com.xingxue.crud.util.DBUtil;

public class UserInfoServiceImpl implements IUserInfoService {

	private IUserInfoDao userInfoDao = new UserInfoDaoImpl();
	
	public void addUserInfo(UserInfoModel model) {
		DBUtil.startTransaction();
		try {
			userInfoDao.insert(model);
		} catch (Exception e) {
			e.printStackTrace();
			DBUtil.rollback();
			return;
		}
		DBUtil.commit();
	}

	@Override
	public List<UserInfoModel> list() {
		DBUtil.startTransaction();
		try {
			return userInfoDao.getAll();
		} catch (Exception e) {
			e.printStackTrace();
			DBUtil.rollback();
		}
		DBUtil.commit();
		return null;
	}

	@Override
	public void deleteUserById(Long userid) {
		DBUtil.startTransaction();
		try {
			userInfoDao.deletById(userid);
		} catch (Exception e) {
			e.printStackTrace();
			DBUtil.rollback();
			return;
		}
		DBUtil.commit();
	}

	@Override
	public UserInfoModel getUserById(Long userid) {
		DBUtil.startTransaction();
		try {
			return userInfoDao.getById(userid);
		} catch (Exception e) {
			e.printStackTrace();
			DBUtil.rollback();
		}
		DBUtil.commit();
		return null;
	}

	@Override
	public void updateUserById(UserInfoModel model) {
		DBUtil.startTransaction();
		try {
			userInfoDao.updateById(model);
		} catch (Exception e) {
			e.printStackTrace();
			DBUtil.rollback();
			return;
		}
		DBUtil.commit();
	}
}

dao  层  主要是数据访问层

package com.xingxue.crud.dao;

import java.util.List;

import com.xingxue.crud.model.UserInfoModel;

public interface IUserInfoDao {

	void insert(UserInfoModel model);

	List<UserInfoModel> getAll();

	void deletById(Long userid);

	UserInfoModel getById(Long userid);

	void updateById(UserInfoModel model);

}

DaoIMPL  实现层    主要是写SQL的

package com.xingxue.crud.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.xingxue.crud.dao.IUserInfoDao;
import com.xingxue.crud.model.UserInfoModel;
import com.xingxue.crud.util.DBUtil;
import com.xingxue.crud.util.MD5Util;

public class UserInfoDaoImpl implements IUserInfoDao {

	private QueryRunner qr = new QueryRunner();

	public void insert(UserInfoModel model) {

		try {
			qr.update(DBUtil.getConn(),//
 "INSERT INTO TB_USERINFO (LOGNAME,PASSWORD)VALUES(?,?)",//
					model.getLogname(),//
					MD5Util.md5Encode(model.getPassword()));//
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public List<UserInfoModel> getAll() {
		try {
			return qr.query(DBUtil.getConn(), //
					"select * from tb_userinfo",//
					new BeanListHandler<UserInfoModel>(UserInfoModel.class) //
					);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

	public void deletById(Long userid) {
		try {
			qr.update(DBUtil.getConn(),//
					"delete from tb_userinfo where userid = ?",//
					userid);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public UserInfoModel getById(Long userid) {
		try {
			return qr.query(DBUtil.getConn(),//
					"select * from tb_userinfo where userid = ?",//
					new BeanHandler<UserInfoModel>(UserInfoModel.class),//
					userid);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

	public void updateById(UserInfoModel model) {
		try {
			qr.update(DBUtil.getConn(), //
					"update tb_userinfo set logname =?,password=? where userid = ?",//
					model.getLogname(),//
					MD5Util.md5Encode(model.getPassword()),//
					model.getUserid());
		} catch (SQLException e) {
			e.printStackTrace();
		}//
	}

}

对了  我们还要配置好web.xml   里面可是设置一进来就访问主页   Struts的过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">

	
	<welcome-file-list>
		<welcome-file>/index.html</welcome-file>
	</welcome-file-list>


	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	
	

</web-app>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值