Hibernate+Maven+Struts2——实现增删查改CURD的步骤详解

Struts2+hibernate实现用户登录和增删改查案例 Struts2+hibernate实现用户登录和增删改查案例 开发工具MyEclipse 10.7.1 创建一个项目 web项目project。 部署好Struts2的开发环境:      1、引入需要的类库文件 jar      2、添加struts2的配置文件 struts.xml    //src路径  :classespath:      3、在web.xml添 阅读详情

首先,让我们来看一下我们要实现的效果图


接下来,上博主的代码架构



接下来直接进入主题:

1.创建数据库的表


2.创建项目

用Eclipse创建一个Maven Project项目

3.导入hibernate相关的架包到项目

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Maven_Hibenate01</groupId>
  <artifactId>Maven_Hibenate01</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Maven_Hibenate01 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
  		<argLine>-Dfile.encoding=UTF-8</argLine>
  </properties>
  
  <dependencies>
	    <dependency>
	         <groupId>junit</groupId>
	         <artifactId>junit</artifactId>
	         <version>4.12</version>
	         <scope>test</scope>
	    </dependency>
	    <!-- 加入Servlet依赖 -->
	    <dependency>
	    	<groupId>javax.servlet</groupId>
	    	<artifactId>javax.servlet-api</artifactId>
	    	<version>3.1.0</version>
	    	<scope>provided</scope>
		</dependency>
		
		<!-- 加入hibernate依赖 -->
		<dependency>
	   		<groupId>org.hibernate</groupId>
	   		<artifactId>hibernate-core</artifactId>
	   		<version>5.2.10.Final</version>
		</dependency>
	
		<!-- 加入Struts2依赖 -->
		<dependency>
	    	<groupId>org.apache.struts</groupId>
	    	<artifactId>struts2-core</artifactId>
	    	<version>2.5.12</version>
		</dependency>
		<dependency>
	    	<groupId>org.apache.struts</groupId>
	    	<artifactId>struts2-convention-plugin</artifactId>
	    	<version>2.5.12</version>
		</dependency>
	
		 <!--json-lib依赖-->  
		<dependency>  
		    <groupId>net.sf.json-lib</groupId>  
		    <artifactId>json-lib</artifactId>  
		    <version>2.4</version>  
		    <classifier>jdk15</classifier>  
		</dependency>
		
		<!-- 加入MySQL依赖 -->
		<dependency>
	   		<groupId>mysql</groupId>
	   		<artifactId>mysql-connector-java</artifactId>
	   		<version>5.1.18</version>
		</dependency>
	    
	    
  </dependencies>
  
  <build>
    <finalName>Maven_Hibenate01</finalName>
  </build>
</project>

 4.配置hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
            <!--  配置数据库的连接信息 -->
            <property name="connection.username">root</property>
            <property name="connection.password">123</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=utf8</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            
            <!-- 关联映射文件 -->
            <mapping resource="com/yhl/entity/User.hbm.xml"/>
    
    </session-factory>
</hibernate-configuration>

5.创建实体类User.java和映射文件 User.hbm.xml(映射文件和实体对象必须在同一个包下)

package com.yhl.entity;

public class User {
	   private int u_id;//编号
	   private String u_name;//用户名
	   private String u_sex;//性别
	   
	   public User() {
		
	   }
	   public User(int u_id) {
		   this.u_id = u_id;
	   }
	   public User(String u_name, String u_sex) {
		   super();
		   this.u_name = u_name;
		   this.u_sex = u_sex;
	   }
	   public User(int u_id, String u_name, String u_sex) {
		   this.u_id = u_id;
		   this.u_name = u_name;
		   this.u_sex = u_sex;
	   }
	   
	   public int getU_id() {
		   return u_id;
	   }
	   public void setU_id(int u_id) {
		   this.u_id = u_id;
	   }
	   public String getU_name() {
		   return u_name;
	   }
	   public void setU_name(String u_name) {
		   this.u_name = u_name;
	   }
	   public String getU_sex() {
		   return u_sex;
	   }
	   public void setU_sex(String u_sex) {
		   this.u_sex = u_sex;
	   }   
	   
}


6.写Dao层

接口UserDao.java

package com.yhl.dao;

import java.util.List;
import com.yhl.entity.User;

public interface UserDao {

	/**
	 * 查询所有
	 */
	public List<User> getAll();
	
	/**
	 * 添加一行信息
	 */
	public int AddUser(User user);
	
	/**
	 * 根据ID删除一行信息
	 */
	public int DeleteUser(int u_id);
	
	/**
	 * 修改用户信息
	 */
	public int UpadteUser(User user);
}
实现类UserDaoImp.java
package com.yhl.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.yhl.entity.User;

public class UserDaoImp implements UserDao{
	
	
    private Configuration configuration;//1.实例化配置对象 加载映射文件hibernate.cfg.xml
	private SessionFactory sessionFactory;//2.创建会话工厂
	private Session session;//3.创建会话
	private Transaction transaction;//4.开启事务
	
	/**
	 * 查看所有
	 */
	public List<User> getAll() {
			 configuration = new Configuration().configure();
			 sessionFactory = configuration.buildSessionFactory();
			 session = sessionFactory.openSession();
			 transaction = session.beginTransaction();
			 //查询所有
		     List<User> list=session.createCriteria(User.class).list();
			 //提交事物
	    	 transaction.commit();
	    	 session.close();
	    	 sessionFactory.close();
		     return list;
	}

	/**
	 * 添加
	 */
	public int AddUser(User user) {
		   configuration = new Configuration().configure();
		   sessionFactory = configuration.buildSessionFactory();
		   session = sessionFactory.openSession();
		   transaction = session.beginTransaction();
		   //添加一行信息
		   User users=new User(user.getU_name(), user.getU_sex());
		   Serializable Serializable = session.save(users);
	       int a=(Integer) Serializable;
	       System.out.println(a);
		   //提交事物
	   	   transaction.commit();
	       session.close();
	   	   sessionFactory.close();
		   return 0;
	}

	/**
	 * 删除
	 */
	public int DeleteUser(int uid) {
		   configuration = new Configuration().configure();
		   sessionFactory = configuration.buildSessionFactory();
		   session = sessionFactory.openSession();
		   transaction = session.beginTransaction();
		   //删除一行信息
		   User user=new User();
		   user.setU_id(uid);
		   session.delete(user);
		   //提交事物
	   	   transaction.commit();
	   	   session.close();
	   	   sessionFactory.close();
		   return 0;
	}

	/**
	 * 修改
	 */
	public int UpadteUser(User user) {
		   configuration = new Configuration().configure();
		   sessionFactory = configuration.buildSessionFactory();
		   session = sessionFactory.openSession();
		   transaction = session.beginTransaction();
		   //修改
		   User users=session.get(User.class, user.getU_id());
		   users.setU_name(user.getU_name());
		   users.setU_sex(user.getU_sex());
		   session.update(users);
		   //提交事物
	       transaction.commit();
	       session.close();
	   	   sessionFactory.close();
		   return 0;
	}
}

7.写Action

package com.yhl.action;

import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.yhl.dao.UserDao;
import com.yhl.dao.UserDaoImp;

import net.sf.json.JSONArray;

public class GetAllUserAtion extends ActionSupport{
		@Override
		public String execute(){
			   System.out.println("查看所有的Ation进来了。。。。。。");
			   UserDao userDao=new UserDaoImp();
			   try {
				     HttpServletResponse resp = ServletActionContext.getResponse();
				     resp.setContentType("text/html;charset=UTF-8");
				     JSONArray jsonArray=JSONArray.fromObject(userDao.getAll());
					 PrintWriter pw;
					 pw = resp.getWriter();
					 pw.write(jsonArray.toString());
					 pw.close();
			   } catch (Exception e) {
					 e.printStackTrace();
			   }
			   return null;
		}
	
	
}
package com.yhl.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.yhl.dao.UserDao;
import com.yhl.dao.UserDaoImp;
import com.yhl.entity.User;

public class AddAction extends ActionSupport{
	 HttpServletResponse resp=ServletActionContext.getResponse();
	 HttpServletRequest req=ServletActionContext.getRequest();
     UserDao dao=new UserDaoImp();
	 
     private int u_id;
     private String u_name;
     private String u_sex;
     
     @Override
	 public String execute() throws Exception {
    	    resp.setContentType("text/html; charset=UTF-8");
		    req.setCharacterEncoding("UTF-8");
		    dao.AddUser(new User(u_id, u_name, u_sex));
		    return null;
	 }
	
     public int getU_id() {
    	 return u_id;
     }
     public void setU_id(int u_id) {
    	 this.u_id = u_id;
     }
     public String getU_name() {
    	 return u_name;
     }
     public void setU_name(String u_name) {
    	 this.u_name = u_name;
     }
     public String getU_sex() {
    	 return u_sex;
     }
     public void setU_sex(String u_sex) {
    	 this.u_sex = u_sex;
     }
    
}
package com.yhl.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.yhl.dao.UserDao;
import com.yhl.dao.UserDaoImp;

public class DeleteAction extends ActionSupport{
	   HttpServletResponse resp=ServletActionContext.getResponse();
	   HttpServletRequest req=ServletActionContext.getRequest();
       UserDao dao=new UserDaoImp();
     
	   private int u_id;
	   @Override
	   public String execute() throws Exception {
			System.out.println("删除的Action进来了。。。。。。");
			 resp.setContentType("text/html; charset=UTF-8");
			 req.setCharacterEncoding("UTF-8");
			 System.out.println(u_id);
			 dao.DeleteUser(u_id);
			 return null;
	   }
	
		public int getU_id() {
			return u_id;
		}
		public void setU_id(int u_id) {
			this.u_id = u_id;
		}
	
}
package com.yhl.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.yhl.dao.UserDao;
import com.yhl.dao.UserDaoImp;
import com.yhl.entity.User;

public class UpdateAction extends ActionSupport {
	   HttpServletResponse resp=ServletActionContext.getResponse();
	   HttpServletRequest req=ServletActionContext.getRequest();
       UserDao dao=new UserDaoImp();
     
       private int u_id;
       private String u_name;
       private String u_sex;
       @Override
       public String execute() throws Exception {
    	   System.out.println("修改的Action进来了。。。。。。");
    	   resp.setContentType("text/html; charset=UTF-8");
    	   req.setCharacterEncoding("UTF-8");
    	   dao.UpadteUser(new User(u_id, u_name, u_sex));
    	   return null;
       }
	
       public int getU_id() {
    	   return u_id;
       }
       public void setU_id(int u_id) {
    	   this.u_id = u_id;
       }
       public String getU_name() {
    	   return u_name;
       }
       public void setU_name(String u_name) {
    	   this.u_name = u_name;
       }
       public String getU_sex() {
    	   return u_sex;
       }
       public void setU_sex(String u_sex) {
    	   this.u_sex = u_sex;
       }
}

8.写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>
      <!-- 打开方法的动态调用 -->
 	  <constant name="struts.enable.DynamicMethodInvocation" value="true" />
	     <package name="mupackage" namespace="/" extends="struts-default">
		       <action name="selectuser" class="com.yhl.action.GetAllUserAtion"></action>
		       <action name="adduser" class="com.yhl.action.AddAction"></action>
		       <action name="deltetuser" class="com.yhl.action.DeleteAction"></action>
		       <action name="updateuser" class="com.yhl.action.UpdateAction"></action>
	     </package>
</struts>

9.配置web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <!-- Struts2核心过滤器配置 -->
  	<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>

10.写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>Hibenate+Struts2+Maven+EasyUI实现增删查改</title>

<!-- 引入easyui库 -->
<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">   
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
<script type="text/javascript" src="easyui/jquery.min.js"></script> 
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script> 
<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>

<script type="text/javascript">
var DBindex;
 $(function(){
	$('#dg').datagrid({    
	    url:'selectuser.action',
	    loadMsg:'正在拼命加载中...',
	    columns:[[    
	        {field:'u_id',title:'编号',width:100,align:'center'},    
	        {field:'u_name',title:'用户名',width:100,align:'center',"editor":{type:'validatebox'}},  
	        {field:'u_sex',title:'性别',width:100,align:'center',"editor":{type:'validatebox'}},
	    ]],onDblClickRow:function(index,row){
	    	DBindex=index;
	    	$('#dg').datagrid('beginEdit',index); 	
		  },onClickRow:function(index,row){
			  DBindex=index;
		  },toolbar: [{
			iconCls: 'icon-add',
			text:"添加",
			handler: function(){
				DBindex=0;
				$('#dg').datagrid('insertRow',{
					index:0,	// 索引从0开始
					row: {}
				});
				$('#dg').datagrid('beginEdit',0);
			}
		},'-',{
			iconCls: 'icon-remove',
			text:"删除",
			handler: function(){
				var row=$('#dg').datagrid("getRows")[DBindex];
				if(row!=null){
					var u_id=row["u_id"];
					$.post("deltetuser.action",
							{"u_id":u_id},
							function(data){
								$('#dg').datagrid('reload');
							});
				}
			}
		},'-',{
			iconCls: 'icon-save',
			text:"保存",
			handler: function(){
				$('#dg').datagrid('endEdit',DBindex); 
				var row=$('#dg').datagrid("getRows")[DBindex]; 
				if(row!=null){
					var u_name=row["u_name"];
					var u_sex=row["u_sex"];
					$.post("adduser.action",
							{"u_name":u_name,"u_sex":u_sex},
							function(data){
								$('#dg').datagrid('reload');
							});
			     }
				
			}
		},'-',{
			iconCls: 'icon-edit',
			text:"修改",
			handler: function(){
				$('#dg').datagrid('endEdit',DBindex); 
				var row=$('#dg').datagrid("getRows")[DBindex]; 
				if(row!=null){
					var u_id=row["u_id"];
					var u_name=row["u_name"];
					var u_sex=row["u_sex"];
					$.post("updateuser.action",
							{"u_id":u_id,"u_name":u_name,"u_sex":u_sex},
							function(data){
								$('#dg').datagrid('reload');
							});
			     }
				
			}
		}]

	});  
});
</script>
</head>


<body>
	<table id="dg" style="width:301px;height:500px"></table> 
</body>
</html>


附:EasyUI下载地址







Maven搭建Spring+Struts2+Hibernate项目详解 前言        这篇主要采用Maven搭建Spring+Struts2+Hibernate的整合项目,复习一下SSH框架,虽然spring提供自己的MVC框架,但是Spring也提供和其他框架的无缝整合,采用组件形式对个框架进行管理,项目实例是按照真实企业里面的开发搭建,也是web的最后一片了。数据库使用mysql,连接池使用的是Druid数据源(这些都无关紧要,可以随时的替换),下面就将详 阅读详情

相关推荐

spring+springmvc+hibernate框架实现单表增删改查、条件查询和分页、文件上传

适用于初学者理解spring、springmvc、hibernate,使用oracle数据库,实现单表增删改查、条件查询和分页、文件上传

Struts2+Hibernate整合应用开发步骤

Struts2+Hibernate的整合。 其实就七个步骤: 第一步:添加所需的jar包。 第二步:创建实体类以及对应的映射文件。 第三步:配置hibernate.cfg.xml配置文件。 第四步:配置struts.xml配置文件。 第五步:创建相应的action。 第六步:在web.xml中配置启动Struts2框架的过滤器。 第七步:编写JSP显

u010916316的专栏 802

Struts2+hibernate4+layui+mysql简单的网站后台管理系统

Struts2+hibernate4+layui+mysql简单的网站后台管理系统 项目描述 简单的网站后台管理系统 运行环境 jdk7+tomcat7+mysql+myeclipse 项目技术(必填) struts2+hibernate4+layui+jquery+jstl 数据库文件 src根目录下struts.sql jar包文件 链接: https://pan.baidu.com/s/1qNkWrWmAk44sh8JHZE1RIw 密码: wt5n

Struts+Hibernate:一个简单的注册界面

实验目的:利用Struts 1.x和Hibernate框架,实现注册功能。即在Web界面上输入学号,用户名和密码,存入MySQL数据库中。 注:此实验是基于struts1.x框架下(含有Action,ActionForm和jsp) 使用软件:MySQL 8.0及以上版本,Navicat 12,MyEclipse2017 相关参数 数据库名:login_database 表名:people 字段名:id,stdnumber,name,password 具体流程 1、新建Web Project项目,并在该项

Yua_H的博客 1313

全套EasyUI示例源码 百度网盘链接 详细

一整套EasyUI的示例源码,三十几个组件全部包括在内.学习 详细 转载

sping+hibernate+struts2增删改查

北大青鸟!所属!

用Idea 开发一个简单的Struts2+Maven+Hibernate 项目的流程

本文整理了用Idea Intellij 开发一个综合运用Strut 2, Maven 和Hibernate 项目的流程,并在步骤中对比了此项目技术相对于Servlet、手动添加Jar 和JDBC 的优势,还记录了一些可能出现问题的坑,最后总结项目收到请求后的执行过程。源码地址 (优快云 下载需要积分,欢迎支持):http://download.youkuaiyun.com/download/rock154/...

rock154的博客 1320

struts + hibernate + spring demo

struts + hibernate + spring demo http://knight-black-bob.iteye.com/blog/2262251

使用Spring、Struts2、Hibernate三大框架实现用户增删改查

这就是SSH框架内容很多,随着下面一个案例来进入分析: 1 首先项目是依赖maven进行管理的,创建一个动态的web项目 2 在pom.xml导入相关jar包,配置如下: &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

an-ping的博客 3493

Struts2+Spring3+Hibernate4+Maven+EasyUI+mysql 源代码整合入门

Struts2+Spring3+Hibernate4+Maven+EasyUI+mysql +jar包 源代码 测试可运行 的 带mysql数据库 改自孙宇的实例 EasyUI 实现 日历 运行,请先注册 jar包在target\sshe-0.0.1-SNAPSHOT\WEB-INF\lib

maven整合spring、struts2、mybatis实现简单增删改查

基于maven整合spring、struts2、mybatis实现简单增删改查,sql文件放在 resoutces/db目录下

亮剑Java(3/3)

序号 内容 备注 1. Struts2(Struts2 servlet API,Struts2与form表单交互,模型驱动ModelDriver,OGNL拦截器、国际化) 2. hibernate(了解hibernate概念、配置文件与映射文件,基本的增删改查,“一对一 一对多 3. Spring(框架概念,掌握IOC、DI及配置,三种方式装配Bean,作用域与生命周期,...

milegemiao的博客 201

Struts2实现CRUD(增删改查)Maven版

Struts2实现CRUD(增 删 改 查) Maven版; eclipse直接导入使用; 教程地址:http://blog.youkuaiyun.com/sky_zhangfan/article/details/1896842

ssh框架的整合

SSH框架整合 Struts2、Spring、Hibernate框架整合的框架简称:SSH   三大框架的分工: Struts2 负责表示层(也叫View层或Web层)。 Spring 负责业务逻辑层(Service层)。 Hibernate 负责数据访问层(也叫持久层或Dao层)。   SSH框架最主要的本质是:“高内聚、低耦合”。   在SSH中使用Struts2是作为系统的...

qq_40676088的博客 333

struts2+hibernate整合 练习之CURD 完整版

一个完整struts2+hibernate整合 练习之CURD 完整版,带说明名书,需求分析,适合初学者的练习

ENSP Pro VXLAN EVPN分布式网关部署配置

在BGP EVPN方式部署分布式网关的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。该方式实现的功能全面,支持主机IP路由通告、主机MAC地址通告、主机ARP通告,可以直接使能ARP广播抑制功能。如果在VXLAN网络中采用分布式网关,推荐使用此方式。对比集中式网关,分布式网关的arp条目比集中式网关的arp条目少,分布式网关只学习租户侧的arp条目,不学习网络侧的arp条目。

qq2353177176的博客 4559

亮剑Java(总)

总体三个阶段:进度(60%+60%+5%) 1.Java基础与提升 —进度(60%); 2.JavaWeb练习—进度(60%); 3.Java框架SSH、SSM—进度(5%) 阶段一:基础与提升—进度(60%) |分项 | 内容 |进度|备注| |-1-|-Java入门(Java简介、dos常用命令、jdk环境安装配置、Java入门程序等)-|80%|还可以| | left-aligned | ...

milegemiao的博客 372

特性阻抗 – SI/PI 世界碰撞的地方

除了谐振零点和峰值外,在一定频率下,传输线的阻抗看起来像远端开路时的电容器的阻抗,也看起来像远端短路时电感的阻抗。如果随后的制造变化将测得的阻抗推到 -10% 容差的低端(例如 44 欧姆)的测量区域内,那么如果在初始下降时测量,则真正的特性阻抗将在 42 欧姆时降低 5%,并且超出规格。这意味着,当我们测量红色或蓝色图的峰和相邻谷之间的中间阻抗时,它是该频率下传输线的特性阻抗。图 7 远端开路时(红色常亮)与远端短路时(蓝色常亮)的电感和电容抗阻抗与频率的关系(上图)和传输线的阻抗与频率(下图)的对比。

jkh920184196的博客 962

idea中Maven环境Spring+Hibernate+Struts2整合(注解版)

SSH整合 注解版本 架构: 1.jar包 [java] view plain copy "http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"            xsi:schem

初学者 2778

STM32与HT7038的高精度电能计量系统设计与实现

本文详细介绍了基于STM32微控制器与HT7038三相电能计量芯片的高精度电能计量系统设计与实现。文章从项目选型出发,深入剖析了硬件电路设计、SPI驱动开发、芯片校准及系统集成等关键环节,为智能电表、能源监控等应用提供了高性价比且稳定的国产化解决方案。

pytorch8learner的博客 389

3.1使用Python读取excel的二维数据

要使用 Python 读取 Excel 的二维数据,可以使用 openpyxl 或 pandas 库。

kenshin1980的专栏 1032
上一篇: 学会BootStrap这一篇文章就够了
下一篇: 学习Struts2
_北冥有鱼_
博客等级 码龄10年 41粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值