SpringBoot+Jpa+Thymeleaf实现增删改查
这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例。
1、pom依赖
pom 包里面添加Jpa
和 Thymeleaf
的相关包引用
< 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 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion> 4.0.0 modelVersion>
< parent>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-parent artifactId>
< version> 2.1.0.RELEASE version>
parent>
< groupId> com.example groupId>
< artifactId> spring-boot-jpa-thymeleaf-curd artifactId>
< version> 0.0.1-SNAPSHOT version>
< name> spring-boot-jpa-thymeleaf-curd name>
< description> spring-boot-jpa-thymeleaf-curd description>
< properties>
< java.version> 1.8 java.version>
properties>
< dependencies>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-web artifactId>
dependency>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-thymeleaf artifactId>
dependency>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-data-jpa artifactId>
dependency>
< dependency>
< groupId> mysql groupId>
< artifactId> mysql-connector-java artifactId>
dependency>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-devtools artifactId>
< optional> true optional>
dependency>
dependencies>
< build>
< plugins>
< plugin>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-maven-plugin artifactId>
< configuration>
< fork> true fork>
configuration>
plugin>
plugins>
build>
project>
2、application.properties中添加配置
spring.datasource.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.thymeleaf.cache=false
其中propertiesspring.thymeleaf.cache=false
是关闭 Thymeleaf 的缓存,不然在开发过程中修改页面不会
立刻生效需要重启,生产可配置为 true。
在项目 resources
目录下会有两个文件夹:static
目录用于放置网站的静态内容如 css
、js
、图片
;
templates
目录用于放置项目使用的页面模板。
3、启动类
启动类需要添加 Servlet 的支持
package com. example ;
import org. springframework. boot. SpringApplication ;
import org. springframework. boot. autoconfigure. SpringBootApplication ;
import org. springframework. boot. builder. SpringApplicationBuilder ;
import org. springframework. boot. web. servlet. support. SpringBootServletInitializer ;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure ( SpringApplicationBuilder application) {
return application. sources ( Application . class ) ;
}
public static void main ( String [ ] args) throws Exception {
SpringApplication . run ( Application . class , args) ;
}
}
4、数据库层代码
实体类映射数据库表
package com. example. model ;
import javax. persistence. Column ;
import javax. persistence. Entity ;
import javax. persistence. GeneratedValue ;
import javax. persistence. Id ;
@Entity
public class User {
@Id
@GeneratedValue
private long id;
@Column ( nullable = false , unique = true )
private String userName;
@Column ( nullable = false )
private String password;
@Column ( nullable = false )
private int age;
public long getId ( ) {
return id;
}
public User setId ( long id) {
this . id = id;
return this ;
}
public String getUserName ( ) {
return userName;
}
public User setUserName ( String userName) {
this . userName = userName;
return this ;
}
public String getPassword ( ) {
return password;
}
public User setPassword ( String password) {
this . password = password;
return this ;
}
public int getAge ( ) {
return age;
}
public User setAge ( int age) {
this . age = age;
return this ;
}
}
5、 JpaRepository
package com. example. repository ;
import com. example. model. User ;
import org. springframework. data. jpa. repository. JpaRepository ;
public interface UserRepository extends JpaRepository < User , Long > {
User findById ( long id) ;
void deleteById ( Long id) ;
}
继承 JpaRepository 类会自动实现很多内置的方法,包括增删改查,也可以根据方法名来自动生成相关 Sql。
6、业务层处理
Service 调用 Jpa 实现相关的增删改查,实际项目中 Service 层处理具体的业务代码。
package com. example. service ;
import com. example. model. User ;
import java. util. List ;
public interface UserService {
public List < User > getUserList ( ) ;
public User findUserById ( long id) ;
public void save ( User user) ;
public void edit ( User user) ;
public void delete ( long id) ;
}
package com. example. service. impl ;
import com. example. model. User ;
import com. example. repository. UserRepository ;
import com. example. service. UserService ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
import java. util. List ;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public List < User > getUserList ( ) {
return userRepository. findAll ( ) ;
}
@Override
public User findUserById ( long id) {
return userRepository. findById ( id) ;
}
@Override
public void save ( User user) {
userRepository. save ( user) ;
}
@Override
public void edit ( User user) {
userRepository. save ( user) ;
}
@Override
public void delete ( long id) {
userRepository. deleteById ( id) ;
}
}
7、控制层
package com. example. web ;
import com. example. model. User ;
import com. example. service. UserService ;
import org. springframework. stereotype. Controller ;
import org. springframework. ui. Model ;
import org. springframework. web. bind. annotation. RequestMapping ;
import javax. annotation. Resource ;
import java. util. List ;
@Controller
public class UserController {
@Resource
UserService userService;
@RequestMapping ( "/" )
public String index ( ) {
return "redirect:/list" ;
}
@RequestMapping ( "/list" )
public String list ( Model model) {
List < User > users = userService. getUserList ( ) ;
model. addAttribute ( "users" , users) ;
return "user/list" ;
}
@RequestMapping ( "/toAdd" )
public String toAdd ( ) {
return "user/userAdd" ;
}
@RequestMapping ( "/add" )
public String add ( User user) {
userService. save ( user) ;
return "redirect:/list" ;
}
@RequestMapping ( "/toEdit" )
public String toEdit ( Model model, Long id) {
User user = userService. findUserById ( id) ;
model. addAttribute ( "user" , user) ;
return "user/userEdit" ;
}
@RequestMapping ( "/edit" )
public String edit ( User user) {
userService. edit ( user) ;
return "redirect:/list" ;
}
@RequestMapping ( "/delete" )
public String delete ( Long id) {
userService. delete ( id) ;
return "redirect:/list" ;
}
}
Controller 负责接收请求,处理完后将页面内容返回给前端。
8、页面内容
list 列表 list.html
DOCTYPE html >
< html lang = " en" xmlns: th= " http://www.thymeleaf.org" >
< head>
< meta charset = " UTF-8" />
< title> userList title>
< link rel = " stylesheet" th: href= " @{/css/bootstrap.css}" > link>
head>
< body class = " container" >
< br/>
< h1> 用户列表 h1>
< br/> < br/>
< div class = " with:80%" >
< table class = " table table-hover" >
< thead>
< tr>
< th> # th>
< th> User Name th>
< th> Password th>
< th> Age th>
< th> Edit th>
< th> Delete th>
tr>
thead>
< tbody>
< tr th: each= " user : ${users}" >
< th scope = " row" th: text= " ${user.id}" > 1 th>
< td th: text= " ${user.userName}" > neo td>
< td th: text= " ${user.password}" > Otto td>
< td th: text= " ${user.age}" > 6 td>
< td> < a th: href= " @{/toEdit(id=${user.id})}" > edit a> td>
< td> < a th: href= " @{/delete(id=${user.id})}" > delete a> td>
tr>
tbody>
table>
div>
< div class = " form-group" >
< div class = " col-sm-2 control-label" >
< a href = " /toAdd" th: href= " @{/toAdd}" class = " btn btn-info" > add a>
div>
div>
body>
html>
访问http://localhost:8080/
,效果如下图所示:
这里会从 Controler 层 model set 的对象去获取相关的内容,th:each
表
示会循环遍历对象内容。
点击Add
按钮会跳转到新增页面。
新增页面 userAdd.html
DOCTYPE html >
< html lang = " en" xmlns: th= " http://www.thymeleaf.org" >
< head>
< meta charset = " UTF-8" />
< title> user title>
< link rel = " stylesheet" th: href= " @{/css/bootstrap.css}" > link>
head>
< body class = " container" >
< br/>
< h1> 添加用户 h1>
< br/> < br/>
< div class = " with:80%" >
< form class = " form-horizontal" th: action= " @{/add}" method = " post" >
< div class = " form-group" >
< label for = " userName" class = " col-sm-2 control-label" > userName label>
< div class = " col-sm-10" >
< input type = " text" class = " form-control" name = " userName" id = " userName" placeholder = " userName" />
div>
div>
< div class = " form-group" >
< label for = " password" class = " col-sm-2 control-label" > Password label>
< div class = " col-sm-10" >
< input type = " password" class = " form-control" name = " password" id = " password" placeholder = " Password" />
div>
div>
< div class = " form-group" >
< label for = " age" class = " col-sm-2 control-label" > age label>
< div class = " col-sm-10" >
< input type = " text" class = " form-control" name = " age" id = " age" placeholder = " age" />
div>
div>
< div class = " form-group" >
< div class = " col-sm-offset-2 col-sm-10" >
< input type = " submit" value = " Submit" class = " btn btn-info" />
< input type = " reset" value = " Reset" class = " btn btn-info" />
div>
div>
form>
div>
body>
html>
填写数据并且点击Submit
按钮,用户添加成功并且跳转到用户列表页面。
点击edit
按钮跳转到用户修改页面。
修改页面 userEdit.html
DOCTYPE html >
< html lang = " en" xmlns: th= " http://www.thymeleaf.org" >
< head>
< meta charset = " UTF-8" />
< title> user title>
< link rel = " stylesheet" th: href= " @{/css/bootstrap.css}" > link>
head>
< body class = " container" >
< br/>
< h1> 修改用户 h1>
< br/> < br/>
< div class = " with:80%" >
< form class = " form-horizontal" th: action= " @{/edit}" th: object= " ${user}" method = " post" >
< input type = " hidden" name = " id" th: value= " *{id}" />
< div class = " form-group" >
< label for = " userName" class = " col-sm-2 control-label" > userName label>
< div class = " col-sm-10" >
< input type = " text" class = " form-control" name = " userName" id = " userName" th: value= " *{userName}" placeholder = " userName" />
div>
div>
< div class = " form-group" >
< label for = " password" class = " col-sm-2 control-label" > Password label>
< div class = " col-sm-10" >
< input type = " password" class = " form-control" name = " password" id = " password" th: value= " *{password}" placeholder = " Password" />
div>
div>
< div class = " form-group" >
< label for = " age" class = " col-sm-2 control-label" > age label>
< div class = " col-sm-10" >
< input type = " text" class = " form-control" name = " age" id = " age" th: value= " *{age}" placeholder = " age" />
div>
div>
< div class = " form-group" >
< div class = " col-sm-offset-2 col-sm-10" >
< input type = " submit" value = " Submit" class = " btn btn-info" />
< a href = " /toAdd" th: href= " @{/list}" class = " btn btn-info" > Back a>
div>
div>
form>
div>
body>
html>
修改用户的年龄为100然后点击Submit
按钮提交修改。
然后跳转到用户列表页面发现数据修改了。
可以点击delete
按钮删除用户。
删除之后跳转到用户列表页面。
这样一个使用 Jpa 和 Thymeleaf 的增删改查示例就完成了。
你可能感兴趣的:(spring,boot,spring,boot)
spring boot、spring cloud、spring cloud alibaba 之间的版本对应关系
薄荷街的兔比先生
spring boot spring cloud java
大家在引用pom的时候还是要以官方推荐版本为主,不然容易出现未知的问题。1.springboot和springcloud的版本关系官方提供的版本对照表https://start.spring.io/actuator/info{"git":{"branch":"93e528fc7e79e41a513e493d057499401a15eb67","commit":{"id":"93e528f","ti
SpringBoot + vue 管理系统
m0_74825565
面试 学习路线 阿里巴巴 spring boot vue.js 后端
SpringBoot+vue管理系统文章目录SpringBoot+vue管理系统1、成品效果展示2、项目准备3、项目开发3.1、部门管理3.1.1、前端核心代码3.1.2、后端代码实现3.2、员工管理3.2.1、前端核心代码3.2.2、后端代码实现3.3、班级管理3.3.1、前端核心代码3.3.2、后端代码实现3.4、学生管理3.4.1、前端核心代码3.4.2、后端代码实现3.5、数据统计3.5.
Spring 核心技术解析【纯干货版】- XII:Spring 数据访问模块 Spring-R2dbc 模块精讲
m0_74825003
面试 学习路线 阿里巴巴 spring java 后端
在现代应用架构中,高并发、低延迟的需求推动了响应式编程的发展,而传统的JDBC由于其同步阻塞机制,在高吞吐场景下可能成为瓶颈。R2DBC(ReactiveRelationalDatabaseConnectivity)作为响应式关系型数据库访问标准,正是为了解决这一问题而诞生的。SpringR2DBC作为Spring生态对R2DBC的封装,提供了非阻塞、异步的数据库访问能力,并与SpringWebF
Spring Boot的项目结构
m0_74823983
面试 学习路线 阿里巴巴 spring boot 后端 java
SpringBoot的项目结构技术背景SpringBoot项目结构遵循Maven或Gradle的标准目录结构,同时融入了SpringBoot的特定约定。良好的项目结构不仅有助于代码组织,还能提高开发效率和项目可维护性。了解SpringBoot的项目结构对于开发高质量的应用至关重要。1.基础项目结构1.1标准目录结构基本的SpringBoot项目结构如下:myproject/├──src/│├──m
Spring Cloud Alibaba Spring Cloud Spring Boot 版本对应关系
马丁半只瞄
java spring spring boot spring cloud
版本不对应可能有以下报错:Failedtobindpropertiesundermybatis-plus.configuration.result-maps[0]NoClassDefFoundError:reactor/netty/http/server/WebsocketServerSpec$Builderreactor.netty.resources.ConnectionProvider.el
Spring Boot@Component注解下的类无法@Autowired的问题
Micrle_007
springboot Spring
这个问题心累(确实)在把我的一个非Web程序迁移从Spring迁移到SpringBoot时,出现了在@Component注解下@Autowired的类为null的情况,也就是没注入成功,或者说是此类在bean加载之前就被调用了。试了各种办法,修改扫描包,修改@Component注解等等,皆未成功,后来看到了一个方法,探究了一下。@ComponentpublicclassComponentClass
spring cloud alibaba版本对应表(2024/6/26)
翻身仗
spring cloud spring boot 中间件
毕业版本依赖关系(推荐使用)由于SpringBoot3.0,SpringBoot2.7~2.4和2.4以下版本之间变化较大,目前企业级客户老项目相关SpringBoot版本仍停留在SpringBoot2.4以下,为了同时满足存量用户和新用户不同需求,社区以SpringBoot3.0和2.4分别为分界线,同时维护2022.x、2021.x、2.2.x三个分支迭代。如果不想跨分支升级,如需使用新特性,
Spring Bean 的生命周期全过程
2401_85327573
spring java 后端
SpringBean的生命周期是指从Bean的创建到销毁的整个过程。在这个过程中,Spring容器会按照一系列固定的步骤对Bean进行初始化、配置、使用和销毁。了解SpringBean的生命周期可以帮助我们更好地理解和使用Spring框架,尤其是通过自定义生命周期行为来实现特定功能。以下是SpringBean生命周期的全过程,按阶段详细说明:---###**1.实例化(Instantiation)
Spring Boot @Component注解介绍
CnLg.NJ
Java spring boot 后端 java
@Component是Spring中的一个核心注解,用于声明一个类为Spring管理的组件(Bean)。它是一个通用的注解,可以用于任何层次的类(如服务层、控制器层、持久层等)。通过@Component注解,Spring会自动检测并注册该类为一个Bean,从而实现依赖注入和生命周期管理。1.@Component的作用@Component是一个元注解,它本身被@Configuration、@Serv
一个基于 React + SpringBoot 的在线多功能问卷系统(附源码)
程序员-李旭亮
Java项目源码 react.js spring boot 前端
简介:一个基于React+SpringBoot的在线多功能问卷系统前端技术栈:React、React-Router、Webpack、Antd、Zustand、Echarts、DnDKit后端技术栈:SpringBoot、MySQL、MyBatisPlus、Redis项目源码下载链接:https://pan.quark.cn/s/2e32786e0c61部分页面静态预览:主要前端业务需求与技术突破:
Java与Spring的“甜蜜毒药”:从辉煌到疲态的技术反思
步子哥
java spring python
“Java生态就像一场漫长的婚姻,Spring是那个看似完美的伴侣,但当你意识到对方的控制欲时,已经为TA背上了巨额房贷。”Java,这位曾经的企业级开发之王,如今却像一位中年危机的技术巨人,站在2023年的技术浪潮中,显露出疲态。而Spring,这个曾经被誉为“轻量级救世主”的框架,早已从灵活的工具箱变成了沉重的枷锁。今天,我们就来聊聊这对技术界的“黄金搭档”,如何从蜜月期走向了“分居边缘”。Ⅰ
Spring Boot 集成 Kafka
m0_74823471
面试 学习路线 阿里巴巴 spring boot kafka linq
在现代软件开发中,分布式系统和微服务架构越来越受到关注。为了实现系统之间的异步通信和解耦,消息队列成为了一种重要的技术手段。Kafka作为一种高性能、分布式的消息队列系统,被广泛应用于各种场景。而SpringBoot作为一种流行的Java开发框架,提供了便捷的方式来构建应用程序。本文将介绍如何在SpringBoot项目中集成Kafka,包括Kafka的基本概念、SpringBoot集成Kafka的
server.servlet.session.timeout: 12h(HTTP 会话的超时时间为 12 小时)
小丁学Java
产品资质管理系统 servlet http firefox
从你提供的配置文件(应该是SpringBoot的application.yml或application.properties文件)来看,以下部分与会话超时时间相关:server:servlet:session:timeout:12h#timeout:30cookie:name:VENDER_SID会话超时时间的设置server.servlet.session.timeout:12h:这行配置明确指
Spring Boot中@Transactional 注解
Bnuzxh
Springboot spring spring boot
Previously:调用接口先打在Controller上相应方法,然后Controller中调Service再有Service的实现层Impl去实现相应业务,所以ServiceImpl会实现Service的接口一般有注解@Override但是突然发现某个方法下除了@Override居然还有个@Transactional那这个是个什么东西呢?Spring事务管理分为:编程式和声明式的两种方式一、编
Spring Boot 动态配置数据源全解析
♢.*
spring boot 后端 java
亲爱的小伙伴们,在求知的漫漫旅途中,若你对深度学习的奥秘、Java与Python的奇妙世界,亦或是读研论文的撰写攻略有所探寻,那不妨给我一个小小的关注吧。我会精心筹备,在未来的日子里不定期地为大家呈上这些领域的知识宝藏与实用经验分享。每一个点赞,都如同春日里的一缕阳光,给予我满满的动力与温暖,让我们在学习成长的道路上相伴而行,共同进步✨。期待你的关注与点赞哟!引言在企业级应用开发中,单一数据源往往
《Spring Boot + MySQL高性能应用实战:性能优化技巧与最佳实践》
扣丁梦想家
Spring spring boot mysql 后端
目录应用性能优化概述环境搭建与技术栈选择数据库设计优化SpringBoot与MySQL集成优化4.1使用JPA/Hibernate的性能优化4.2连接池的配置与优化4.3分页与查询优化MySQL性能优化5.1索引优化5.2查询缓存与慢查询分析应用性能监控与日志总结与最佳实践应用性能优化概述在高性能应用的构建过程中,我们不仅需要关注数据库性能,还要从以下几个方面进行优化:数据库设计优化:合理设计表结
Spring Boot 中 @Transactional 注解全面解析
♢.*
spring boot 数据库 sql
亲爱的小伙伴们,在求知的漫漫旅途中,若你对深度学习的奥秘、Java与Python的奇妙世界,亦或是读研论文的撰写攻略有所探寻,那不妨给我一个小小的关注吧。我会精心筹备,在未来的日子里不定期地为大家呈上这些领域的知识宝藏与实用经验分享。每一个点赞,都如同春日里的一缕阳光,给予我满满的动力与温暖,让我们在学习成长的道路上相伴而行,共同进步✨。期待你的关注与点赞哟!引言在企业级应用开发中,数据的一致性和
RK3568平台开发系列讲解(内核篇)Linux 内核启动流程
内核笔记
RK3568 linux
更多内容可以加入Linux系统知识库套餐(教程+视频+答疑)返回专栏总目录文章目录一、Linux内核启动流程导图二、自解压阶段三、内核运行入口四、汇编阶段五、C函数阶段六、启动内核现场七、执行第一个应用init程序沉淀、分享、成长,让自己和他人都能有所收获!一、Linux内核启动流程导图自解压:Bootlo
Spring--IOC控制反转与DI依赖注入的三种方式
wildyuhao
Java spring maven ioc java
Spring--IOC控制反转与DI依赖注入的三种方式1.setter方法注入2.构造器注入3.接口注入Spring的核心思想是IOC和AOP,IOC即控制反转,包括依赖注入和依赖查找,最主要使用的即依赖注入DI。通常情况下,我们创建对象时,是通过new关键字主动进行的;而DI则是在创建对象时,只设置配置文件,由Spring统一创建对象并调用。这也就是控制反转的由来。接下来本文将重点介绍依赖注入的
告诉你如何用springboot调用python脚本
luckilyil
项目 spring boot python 后端
目录springboot调用python脚本准备工作方法一:使用ProcessBuilder1.编写测试方法2.解释代码方法二:使用ApacheCommonsExec1.编写测试方法2.解释代码Python脚本的数据通过接口让SpringBoot接收。Python脚本作为服务1.使用Flask创建PythonHTTP服务2.在SpringBoot中调用PythonHTTP服务使用RestTempl
深入理解 Spring IoC 与 DI:控制反转与依赖注入解析
代码江
Spring spring java 后端
前言:在接触Spring框架之前,通常我们会在main方法或其他业务逻辑中手动new对象,然后调用这些对象的方法来完成任务。手动创建对象的方式意味着我们自己掌握了对象的控制权。然而,在Spring中,我们不再直接在代码中手动创建对象,而是将对象的创建、管理、依赖注入等职责交给了Spring容器。Spring框架通过IoC(控制反转)和DI(依赖注入)来实现这一点。大家伙,这次封面是我把标题发给ai
慢慢欣赏linux 网络协议栈二 net_device以及初始化注册 (4.19版本)
天麓
网络 linux device driver linux内核 linux 网络协议 网络
代码流程staticint__initnet_dev_init(void){BUG_ON(!dev_boot_phase);dev_proc_init();=>int__initdev_proc_init(void){intret=register_pernet_subsys(&dev_proc_ops);==>staticstructpernet_operations__net_initdata
Nacos作为配置中心怎么玩,以及Nacos为何启动就挂,Nacos配置中心有多简单。
YourStarYang
Nacos Centos7中遇到的那些事 java
首先从GitHub去找文档Nacos主要资源配置项application.properties(主要配置)汉化部分如下:#***************SpringBoot相关配置***************####默认的Web上下文路径:server.servlet.contextPath=/nacos###默认的Web服务器端口:server.port=8848#**************
Spring:核心IOC容器、DI依赖注入案例以及注入方式-List-Map注入详解(2)
九八年的尾巴
SpringFramework spring java ioc bean
什么是IOCInverseofControl(控制反转)?是一种设计思想将原本在程序中手动创建对象的流程,交由Spring框架来管理核心:以前创建对象主动权是自己把控,现在创建对象的控制权反转给Spring框架,DI依赖注入和控制反转是同一概念不同角度的描述。就是应用程序在运行时依赖IOC容器来动态注入对象需要的外部资源。对象的生命周期由Spring统一管理Spring框架核心就是容器,里面存储管
(一文搞定)使用sd卡,往野火EBF6UL/LL-pro板子,移植官方uboot、kernel以及构建rootfs
又摆有菜
嵌入式硬件 arm开发 linux
0、事先声明1、我的pc是Linux操作系统,接下来的操作也都是在linux系统上的。不是windows操作系统。(如若你是win系统,可安装虚拟机,解决这个问题。此帖不讨论如何在win上安装虚拟机)。2、只在win下面使用了串口软件mobaxterm。(此操作,事先请先安装usb转串口ch340驱动)1、EBF6UL/LL-pro简介这是野火的开发版,芯片使用的nxp的imx6ull。其他不在介
Spring_IoC控制反转、依赖注入详解
WziH_CSDN
spring java
Spring_IoC一、IoC相关概念简介1、理解【控制】和【依赖】的概念IoC即控制反转、依赖注入。——OOAD依赖倒置【控制】和【依赖】都代表对象之间的关联关系,而且他们在Spring中是一对近义词,控制和依赖几乎是并存的。例如,现有如下需求:汽车的功能是行驶,司机的功能是驾驶汽车,令汽车行驶。我们可以通过代码描述上述关系:publicclassCar{//汽车类privateStringna
Spring 学习笔记(一)Spring两大核心技术IOC控制反转/DI依赖注入和AOP面向切面 案例 | 优化传统的Web开发 | MVC架构DAO层与Service层之间的解耦
「已注销」
# SSM Spring
文章目录参考资料运行环境一、Spring概述1.1Spring产生背景1.2两大核心技术IOC/DI+AOP二、Spring核心技术2.1IOC/DI2.1.1案例:IOC实现解耦2.1.2IOC/DI使用总结2.2AOP2.2.1案例:AOP实现日志打印2.2.2AOP使用总结:三、总结参考资料SPOC运行环境windows10IDEA2021.1专业版JDK8Spring-5.0.5一、Spr
基于SpringBoot+Vue驾校理论课模拟考试系统源码(自动化部署)
.whl
Java学习进阶 毕设源码 spring boot vue.js 自动化
DrivingTestSimulationUnity3DProject,subjecttwo,simulateddrivingtest【更新信息】更新时间-2021-1-17解决了方向盘不同机型转动轴心偏离更新时间-2021-2-18加入了手刹系统待更新-2021-6-19(工作太忙少有时间更新,先指出问题)解决了在REC回放下偶然出现的物体回放错位BUG(每一个挂ReplayEntity.cs的
STM32 最小系统
雯宝
stm32 嵌入式硬件 单片机
STM32最小系统最小系统就是保证MCU正常运行的最低要求,一般是指MCU的供电、复位、晶振、BOOT等部分。最小系统需求如表:F407/F103最小系统都是一样的
二、Spring Framework基础:IoC(控制反转)和DI(依赖注入)
伯牙碎琴
# Spring框架 spring log4j java
SpringCore:深入理解IoC和DI原理在Java开发中,SpringFramework是一个极为重要的框架,而IoC(控制反转)和DI(依赖注入)是Spring的核心特性。它们不仅帮助开发者简化代码的复杂性,还极大地提高了代码的可维护性和可扩展性。本文将深入探讨IoC和DI的原理,并通过实际代码示例帮助你更好地理解。1.IoC(控制反转)是什么?1.1定义IoC(InversionofCo
java的(PO,VO,TO,BO,DAO,POJO)
Cb123456
VO TO BO POJO DAO
转:
http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html
-------------------------------------------------------------------
O/R Mapping 是 Object Relational Mapping(对象关系映
spring ioc原理(看完后大家可以自己写一个spring)
aijuans
spring
最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬 的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IO
MyEclipse 2014中Customize Persperctive设置无效的解决方法
Kai_Ge
MyEclipse2014
高高兴兴下载个MyEclipse2014,发现工具条上多了个手机开发的按钮,心生不爽就想弄掉他!
结果发现Customize Persperctive失效!!
有说更新下就好了,可是国内Myeclipse访问不了,何谈更新...
so~这里提供了更新后的一下jar包,给大家使用!
1、将9个jar复制到myeclipse安装目录\plugins中
2、删除和这9个jar同包名但是版本号较
SpringMvc上传
120153216
springMVC
@RequestMapping(value = WebUrlConstant.UPLOADFILE)
@ResponseBody
public Map<String, Object> uploadFile(HttpServletRequest request,HttpServletResponse httpresponse) {
try {
//
Javascript----HTML DOM 事件
何必如此
JavaScript html Web
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。
事件通常与函数结合使用,函数不会在事件发生前被执行!
注:DOM: 指明使用的 DOM 属性级别。
1.鼠标事件
属性  
动态绑定和删除onclick事件
357029540
JavaScript jquery
因为对JQUERY和JS的动态绑定事件的不熟悉,今天花了好久的时间才把动态绑定和删除onclick事件搞定!现在分享下我的过程。
在我的查询页面,我将我的onclick事件绑定到了tr标签上同时传入当前行(this值)参数,这样可以在点击行上的任意地方时可以选中checkbox,但是在我的某一列上也有一个onclick事件是用于下载附件的,当
HttpClient|HttpClient请求详解
7454103
apache 应用服务器 网络协议 网络应用 Security
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需
递归 逐层统计树形结构数据
darkranger
数据结构
将集合递归获取树形结构:
/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/
public void getReportVO(Arr
访问WEB-INF下使用frameset标签页面出错的原因
aijuans
struts2
<frameset rows="61,*,24" cols="*" framespacing="0" frameborder="no" border="0">
MAVEN常用命令
avords
Maven库:
http://repo2.maven.org/maven2/
Maven依赖查询:
http://mvnrepository.com/
Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName 
PHP如果自带一个小型的web服务器就好了
houxinyou
apache 应用服务器 Web PHP 脚本
最近单位用PHP做网站,感觉PHP挺好的,不过有一些地方不太习惯,比如,环境搭建。PHP本身就是一个网站后台脚本,但用PHP做程序时还要下载apache,配置起来也不太很方便,虽然有好多配置好的apache+php+mysq的环境,但用起来总是心里不太舒服,因为我要的只是一个开发环境,如果是真实的运行环境,下个apahe也无所谓,但只是一个开发环境,总有一种杀鸡用牛刀的感觉。如果php自己的程序中
NoSQL数据库之Redis数据库管理(list类型)
bijian1013
redis 数据库 NoSQL
3.list类型及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
&nbs
谁在用Hadoop?
bingyingao
hadoop 数据挖掘 公司 应用场景
Hadoop技术的应用已经十分广泛了,而我是最近才开始对它有所了解,它在大数据领域的出色表现也让我产生了兴趣。浏览了他的官网,其中有一个页面专门介绍目前世界上有哪些公司在用Hadoop,这些公司涵盖各行各业,不乏一些大公司如alibaba,ebay,amazon,google,facebook,adobe等,主要用于日志分析、数据挖掘、机器学习、构建索引、业务报表等场景,这更加激发了学习它的热情。
【Spark七十六】Spark计算结果存到MySQL
bit1129
mysql
package spark.examples.db
import java.sql.{PreparedStatement, Connection, DriverManager}
import com.mysql.jdbc.Driver
import org.apache.spark.{SparkContext, SparkConf}
object SparkMySQLInteg
Scala: JVM上的函数编程
bookjovi
scala erlang haskell
说Scala是JVM上的函数编程一点也不为过,Scala把面向对象和函数型编程这两种主流编程范式结合了起来,对于熟悉各种编程范式的人而言Scala并没有带来太多革新的编程思想,scala主要的有点在于Java庞大的package优势,这样也就弥补了JVM平台上函数型编程的缺失,MS家.net上已经有了F#,JVM怎么能不跟上呢?
对本人而言
jar打成exe
bro_feng
java jar exe
今天要把jar包打成exe,jsmooth和exe4j都用了。
遇见几个问题。记录一下。
两个软件都很好使,网上都有图片教程,都挺不错。
首先肯定是要用自己的jre的,不然不能通用,其次别忘了把需要的lib放到classPath中。
困扰我很久的一个问题是,我自己打包成功后,在一个同事的没有装jdk的电脑上运行,就是不行,报错jvm.dll为无效的windows映像,如截图
最后发现
读《研磨设计模式》-代码笔记-策略模式-Strategy
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化
简单理解:
1、将不同的策略提炼出一个共同接口。这是容易的,因为不同的策略,只是算法不同,需要传递的参数
cmd命令值cvfM命令
chenyu19891124
cmd
cmd命令还真是强大啊。今天发现jar -cvfM aa.rar @aaalist 就这行命令可以根据aaalist取出相应的文件
例如:
在d:\workspace\prpall\test.java 有这样一个文件,现在想要将这个文件打成一个包。运行如下命令即可比如在d:\wor
OpenJWeb(1.8) Java Web应用快速开发平台
comsci
java 框架 Web 项目管理 企业应用
OpenJWeb(1.8) Java Web应用快速开发平台的作者是我们技术联盟的成员,他最近推出了新版本的快速应用开发平台 OpenJWeb(1.8),我帮他做做宣传
OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透
Python 报错:IndentationError: unexpected indent
daizj
python tab 空格 缩进
IndentationError: unexpected indent 是缩进的问题,也有可能是tab和空格混用啦
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和退出。增加缩进表示语句块的开
HttpClient 超时设置
dongwei_6688
httpclient
HttpClient中的超时设置包含两个部分:
1. 建立连接超时,是指在httpclient客户端和服务器端建立连接过程中允许的最大等待时间
2. 读取数据超时,是指在建立连接后,等待读取服务器端的响应数据时允许的最大等待时间
在HttpClient 4.x中如下设置:
HttpClient httpclient = new DefaultHttpC
小鱼与波浪
dcj3sjt126com
一条小鱼游出水面看蓝天,偶然间遇到了波浪。 小鱼便与波浪在海面上游戏,随着波浪上下起伏、汹涌前进。 小鱼在波浪里兴奋得大叫:“你每天都过着这么刺激的生活吗?简直太棒了。” 波浪说:“岂只每天过这样的生活,几乎每一刻都这么刺激!还有更刺激的,要有潮汐变化,或者狂风暴雨,那才是兴奋得心脏都会跳出来。” 小鱼说:“真希望我也能变成一个波浪,每天随着风雨、潮汐流动,不知道有多么好!” 很快,小鱼
Error Code: 1175 You are using safe update mode and you tried to update a table
dcj3sjt126com
mysql
快速高效用:SET SQL_SAFE_UPDATES = 0;下面的就不要看了!
今日用MySQL Workbench进行数据库的管理更新时,执行一个更新的语句碰到以下错误提示:
Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that
枚举类型详细介绍及方法定义
gaomysion
enum javaee
转发
http://developer.51cto.com/art/201107/275031.htm
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。建议大家可以看看,这两篇文章,《java枚举类型入门》和《C++的中的结构体和枚举》,供大家参考。
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum
Merge Sorted Array
hcx2013
array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:You may assume that nums1 has enough space (size that is
Expression Language 3.0新特性
jinnianshilongnian
el 3.0
Expression Language 3.0表达式语言规范最终版从2013-4-29发布到现在已经非常久的时间了;目前如Tomcat 8、Jetty 9、GlasshFish 4已经支持EL 3.0。新特性包括:如字符串拼接操作符、赋值、分号操作符、对象方法调用、Lambda表达式、静态字段/方法调用、构造器调用、Java8集合操作。目前Glassfish 4/Jetty实现最好,对大多数新特性
超越算法来看待个性化推荐
liyonghui160com
超越算法来看待个性化推荐
一提到个性化推荐,大家一般会想到协同过滤、文本相似等推荐算法,或是更高阶的模型推荐算法,百度的张栋说过,推荐40%取决于UI、30%取决于数据、20%取决于背景知识,虽然本人不是很认同这种比例,但推荐系统中,推荐算法起的作用起的作用是非常有限的。
就像任何
写给Javascript初学者的小小建议
pda158
JavaScript
一般初学JavaScript的时候最头痛的就是浏览器兼容问题。在Firefox下面好好的代码放到IE就不能显示了,又或者是在IE能正常显示的代码在firefox又报错了。 如果你正初学JavaScript并有着一样的处境的话建议你:初学JavaScript的时候无视DOM和BOM的兼容性,将更多的时间花在 了解语言本身(ECMAScript)。只在特定浏览器编写代码(Chrome/Fi
Java 枚举
ShihLei
java enum 枚举
注:文章内容大量借鉴使用网上的资料,可惜没有记录参考地址,只能再传对作者说声抱歉并表示感谢!
一 基础 1)语法
枚举类型只能有私有构造器(这样做可以保证客户代码没有办法新建一个enum的实例)
枚举实例必须最先定义
2)特性
&nb
Java SE 6 HotSpot虚拟机的垃圾回收机制
uuhorse
java HotSpot GC 垃圾回收 VM
官方资料,关于Java SE 6 HotSpot虚拟机的garbage Collection,非常全,英文。
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
&