![](https://img-blog.csdnimg.cn/20200202121353660.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 87
Java学习中的记录和总结
Vic·Tory
Make your hands dirty
展开
-
使用Lombok自动生成POJO所需代码
Lombok是一种Java插件,利用它可以在编译时自动生成POJO对象所需的getter、setter、equals和构造器等方法,免去开发人员手动实现这些简单且繁琐的代码。引入自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。Lombok就是一个实现了"JSR 269 API"的程序,具体流程如下:javac对源代码进行分析,生成一棵抽象语法树(AST)j原创 2021-05-20 17:53:19 · 876 阅读 · 0 评论 -
Java容器的常用方法
Java字符串在 Java 中字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中,默认情况下该包自动导入。String对象创建后不会被修改,当我们修改某个字符串对象实际上是将原引用指向了新创建的内存空间。并且相同的字符串常量Java不会分配两个内存空间,而是将两个引用指向相同的空间。public class MyString { public static void main(String[] args) { String s1="字符原创 2021-02-28 22:30:06 · 471 阅读 · 1 评论 -
Java参数传递方式--值传递
在C等其他语言中经常会遇到以下两种参数传递方式:值传递:方法调用时,实际参数将它的值传递给形式参数,函数就收到的是原始值的副本,此时内存中存在两个相同的基本类型,在方法中对形参执行处理操作,并不会影响实际参数的值。引用传递:方法调用时,实际参数的引用被传递给方法中相应的形式参数,函数接受到的是原始值的内存地址,在方法中,形参和实参的内容(地址)相同,方法中对形参的处理会影响实参的值。在Java中的参数传递方式都是值传递,当参数类型为int等基本数据类型时直接将值传递给形参;当参数为String、对原创 2021-02-17 17:32:37 · 775 阅读 · 2 评论 -
Java的代理与建造者模式
代理模式:在原来对象的基础上增加一个代理对象,通过代理对被代理对象进行访问。代理不仅起到了中介的作用,还可以在原对象的基础上增加或删减一些功能。常用的代理可以分为以下四种:远程代理:为不同地址空间的对象在当前局域网内提供一个代表对象,例如通过代理管理多个地方的店铺分店。虚拟代理:根据需要将资源消耗很大的对象进行延迟创建,直到真正需要的时候再创建。例如图片的懒加载保护代理:控制对象的访问权限,只有特定权限的用户可以访问对象。智能引用代理:对目标对象添加额外的服务静态代理静态代理:代理和被代理对原创 2021-02-16 15:54:53 · 175 阅读 · 0 评论 -
Spring实现跨域资源共享(CORS)
今天在前端通过Ajax获取后台数据时控制台报错如下:已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/xxx 的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin’)。这是由于浏览器同源策略的控制导致页面无法正确获取服务器端的数据同源策略同源政策是1995年由网景公司引入的浏览器访问策略,只有同源的页面之间才可以共享cookie等数据。而所谓同源是指两个页面的协议、域名、端口都相同。同源策略是为了保护用户的信息安全而设置原创 2020-12-01 21:01:45 · 354 阅读 · 0 评论 -
Spring中RESTful请求与响应
RESTful请求REST全称是Representational State Transfer,如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。可以唯一标识和定位资源,对于该URL标识的资源做何种操作是由Http方法决定的。请求方法有4种,get、post、put、delete分别对应获取资源,添加资源,更新资源及删除资源。每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集原创 2020-11-10 21:39:07 · 915 阅读 · 0 评论 -
Spring Security对用户权限进行管理
基于角色的访问控制隐式访问控制:根据用户的角色判断是否具有某项操作显示访问控制:为用户分配某种权限,根据权限判断是否可以进行某种操作。与具体角色无关,权限控制更加灵活认证( authentication ):是建立主体( principal) 的过程。"主体"不仅指用户,还可以是其他执行操作的系统或设备。授权(authorization ):或称为"访问控制(access-control), 是指决定是否允许主体在应用程序中执行操作Spring Security是Spring中常用的安全服务框架,原创 2020-11-03 10:29:06 · 2403 阅读 · 0 评论 -
使用SpringDataJPA操作数据库
1、SpringDataJPAJPA(Java Persistence API) 是指Java中数据对象持久化的过程。所谓持久化是指将内存中创建的数据对象永久的保存在数据库中,即在Java中我们通过JDBC连接数据库并进行增删改查的过程。在JDBC的基础上又出现了许多持久层框架用于简化Java和数据库的交互,其中两个较为流行的框架–Hibernate和Mybatis。但是我们依旧需要在Java中编写调用数据库的接口函数,为了统一和简化这个过程,SpringDataJPA在Hibernate的基础上基于JP原创 2020-08-07 20:56:15 · 889 阅读 · 0 评论 -
使用Thymeleaf构建页面
Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎,它具有如下特点:动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内转载 2020-06-15 22:18:40 · 1318 阅读 · 0 评论 -
Gradle对Java项目进行依赖管理
Gradle是Java项目三大构建工具(Ant、Maven和Gradle)之一,通过它可以更加便捷地构建规范的Java项目和管理Java依赖。Gradle在Maven的基础上,通过Groovy的特定领域语言(DSL)来声明项目设置,避免了maven基于XML的各种繁琐配置。Gradle与Maven的关系可以用青出于蓝而胜于蓝来形容,Gradle沿用了Maven的GroupID、ArtifactID和Version组成Coordination唯一标识一个依赖项,并且将maven的scope简化为了compil原创 2020-06-07 17:05:43 · 1854 阅读 · 0 评论 -
使用maven管理Java项目依赖
使用maven创建Spring项目Maven是java的一个依赖管理工具。所谓依赖就是指在Java开发过程中引入的各种jar包和第三方库,而可能这些库本省还要引用其他的库,这样我们直接引用的称为直接依赖,库的依赖称为间接依赖。如果我们手动去引入这些依赖,过程将变得十分繁琐,因此需要Maven来为我们管理并引入这些依赖。安装:首先从Maven官网下载所需maven的压缩包,之后将其解压,最后............原创 2020-04-19 21:58:14 · 11193 阅读 · 2 评论 -
使用Spring MVC进行Web管理
1、概念MVC 、Spring MVC的执行流程 、2、使用Spring MVC 、文件配置 、编写Controller 、表单数据绑定 、文件上传 、返回JSON数据 、3、拦截器原创 2020-04-19 10:54:07 · 344 阅读 · 0 评论 -
Spring中进行事务管理的两种方式
1、Spring中事务管理的APIPlatformTransactionManagerTransactionDefinitionTransactionStatus2、编程式事务管理3、声明式事务管理基于Spring-AOP的方式基于AspectJ的标签基于注解的方式原创 2020-04-15 12:17:54 · 3789 阅读 · 0 评论 -
Spring中配置和使用AOP
1、相关概念AOPAOP(Aspect Oriented Programming)称为面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,可以很好地模拟事物处理过程中纵向的各个模块,但并不适合定义横向的关系。例如在一个流程中的各个操作过程如下,每个操作过程需要进行日志的...原创 2020-04-10 21:50:41 · 379 阅读 · 0 评论 -
使用Spring的IOC进行Bean管理
1、maven创建项目2、使用接口降低耦合度3、IOC手动实现IoC容器Spring中的IOC4、使用Bean实例化设置属性属性继承初始化和销毁5、作用域单例/多例模式Web作用域自定义作用域Bean的懒加载6、使用注解属性注入作用域初始化和销毁原创 2020-04-01 21:56:38 · 669 阅读 · 0 评论 -
使用Struts2管理Web应用
struts是一个Java中基于MVC设计模式的WEB应用程序框架。创建一个struts项目、Action访问Servlet API、动态调用action的方法、默认Action、接收参数、Result结果集Struts拦截器原创 2020-03-14 15:32:05 · 338 阅读 · 0 评论 -
使用Mybatis操作数据库
MyBatis 是一款优秀的持久层框架,通过它可以更加便捷地和JDBC进行交互,而不需要进行繁琐的数据库连接配置与结果集的获取。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。此外它还支持定制化 SQL、存储过程以及高级映射。使用步骤1、使用Myba...原创 2020-03-08 23:05:18 · 1689 阅读 · 0 评论 -
IDEA通过Artifacts发布Web项目
今天在用IDEA运行一个Java Web项目时突然报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,但是我的项目的lib目录下以及添加了jdbc的连接jar包,而且在IDEA中编译没有报错,而且之后我自己添加的两个jar包也找不到,但是IDEA自动提示正常,说明项目的确引入了jar包,但是在发布项目时出现了问题。经过排查发现ID...原创 2020-03-06 11:40:40 · 2969 阅读 · 0 评论 -
EL表达式与JSTL
JSTL(Jsp Standarded Tag Library)是JSP的一个标准标签库集合。通过使用标签库可以复用重复率较高的代码块,不仅提高了开发效率,而且有较强的可读性。原创 2020-03-04 18:31:14 · 313 阅读 · 0 评论 -
Hibernate使用HQL查询数据库
为了更方便地查询数据库,Hibernate封装了数据库查询语言HQL(Hibernate Query Language),HQL的语法和标准SQL类似,以下做简单的记录。FromHQL用from表示要查询的数据表,不同于SQL,from可以脱离select单独使用。注意from后接的是要查询的对象所属的Java类,而不是数据库中的表名,例如StudentEntity在数据库中对应的stud...原创 2020-02-28 11:58:55 · 734 阅读 · 0 评论 -
使用Hibernate储存一对多对象关系
生活中的对象实体之间往往存在关系,有一对一、一对多、多对多的关系,比如一个课程班级里有多个学生就是一对多的关系。在数据库中可以通过给学生表添加外键指向班级id的方式来表示学生包含多个学生的关系,对应的在Java中,可以创建Course、Student两个类来表示班级和学生,那么如何建立二者之间的关系呢?如下所示为数据库中的courses表和students表 一对多映射第一种...原创 2020-02-27 18:52:12 · 686 阅读 · 0 评论 -
使用Hibernate进行对象数据持久化储存
1、ORMORM(Object Relationship Mapping,对象关系映射),利用面向对象编写的应用最终将对象信息保存在关系型数据库中。但是如果直接在应用中编写底层数据库相关的SQL语句会使程序过分依赖特定数据库,不利于程序的移植与扩展,而且不同数据库的SQL语法不同,相同的功能在不同的数据库中有不同的实现方式,因此需要ORM框架实现面向对象与数据存储的分离。Hibernate...原创 2020-02-27 18:50:21 · 1074 阅读 · 0 评论 -
Java反射与注解
Class类Java中认为万物皆对象,例如我们定义一个学生Student,然后通过它来实例化一个对象student。其实Student类本身也可以看作一个对象,作为java.lang.Class类的实例。可以通过如下三种方式获取类名Student...原创 2020-02-22 21:19:57 · 410 阅读 · 0 评论 -
Java Web过滤器与监听器
过滤器过滤器是服务器端的组件,用于对来到服务器的请求和服务器返回的响应进行过滤操作。例如通过过滤器判断用户是否登录从而执行不同操作,或者请求到不存在页面时返回报错信息等。过滤器在服务器服务启动时就被加载生成了,之后用户和服务器之间的请求和响应都要经过过滤器创建一个filter类需要实现Filter接口的三个方法,init()是过滤器的初始化方法,web容器创建过滤器后调用该方法从web...原创 2020-02-20 22:25:28 · 258 阅读 · 0 评论 -
Java的Servlet与MVC编程模式
Servlet是JSP(Java Servlet Pages)的基础,其本质为运行在服务器端的Java类,接收来自客户端的请求并作出响应。Tomcat的容器分为四个等级,从大到小依次为Container、Engine、Host、Servlet,其关系如下servlet的生命周期如下所示,当请求第一次到达servlet时,服务器装载servlet实例并调用init()完成初始化,之后将s...原创 2020-02-20 13:00:54 · 829 阅读 · 0 评论 -
JSP基础
JSP(Java Servlet Pages)是一个简化的Servlet设计,实现了在服务器端Java中使用HTML标签显示动态网页技术,也是一个JavaEE标准。与PHP相比,JSP具有更好的跨平台性、安全性,适用于开发大型的企业级Web应用程序。JSP页面由六个元素构成:静态内容、指令、表达式、小脚本、声明和注释指令jsp指令包裹在<%@ %>之间。其中page指令常位...原创 2020-02-16 19:40:08 · 468 阅读 · 0 评论 -
IDEA开发Java Web的环境配置
1、搭建环境Tomcat是Java Web运行的服务器,也是JSP的容器,因此首先需要安装配置服务器。在Tomcat官网https://tomcat.apache.org/download-90.cgi选择对应电脑系统的版本安装包(Windows64位),软件是绿色免安装的,所以直接解压到要存放的目录下即可接下来需要配置环境变量,如下所示,新建系统变量名为CATALINA_HOME,值...原创 2020-02-13 11:26:08 · 9170 阅读 · 0 评论 -
使用JDBC操作MySQL数据库
JDBC(Java Database Connectivity,Java数据库连接)是一种用于连接多种数据库的标准工具,使Java语言通过该接口可以连接到Oracle、MySQL,SQL server等多种不同数据库。1、导入JDBC驱动在Java中使用jdbc连接MySQL数据库需要导入jdbc驱动,从MySQL官网https://dev.mysql.com/downloads/conn...原创 2020-02-12 17:17:19 · 547 阅读 · 0 评论 -
Java中使用多线程
Java中关于线程提供了Thread类和Runnable接口,二者都包含run()方法来执行线程,常用的方法列举如下:线程的创建和停止可以通过继承Thread类来新建一个线程类,也可以通过将类实现Runnable接口来新建。线程拥有name属性来标识,可以调用setName()方法来设置,也可以在新建Thread对象时调用构造方法传入字符串为线程命名。Thread类内可以使用getNa...原创 2020-02-07 21:18:52 · 268 阅读 · 0 评论 -
Java利用Socket进行数据读写
Java中和网络有关的类分为四种:InetAddress(网络信息标识)、URL(统一资源定位器,读写网络数据)、Sockets(利用TCP/IP实现网络通信)、Datagram(UDP数据报通信)通过InetAddress可以获取计算机名、IP地址等信息,也可以通过计算机名、IP地址获取到网络上的计算机实例 public static void main(String[] arg...原创 2020-02-06 18:48:54 · 7873 阅读 · 0 评论 -
Java解析与生成XML文档
为了在不同应用软件、不同平台、不同操作系统之间实现数据共享,我们需要XML文件来进行数据的储存和传输。如下所示为一个xml文件内容,定义了一个书店,包含两本书的信息<?xml version="1.0" encoding="UTF-8"?><bookstore> <book id="1"> <name>冰与火之歌</name&...原创 2020-02-05 17:38:52 · 496 阅读 · 0 评论 -
Java中的输入输出流(I/O)
1、文件编码我们经常使用的txt文本文件本质上将文本char按照GBK、utf-8等多种编码方式序列化为byte字节存储起来的,当我们要读取某个txt文件的内容将其转换为字符串时,也需要使用该字节序列所使用的编码方式进行解码,否则会出现乱码。例如我们在中文Windows系统下创建一个txt文件,默认采用ANSI(GBK)编码方式,当我们在编译器中以utf-8的方式打开该文件就会出现中文乱码。这...原创 2020-02-03 16:44:58 · 2263 阅读 · 0 评论 -
Java复合数据类型
1、Java字符串在 Java 中字符串被作为 String 类型的对象处理。String 类位于 java.lang 包中,默认情况下该包自动导入。String对象创建后不会被修改,当我们修改某个字符串对象实际上是将原引用指向了新创建的内存空间。并且相同的字符串常量Java不会分配两个内存空间,而是将两个引用指向相同的空间。public class MyString { ...原创 2020-02-01 12:28:06 · 5508 阅读 · 0 评论 -
Java基础回顾
1、环境搭建Java SE(Standard Edition,Java标准版),是Java的核心版本,其中包括Java面向对象、JVM、API等功能。在此基础上的Java EE(Enterprise Edition,Java企业版)是面向企业的版本,其中包括JSP、EJB、Service等功能,Java ME(Mobile Edition,Java移动版)主要用于嵌入式开发,包含移动设备、游戏...原创 2020-01-29 21:29:59 · 216 阅读 · 0 评论