- 博客(38)
- 收藏
- 关注
原创 SpringMVC基础
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用 Spring的SpringMVC 框架或集成其他MVC开发框架;给 spring-servlet.xml 文件添加相应的 schema 配置, 可以通过打开 \docs\spring-framework-reference\htmlsingle.html 文件,然后搜索:‘xmlns:mvc’ 找到相应的 schema,注意还要添加 context 的 schema,最基本的内容如下。
2023-05-23 12:30:27
122
原创 什么是事务,事务的隔离级别和传播行为
Propagation NESTED: 即使执行该方法的线程已处于事务环境中,也依然启动新的事务,方法在联套的事务里执行:即使执行该方法的线程并未处于事务环境中, 也启动新的事务,然后执行该方法,此时与Propagation REQUIRED相同。该方法要求在新的事务环境中执行,如果当前执行线程已处于事务环境中,则先哲停当前事务,启动新事务后执行该方法:如果当前调用线程不处于事务环境中,则启动新的事务后执行方法。它比校简单,即当前如果不存在事务,就启用事务:如果存在, 就沿用下来,
2023-04-12 00:19:17
287
原创 Spring入门(AOP)
方法调用连接点是迄今为止最有用的连接点,通过它可以实现日常编程中绝大多数与 AOP 相关的有用的功能。如果需要使用其他类型的连接点(例如成员变量连接点),我们可以将 Spring AOP 与其他的 AOP 实现一起使用,最常见的组合就是 Spring AOP + ApectJ。当我们在使用 Spring AOP 开发时,若没有对切面进行具体定义,Spring AOP 会通过 Advisor 为我们定义一个一般切面(不带切点的切面),然后对目标对象(Target)中的所有方法连接点进行拦截,并织入增强代码。
2023-03-31 08:13:58
64
原创 Spring入门(ioc与di)
DI:依赖注入,一个BookService类的功能需要依赖另外一个BookDao类配合,同时需要赋上一 个具体的对象,则成这种关系是依赖注入;IOC:控制反转,以前依赖的对象自己直接new,现在不需要new,框架会自动注入对象,创建对 象的权利转移给了框架;spring框架负责所有对象的创建、管理和依赖注入;所有的对象存储的容器叫做IOC容器;首先我们需要写好基础代码和分层。
2023-03-31 08:10:11
59
原创 mybatis动态Sql语句
动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL可以彻底摆脱这种痛苦。因此mybatis提供了四大类标签解决动态SQL语句问题,mybatis又一个强大的核心特性。这是mybatis动态Sql语句需要使用的包剩下的几个在上一篇博客有提示这里就不过多演示。第一步还是要先构造方法。
2023-03-20 23:50:54
60
原创 Mybatis
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。(4)解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
2023-03-09 08:32:57
71
原创 servelt实现模糊查询以及filter(过滤器)
Filter中文意思为过滤器,顾名思义,过滤器可以在浏览器以及目标资源之间起到一个过滤的作用,例如:水净化器,可以看做是生活中的一个过滤器,他可以将污水中的杂质过滤,从而使进入的污水变成净水。目标资源作出响应后,服务器会再次将响应转交给过滤器,在过滤器中同样可以对响应信息做一一些操作, 然后再将响应发送给。当服务器收到特定的请求后,会先将请求交给过滤器,程序员可以在过滤器中对请求信息进行读取修改等操作,然后将请求信息再发送给。也可以自己来处理请求,发送响应。输入火进行模糊查询结果如下。
2023-02-27 20:29:25
244
原创 基于MVC模型和分层模式完成登录和注册以及登录后展示商品和增删改
一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,跟回家有利于后期的维护和升级。从另一个角度来看,好的代码分层架构,应该使可以很好的匹配上单一职责原则的。dao层(数据访问层)这里与数据库进行数据的访问,service则是业务逻辑层,与数据访问层进行数据的交互,而controller则是控制层对前端的请求进行处理和响应。然后我们在dao包先再建一个DaoImpl包,再impl包内建一个UserDaoImpl类,用来实现数据库的操作。
2023-02-19 22:38:10
410
原创 使用HttpServlet实现登录和注册
一、编写首页我在首页设置两个超链接实现页面跳转,分别指向登录页面和注册页面如图下所示:二、编写登录页面在登录页面中我们需要用到JDBC连接数据库进行数据查询操作(判断用户输入的账号密码是否正确)首先我们先来编写登录页面如图所示:三、编写注册页面在注册页面中我们需要用到JDBC连接数据库进行数据的添加操作(通过servlet获取浏览器发出请求中的数据添加到数据库中)在实现添加数据之前我们先来完成注册页面的编写。
2023-02-17 22:12:28
150
原创 实现使用HttpServlet完成一个假登录
这样可以通过servlet-mapping标签中的url-pattern标签来获取浏览器的请求,并通过servlet-class标签中的路径将浏览器请求发送到java文件中。然后我们在Login.java中继承HTTP Servlet类并重写doGet与doPost方法(在doGet方法中调用doPost方法的原因是这样可以避免代码的重复)if (user.equals("张三" )&& pwd.equals("123456789")){resp.getWriter().write("成功");
2023-02-16 22:50:25
59
原创 IDEA配置tomcat并发布web项目
启动成功后,浏览器自动打开项目的首页(index.jsp),可以调整页面的内容测试是否成功!启动tomcat,查看控制台日志信息,确保服务器启动正常。在配置信息中选择本地tomcat的安装目录。在IDEA中配置本地tomcat服务器。把web项目部署到tomcat服务器。打开IDEA创建一个Web项目。新建一个项目,然后创建模块。先创建一个java文件。要注意创建文件的环境。选择转化为web文件。
2023-02-13 19:22:14
215
原创 Java中的通信机制(等待和唤醒机制)
谈到线程我们经常想到的是线程间的竞争,比如去争夺锁,但这并不是全部,线程间也会有协作机制。1. wait:线程不再活动,不再参与调度,进入 wait set 中,因此不会浪费 CPU 资源,也不会去竞争锁了,这时 的线程状态即是 WAITING。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个 是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。因为:对应的锁对象可以通过notify唤醒使用同一个锁对 象调用的wait方法后的线程。
2022-12-28 00:25:03
204
原创 Java字符流的读写
OutputStreamWriter = FileOutputStream + 编码表(GBK)InputStreamReader = FileInputStream + 编码表(GBK)FileWriter = FileOutputStream + 编码表(GBK)FileReader = FileInputStream + 编码表(GBK)需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中。由于我们常见的操作都是使用本地默认编码,所以,不用指定编码。
2022-12-13 23:53:17
170
原创 JAVA中的IO流
流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。按数据流的方向:输入流、输出流按处理数据单位:字节流、字符流按功能:节点流、处理流。
2022-12-11 22:57:53
88
原创 Java中Date、SimpleDateFormat、Calendar类
Calendar类叫:日历类,是方便我们操作日期的,它里面的功能大多数是用来替代java.util.Date类的功能的。public void set(int year, int month, int day):设置时间为指定的年,月,日。public void add(int field, int count):修改指定的时间为指定的偏移量。Calendar类可以理解为是工具类,因为它是一个抽象类,所有外界无法通过new的方式创建本类对象。
2022-12-02 19:50:57
95
原创 Java中的String类
3.当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。一定要注意:value是一个final类型,不可以修改:即value不能指向新的地址,但是单个字符内容是可以变化的。2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。体现:1.当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值。String代表不可变的字符序列,简称:不可变性。
2022-12-02 19:37:10
73
原创 Scanner类和Random类的使用规则
next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。创建对象实例:Scanner sc = new Scanner(System.in);与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。nextInt()、next()的理解。
2022-11-25 09:20:36
158
原创 final,访问修饰符以及内部类的定义
内部类:将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类也是一种封装(保护性)内部类类比现实生活中的汽车与发动机、人和心脏。内部类和外部类可以方便的互相访问彼此的private域。内部类可以直接访问外部类的私有属性,但外部类要访问内部类的私有属性,必须创建内部类对象,再通过创建的内部类对象访问。内部类是一个相对独立的个体,与外部类不是is a关系(人体和心脏)内部类一般分为四种成员内部类、静态内部类、方法内部类和匿名内部类。
2022-11-22 21:02:24
114
原创 面向对象(总)
在计算机的世界中,面对对象程序设计的思想要以对象来思考问题,首先要将现实的实体抽象为对象,然后考虑这个对象所具备的属性和行为,如我们的手机,就是一个对象,将手机抽象为对象,然后识别这个对象的属性,对象具备的属性都是静态属性,比如手机的尺寸,材质,颜色等等,接着识别这个对象的动态行为,如打电话,拍照等等。我们创建一个动物类,并且在这个类中创建动物对象,但是当你提到动物类,你并不知道我说的是什么动物,只有看到了具体的动物,你才知道这是什么动物,所以说动物本身并不是一个具体的事物,而是一个抽象的事物。
2022-11-20 15:18:15
269
原创 JAVA中的进制以及转换
那么接下来我们就要思考,既然我们经常使用的是十进制,而计算机只能读懂二进制,那么十进制数字是怎么转换成二进制的呢?十进制转换为其他进制主要是使用 除基取余 直到商为0 余数反转的方法,这个”基“其实就是你要转换为X进制,这个基就是X。通过这种步骤,我们就可以实现从十进制到其他进制的转换,这里我向二进制转换,所以除2,如果想转为其他进制,相应的除8、10、16即可。我们最常见的进制就是十进制,当然,在计算机中最常见的就是二进制,除此之外,还有八进制、十六进制等。进制就是人为指定的进位制,X进制就是逢X进一。
2022-11-09 08:55:04
313
原创 JDBC数据库操作以及增删改查
3. 光标放在后面,然后使用 alt + 回车 进行自动导包,选择 ---Add 'JUnit4' to classpath。结果集的游标默认指向的是数据标题行,需要使用 next() 方法移动游标,指向真正的数据行。4. 这个方法就不需要依赖 main 方法就可以直接执行。方法的返回值是boolean类型,如果向下移动有数据行返回true,否则返回false。junit的用法补充:junit可以使方法脱离main方法直接执行,方便进行程序测试。junit 用法: 1. 方法要定义为无参无返回值的。
2022-11-02 18:49:03
464
原创 什么是JDBC
各数据库厂商根据 JDBC 的规范,实现自身数据库操作的功能代码,然后以 jar 包(数据库厂商提供的驱动 包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照JDBC 的规范来完 成数据库的操作。(3)JDBC驱动器:它是一种数据库驱动,由数据库厂商创建,也称为JDBC驱动程序JDBC驱动器实现了JDBC驱动器API,负责与特定的数据库连接,以及处理通信细节。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录的数目。我们通常说的 JDBC 是面向关系型数据库的。
2022-11-02 18:38:42
630
原创 JQuery的其他选择器以及精品案例
childen(selector) $("ul").childen("li") 相当于$("ul>li"),最近一级(亲儿子)find(selector) $("ul").find("li") 相当于$("ul li") 后代选择器。sibilings(selector) $(".first").siblings("li") 查找兄弟节点,不包括自己本身。:odd $("li:odd") 选择索引号为奇数的元素。
2022-10-17 21:01:50
93
原创 JQuery对象和jQuery的选择器
2,$是jQuery的顶级对象,相当于原生JavaScript中的window把元素利用$包装成jQuery对象,就可以调用jQuery对象。后代选择器:$("ul li")使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子元素等。子代选择器:$("ul>li") 使用>号,获取亲儿子层级的元素,不会获取到孙子层级的元素。$("div")这个方法返回的是jQuery对象封装了DOM 对象。标签选择器:$("div") 获取同一类标签的所有元素。1,用原生js获取来的对象就是DOM对象。
2022-10-17 20:57:50
245
原创 Java Script中的History对象,Location对象和JS的鼠标事件
go('url'or number)加载History列表中的一个URL或要求浏览器移动指定的页面数。forward()方法,加载History列表中的下一个URL,相当于前进按钮。replace(‘url’)通过加载URL指定的文档来替换当前文档、go(-1)代表后退一页,等价于back()方法。常用方法:back()方法,加载History列表中的上一个URL,相当于后退按钮。常用方法:assign(‘url’)加载URL指定的新的HTML文档。History对象:有关客户访问过的URL的信息。
2022-09-26 23:57:25
224
原创 Java scripr的函数
函数声明时,函数名后面的参数是形参,它本身是没有具体的值的,当实参传过来一个具体的值时,此时形参则会被分配一个内存空间用来存储这个值,当函数调用结束之后,该空间则会直接被释放。函数是类似于java或者C#中的方法,是执行特定任务的语句块,当需要重复完成某种任务时,就可以把相关的语句组织成函数。当函数中使用return时,会将一个结果返回到函数调用的地方。
2022-09-16 14:52:22
294
原创 JavaScript的条件判断语句以及三元运算符
if-else语句是条件分支语句,如果条件表达式的值为true,则程序只执行语句块1不会执行语句。尤其要注意,每行case代码后要带上break,符合条件后跳出该判断,否则代码会继续向下运行。块2的代码,如果条件表达式的值为false,则程序跳过语句块1内的语句直接执行语句块2的代。在if语句中,如果判断的条件多余一个,则可以使用多重if语句。三元运算符是一种比较方便运算三个数进行比较的运算符号。代码示例如下(判断某年的某月有多少天)if语句是最简单的常用判断语句。5.以及switch结构。
2022-09-14 09:12:06
1566
原创 Java Script的使用
js的编写位置以及注意事项:1.js代码写在script标签内,script标签可以放在head,body标签内 ,也可以写在body外,html标签外, 但是建议写在body标签的最下边 2。可以使用script标签引入一个外部的·js文件, 同时要注意在该标签内是不能写js代码的, 即使写了也不会执行js的数据类型js的混合计算数据类型数据类型的转换js运算符可以分为以下类别
2022-09-12 22:40:46
918
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人