![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习笔记
文章平均质量分 55
糠猪
这个作者很懒,什么都没留下…
展开
-
Spring详解
1. IOC1.1 拓展现代化的Java开发,就是基于Spring的开发SpringBoot快速开发的脚手架基于SpringBoot可以快速开发微服务约定大于配置SpringCloudSpringCloud是基于SpringBoot实现的学习SpringBoot的前提是掌握Spring以及SpringMVC,SpringBoot起到承上启下 的作用;弊端:配置十分繁琐,人称:“配置地狱”;1.2 IOC理论推导问题展示对象包:(接口)package com.kan原创 2022-04-18 21:16:28 · 481 阅读 · 0 评论 -
Linux详解(面向部署)
Linux详解(面向部署)Linux没有服务(service),是守护进程(daemon)基本命令:sync:将数据由内存同步到硬盘中shutdown:关机命令(后加参数设置关机时间)reboot:重启ls:查看指定目录下的文件(后跟目录)根目录:(cd /)/bin:存放着常用命令/boot:设备启动的核心文件/dev:存放的是Linux的外部设备/mnt:让用户临时挂载别的文件系统/etc:存放所有的配置文件/home:用户的主目录/lost+found:存放突然关机的原创 2022-04-12 22:44:54 · 1044 阅读 · 0 评论 -
Spring-IOC创建对象方式
Spring-IOC创建对象方式使用无参构造创建对象,默认使用有参构造创建对象下标赋值<bean id="user1" class="com.kangzhu.pojo.User"> <constructor-arg index="0" value="kangzhu1"/></bean>根据参数类型赋值<!--但是假设有两个参数的类型相同,这种方式不适用--><bean id="user2" class="com.原创 2022-04-11 21:05:13 · 170 阅读 · 0 评论 -
Spring-HelloSpring
Spring-HelloSpring编写实体类package com.kangzhu.pojo;public class Hello { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override public String toS原创 2022-04-11 20:39:59 · 142 阅读 · 0 评论 -
Spring-IOC
Spring-IOC1. 拓展现代化的Java开发,就是基于Spring的开发SpringBoot快速开发的脚手架基于SpringBoot可以快速开发微服务约定大于配置SpringCloudSpringCloud是基于SpringBoot实现的学习SpringBoot的前提是掌握Spring以及SpringMVC,SpringBoot起到承上启下 的作用;弊端:配置十分繁琐,人称:“配置地狱”;IOC理论推导问题展示对象包:(接口)package com.kang原创 2022-04-11 20:00:33 · 274 阅读 · 0 评论 -
Mybatis-缓存
Mybatis-缓存一次查询结果,给它暂存在一个可以直接取到的地方! --> 内存我们再次查询相同数据的时候,就直接走缓存,不用再走数据库了Mybatis可以非常方便地定制缓存和配置缓存默认定义了两级缓存:一级缓存和二级缓存一级缓存默认开启,SqlSession级别的缓存二级缓存需要手动开启和配置,namespace级别的缓存开启二级缓存:在核心配置文件中:(开启全局缓存)<settings><!--显示开启缓存--> <sett原创 2022-04-10 21:14:10 · 740 阅读 · 0 评论 -
Mybatis-动态SQL(3)
Mybatis-动态SQL(3)1. SQL片段有的时候,我们可能会将一些功能的部分抽取出来,方便复用!现在我们使用sql片段来简化下面这个查询:<select id="queryBlogIF" parameterType="map" resultType="Blog"> select * from blog <where> <if test="title != null"> and title = #{ti原创 2022-04-10 16:40:49 · 883 阅读 · 0 评论 -
Mybatis-动态SQL(2)
Mybatis-动态SQL(2)1. where标签在上一篇中使用动态SQL-IF的时候查询语句是:<select id="queryBlogIF" parameterType="map" resultType="Blog"> select * from blog where 1=1 <if test="title != null"> and title = #{title} </if> <if test="au原创 2022-04-10 16:11:50 · 732 阅读 · 0 评论 -
Mybatis-动态SQL
Mybatis-动态SQL什么是动态SQL:动态SQL就是根据不同的条件生成不同的SQL语句;创建一个基础工程导包编写配置文件编写实体类package com.kangzhu.pojo;import lombok.Data;import java.util.Date;@Datapublic class Blog { private int id; private String title; private String author; p原创 2022-04-09 22:19:53 · 166 阅读 · 0 评论 -
Mybatis-复杂查询(2)
Mybatis-复杂查询(2)从(一对多)一的角度进行复杂查询;实体类:// 学生package pojo;import lombok.Data;@Datapublic class Student { private int id; private String name; // 学生需要关联一个老师 private int tid;}// 老师package pojo;import lombok.Data;import java.util.Lis原创 2022-04-09 20:49:22 · 886 阅读 · 0 评论 -
Mybatis-复杂查询
Mybatis-复杂查询1. 测试环境搭建导入lombok新建实体类Teacher, Student建立Mapper接口建立Mapper.xml文件在核心配置中绑定注册Mapper接口或者文件测试查询是否能够成功2. 复杂查询实体类:// 学生package com.kangzhu.pojo;import lombok.Data;@Datapublic class Student { private int id; private String name;原创 2022-04-09 16:26:38 · 702 阅读 · 0 评论 -
Mybatis-Lombok
Mybatis-Lombok官方解释:Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate原创 2022-04-09 14:20:50 · 172 阅读 · 0 评论 -
Mybatis-使用注解开发
Mybatis-使用注解开发1. 面向接口编程定义与实现的分离;接口反映了系统设计人员对系统的抽象理解;接口应有两类:对一个个体的抽象,它可对应为一个抽象体(abstract class)对一个个体某一方面的抽象,即形成一个抽象面(interface)2. 使用注解开发接口@Select("select * from user")List<User> getUsers();在mybatis核心配置文件中绑定接口<mappers> <原创 2022-04-09 13:18:39 · 385 阅读 · 0 评论 -
Mybatis-分页
Mybatis-分页1. 使用limit分页# select * from user limit startIndex pageSize;select * from user limit 0, 3;2. 使用Mybatis实现分页,核心SQL接口List<User> getUserByLimit(Map<String, Object> map);Mapper.xml<select id="getUserByLimit" parameterType="原创 2022-04-08 21:01:26 · 212 阅读 · 0 评论 -
Mybatis-日志
Mybatis-日志1. 日志工厂如果一个数据库操作出现了异常,我们需要排错,日志就是最好的助手Mybatis内置的日志工厂:SLF4JLOG4J(deprecated since 3.5.9)【掌握】LOG4J2JDK_LOGGINGCOMMONS_LOGGINGSTDOUT_LOGGING【掌握】NO_LOGGING在Mybatis中具体使用哪一个日志,在设置中设定!STDOUT_LOGGING标准日志输出2. 使用标准日志工厂在核心配置文件中:<settings原创 2022-04-06 21:10:56 · 840 阅读 · 0 评论 -
Mybatis-ResultMap结果集映射
Mybatis-ResultMap结果集映射解决属性名和字段名不一致的问题测试实体类属性名和字段名不一致的情况字段名:id、name、password实体类:private int id;private String name;private String pwd;测试类:@Testpublic void testGetUserById() { // 第一步: 获得sqlSession对象 SqlSession sqlSession = MybatisUtils.get原创 2022-04-06 20:20:46 · 894 阅读 · 0 评论 -
Mybatis-映射器(继Mybatis-配置之别名优化)
映射器(继Mybatis-配置之别名优化)MapperRegistry:注册绑定我们的Mapper文件方式一:使用相对于类路径的资源路径<mappers> <mapper resource="com/kangzhu/dao/userMapper.xml"/></mappers>方式二:使用映射器接口实现类的完全限定名<mappers> <mapper class="com.kangzhu.dao.UserMapper"/&g原创 2022-04-06 15:51:48 · 909 阅读 · 0 评论 -
Mybatis-配置之别名优化(继Mybatis-配置之属性优化)
Mybatis-配置之别名优化(继Mybatis-配置之属性优化)1. typeAliases(类型别名)类型别名可为 Java 类型设置一个缩写名字。它仅用于 XML 配置,意在降低冗余的全限定类名书写<typeAliases> <typeAlias type="com.kangzhu.pojo.User" alias="User"/> <package name="com.kangzhu.pojo"/></typeAliases&原创 2022-04-05 22:08:37 · 93 阅读 · 0 评论 -
Mybatis-map和模糊查询
Mybatis-map和模糊查询1. 使用map原因:上一篇的例子中,在修改用户的时候需要传入user对象,这时我们需要传入user的各个属性,包括不需要修改的,编写时有些繁琐,因此可以用map对象代替user对象。(虽然不是很正规,但是很实用)// 万能的map int addUser2(Map<String, Object> map);<!-- 参数类型是map --><insert id="addUser2" parameterType="map原创 2022-04-05 19:07:24 · 173 阅读 · 0 评论 -
Mybatis-CRUD
Mybatis-CRUD1. namespacenamespace中的包名要和实现接口的包名一致2. select查询语句;id:就是对应的namespace中的方法名;resultType:sql语句执行的返回值;(基本类型和引用类型-类)parameterType:参数类型;note:上一篇文章已经讲到如何搭建整个项目,这里我们只改变接口、接口的实现(mapper.xml)和测试类使用参数类型的示例:// 根据id查询用户 User getUserById(int原创 2022-04-05 18:04:09 · 54 阅读 · 0 评论 -
Mybatis入门案例
Mybatis入门案例1. 什么是MybatisMybatis是一款优秀的持久层框架;2. 持久化数据持久化持久化就是将程序的数据在持久状态和瞬时状态转化的过程内存:断电即失数据库(jdbc),io文件持久化为什么需要持久化?一些对象不能丢掉内存价格昂贵3. 持久层完成持久化工作的代码块层界限十分明显4. 为什么需要Mybatis传统的JDBC代码太复杂帮助程序员将数据存入到数据库中sql和代码分离5. 第一个Mybatis程序思路:搭建环境 – 导包原创 2022-04-05 16:12:57 · 499 阅读 · 0 评论 -
JDBC详解
JDBC详解1. 为什么使用JDBC我们平时会用到各种各样的数据库,例如MySQL、MongoDB等。我们可以通过命令行的方式访问数据库服务器,但是我们编写的应用程序却无法直接操作数据库(需要借助数据库驱动)。不同的数据库厂商提供驱动的语法也不尽相同,这是一件令很多程序员头疼的事。因此Oracle提出了JDBC规范,所有的数据库厂商提供的驱动都会实现JDBC规范,这样程序员掌握一套语法便可以在应用程序中操作各种数据库。2. MySQL数据库样例首先需要在项目中导包“mysql-connect原创 2022-04-04 13:23:29 · 490 阅读 · 0 评论 -
Filter实现权限拦截
Filter实现权限拦截在实现一个Javaweb项目时,有时候客户端获取某些资源需要一定的权限,这时候便可以在这些资源的路由上加过滤器,对客户端的身份进行验证;例子:需要管理员权限才能访问系统资源(sys/sys.jsp)先实现一个登录注册功能:主页<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>$Titl原创 2022-03-30 14:05:37 · 629 阅读 · 0 评论 -
监听器(统计在线人数)
监听器(统计在线人数)监听器是GUI中常用的功能,Javaweb中使用场景不是很多,可以使用监听器实现统计网站访问人数;实现原理:服务器回味每个客户端创建一个session,通过监听服务器中session的创建和销毁便可以记录当前访问网站的人数;实现步骤:实现HttpSessionListener类package com.kangzhu.listener;import javax.servlet.ServletContext;import javax.servlet.http.Http原创 2022-03-30 11:16:06 · 2651 阅读 · 0 评论 -
过滤器Filter
过滤器Filter在使用javaweb进行开发的时候很多人都会遇到乱码的问题,我们不得不在Servlet配置请求和响应的编解码格式package com.kangzhu.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServl原创 2022-03-30 10:44:21 · 42 阅读 · 0 评论 -
使用JSP创建JavaBean对象
使用JSP创建JavaBean对象JavaBean实体类javaBean有特定的写法:必须要有一个无参构造属性必须私有化必须有对应的get/set方法一般用来和数据库字段做映射 ORM;ORM:对象关系映射表 --> 类字段 --> 属性行记录 --> 对象例如:package com.kangzhu.pojo;public class People { private int id; private String name;原创 2022-03-28 22:48:51 · 2926 阅读 · 0 评论 -
JSP标签、JSTL标签、EL表达式
JSP标签、JSTL标签、EL表达式JSP中使用JSTL标签或者EL表达式需要导包:<!-- JSTL表达式依赖--> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </原创 2022-03-28 22:17:00 · 113 阅读 · 0 评论 -
JSP内置对象及作用域
JSP内置对象及作用域九大内置对象pageContext 存数据request 存数据responsesession 存数据application (ServletContext) 存数据config (ServletConfig)outpage 不怎么用exception作用域<% pageContext.setAttribute("name1", "kangzhu1"); request.setAttribute("name2", "kangzhu2")原创 2022-03-28 13:38:27 · 363 阅读 · 0 评论 -
JSP基础语法和指令
JSP基础语法和指令JSP基础语法任何语言都有自己的语法,Java有JSP作为Java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),支持Java的所有语法!JSP表达式<%--JSP表达式用来将程序的输出,输出到客户端<%= 变量或表达式%>--%><%= new java.util.Date()%>JSP脚本片段<%--JSP脚本片段--%><% int sum = 0; for (int i =原创 2022-03-27 22:10:02 · 60 阅读 · 0 评论 -
初始JSP
初始JSP什么是JSPJava server pages:Java服务器端页面,也和servlet一样,用于开发动态web!最大的特点:写JSP就像在写HTML区别:HTML只给用户提供静态数据JSP页面中可以嵌入JAVA代码,为用户提供动态数据JSP原理浏览器向服务器发送请求!,不管在访问什么资源,其实都是在访问Servlet!JSP最终会被转化成一个java类!如何找到JSP转化成的Java类呢?找到idea中的tomcat工作空间,具体路径:在运行tomcat后查原创 2022-03-26 16:37:09 · 352 阅读 · 0 评论 -
Cookie 和 Session
Cookie 和 Session会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话;有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾经来过,称之为有状态会话;一个网站怎么证明你来过?服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了;Cookie服务器登记你来过了,下次你来的时候服务器来匹配你;Session保存会话的两种技术Cookie客户端技术(响应,请求)Session服务器技术,利用这个技术,可以原创 2022-03-26 13:55:35 · 352 阅读 · 2 评论 -
Request应用
Request应用HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,Http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获取客户端的所有信息。1. 获取前端传递的参数主要用到的方法是req.getParameter();req.getParameterValues();用户登录案例:jsp页面<%@ page contentType="text/html; charset-原创 2022-03-19 13:16:47 · 422 阅读 · 0 评论 -
Response重定向
Response重定向一个web资源B收到客户端A的请求后,B通知A去访问另一个web资源C,这个过程叫做重定向;在HttpServletResponse中:void sendRedirect(String var1) throws IOException;实现重定向://直接使用sendRedirect()方法resp.sendRedirect("/down");//本质是下面两行代码resp.setHeader("Location", "/down");resp.setStatus原创 2022-03-15 21:49:46 · 554 阅读 · 0 评论 -
Response下载文件
Response下载文件web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的HttpServletResponse对象;如何要获取客户端请求过来的参数:找HttpServletRequest如何要给客户端响应一些信息:找HttpServletResponse1. 简单分类负责向浏览器发送数据的方法ServletOutputStream getOutputStream() throws IOException;P原创 2022-03-15 20:42:16 · 1025 阅读 · 0 评论 -
ServletContext对象
ServletContext对象web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的文本应用;共享数据我在这个servlet中保存的数据,可以在另一个servlet中拿到;一个继承Servlet的类:ServletContext context = this.getServletContext();String username = "kangzhu";context.setAttribute("uname", username);原创 2022-03-15 16:47:02 · 521 阅读 · 0 评论 -
Servlet
ServletServlet简介Servlet就是sun公司开发动态web的一门技术sun公司在这些API中提供了一个接口:Servlet,如果你想开发一个Servlet程序,只需完成两个小步骤编写一个类,实现Servlet接口把开发好的Java类部署到web服务器中把实现了Servlet接口的Java程序叫做,ServletHelloServlet构建一个普通的Maven项目,删除里面的src目录,并且可以在这个项目里面建立Moudle。这个空的工程就是Maven的主工程。父项原创 2022-03-14 21:49:14 · 597 阅读 · 0 评论 -
Maven
Maven我们为什么要学习这个技术?在Java web开发中,需要大量的jar包,我们手动去导入;如何能让一个东西自动帮我们导入和配置这个jar包。由此,Maven诞生了!Maven项目架构管理工具我们目前就是用来导入jar包的!Maven的核心思想:约定大于配置有约束,不要去违反。Maven会规定该如何去编写Java代码,不需要按照这个规范;下载安装Maven官网:Maven – Welcome to Apache Maven下载完成后解压即可;配置镜像:找到c原创 2022-03-14 19:07:16 · 345 阅读 · 0 评论 -
Tomcat
Tomcat安装Tomcat官网:Apache Tomcat® - Welcome!下载完成之后解压Tomcan配置bin:启动关闭的脚本文件conf:配置lib:依赖的jar包logs:日志webapps:存放网站配置Java环境变量提前配置好核心配置文件:conf/server.xml在IDEA中使用Tomcatconfigure…,找到tomcat下载的位置,并填写Tomcat Home 和 Tomcat base directory:添加artifact:App原创 2022-03-14 18:56:22 · 334 阅读 · 0 评论 -
深入理解HTTP协议
深入理解HTTP协议简介HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端与服务端进行数据传输的一种规则。HTTP是一种无状态的协议,HTTP本身不会对发送的请求和相应的通信状态进行持久好处理。这样做的目的是保持HTTP协议的简单性。然而,在许多应用场景中,我们需要保持用户的登录状态等。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。我们把所有的数据(包括状态)存储到数据库中,原创 2022-03-08 21:59:12 · 442 阅读 · 0 评论 -
GB和GiB的区别
GB和GiB的区别GiB全称Gibibyte,是giga binary byte的缩写,是计算机硬盘存储的一个单位。除此之外还有MiB和KiB,它们是1024进位,也就是说1GiB = 1024MiB = 1024*1024KiB = 1024*1024*1024 byte。GB全称gigabyte,是十进制的容量单位。相关的还有MB和KB,他们的关系是1GB = 1000 MB = 1000*1000KB = 1000*1000*1000byte。一个16GB的优盘其实只有149.01161193原创 2022-03-08 11:14:53 · 21493 阅读 · 0 评论