Spring MVC
Spring MVCMVC:View(视图)、Controller(控制器)、Model(模型)
Spring MVC的核心Controller控制器(相当于中介),用于处理请求,产生响应。
Spring MVC基于Spring IOC容器运行,所有对象陂IOC管理。
Spring MVC环境配置
Maven依赖spring-webmvc
web.xml配置DispatcherServlet1234567891011121314151617181920212223<!-- DispatchServlet --><servlet> <servlet-name>springmvc</servlet-name> <!-- Dispatcherservlet是spring MVC最核心的对象 Dispatcherservlet用于拦截Http请求,并根据请求的URL调用与之对应的Controller方法,来完成Http请求的处理 --> <servlet-class>org ...
Spring框架
Spring框架Spring框架是企业开发复杂性的一站式解决方案。
Spring框架的核心是IoC容器与AOP面向切面编程。
IoC控制反转由代理人来创建和管理对象,消费者通过代理人来获取对象。
IoC的目的是降低对象之间直接耦合。基于配置提高应用程序的可维护性和扩展性。
XML配置文件1234567<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd&quo ...
Vue框架
VueVue是一套用于构建用户界面的渐进式框架。
Vue优点
易用:上手相较React和Anglar来说更简单。
灵活:渐进式技术。
性能好:采用虚拟DOM、双向数据绑定等技术。
示例代码123456789101112131415161718192021222324252627<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- 引用Vue.js文件 --> <script src="./lib/vue.js"></script></head><body& ...
Java高级-Lambda表达式
Lambda表达式
Lambda语法JDK8开始支持Lambda表达式,用来让程序编写更优雅利用Lambda可以更简洁的实现匿名内部类与函数声明与调用基于Lambda提供stream流式处理极大简化对集合的操作
12345// Lambda表达式简化代码List<String> list = Arrays.asList("Cfa","Dsadsa","Adahhd","Adsads");// JDK1.8后List类新增sort()方法,和Collections类中的sort()方法一致// JDK1.8之后,Collections.sort()方法也是调用的List.sort()方法list.sort((a, b) -> a.compareTo(b));
语法(参数列表) -> 实现语句
参数列表:使用逗号分隔参数,参数类型可省略,单参数括号可省略。
实现语句:单行直接写,多行用{}包括。
约束条件:Lambda表达式只能实现有且只有一个抽象方法的接口,Java称为”函数式接 ...
Java高级-反射
反射(Reflect)
概念及作用概念:反射(Reflect)是在运行时动态访问类与对象的技术。
反射是JDK1.2版本后的高级特性,属于java.lang.reflect包下。
大多数Java框架都基于反射实现参数配置、动态注入等特性。
用于不修改源代码(静态编译)的情况,程序运行时动态创建对应的方法。
反射机制根据外部输入的类名找到对应的类中的实现方法,实现动态功能,后续添加其他方法类也不需要修改源代码。
示例代码:
123456789101112131415Scanner sc = new Scanner(System.in);System.out.println("请输入计算方法:");String op = sc.next();System.out.println("请输入第一个数据:");Float a = sc.nextFloat();System.out.println("请输入第二个数据:");Float b = sc.nextFloat();try{ // 反射技术动态创建实现类并进行计算, ...
Java高级-工厂模式
工厂模式
设计模式设计模式是前辈总结的设计经验。
目的是为了让代码更容易理解、维护,让代码更加可靠。
分类
创建型模式
结构型模式
行为型模式
工厂模式用于隐藏创建对象的细节
工厂模式核心:工厂类(Factory)
细分为简单工厂、工厂方法与抽象工厂
简单工厂根据不同需要返回不同的类。
如一个“电脑”工厂,客户需要“办公”性质的电脑,则返回“笔记本电脑”类;客户需要“游戏”性质的电脑,则返回“游戏台式电脑”类等。选择决策交给工厂判断,客户只需要提供信息即可。
简单工厂要素:接口(根据接口抽象出不同方法)、工厂类(根据需求返回)
用户面向工厂类进行。
Java IO流
IO流
File类
File类是java.io包下代表与平台无关的文件和目录。
程序中操作文件和目录,都可通过File类完成,File类能新建、删除、重命名文件和目录。
File类本身不能访问文件内容本身,需要利用IO流(输入流/输出流)访问呢。
1234567891011121314151617181920212223// 文件基本操作方法File f = new File("文件路径");// 创建文件boolean r1 = f.createNewFile();// 删除文件boolean d1 = f.delete();// 获取文件路径f.getPath();// 判断文件是否存在f.exists();// 判断文件是否为目录f.isDirectory();// 判断文件是否为文件f.isFile();// 获取文件大小f.length();// 获取文件名f.getName();// 目录基本操作方法File d = new File("目录路径");// 创建目录boolean r2 = d.mkdirs();
字 ...
Java 多线程
多线程
概念
程序:软件程序(可执行程序.exe)
进程:程序运行的实例每个程序至少有一个进程运行。
一个程序执行进入内存运行时,变成一个进程。进程的资源彼此隔离,其他进程不允许访问。
线程:是进程内执行的”任务“ 如:迅雷中三个线程参与”下载“任务。
线程是进程内的一个”基本任务“,每个线程都有自己的功能,是CPU分配与调度的基本单位。
一个进程内可以包含多个线程,反之一个线程只能隶属于一个进程。
进程内至少拥有一个线程,这个线程叫”主线程“,主线程消亡即该进程结束。
CPU、进程、线程的关系
Java中进程与线程一个Java进程至少包含一个main主线程和一个垃圾收集线程(GC垃圾回收机制)。
创建多线程三种方式
继承Thread类创建线程(不推荐)12345678910111213// 通过继承Thread类重写run方法的方式class Runner extends Thread{ @Override public void run(){ }}public void start( ...
Java 泛型
泛型所谓泛型,就是允许在定义类、接口、方式时使用类型形参(泛型),这个类型形参将在声明变量、创建对象、调用方法时动态地指定,进而让程序具备编译时检查能力。
它是JDK1.5提供的特性。提供代码编译时纠错能力。
123ArrayList bookList = new ArrayList();bookList.add("三国演义");bookList.add(123);
上述代码中,如果对”三国演义“进行字符串操作不会出现问题,但是对123进行字符串操作时则会出错。
增加泛型则可以给出提示,所以泛型提供代码编译时纠错能力。
两种写法
<T>:Type单词的首字母,说明传入的是类型。
<E>:是Element元素的首字母,代表是集合中的元素。
泛型方法JDK1.5以后提供泛型方法的支持,允许在类没有声明泛型的前提下让方法独立使用泛型。
123456public <T> List<T> transferToList(T[] array){ List<T> list = new ArrayL ...
Java 集合
常见集合:List、Set、Map
Collections实现集合排序
字节/字符流:InputStream、OutputStream、Reader、Writer
集合
概念:Java中的一个工具类,用于存储数量不等的对象。
常用集合:
List:有序,可重复集合,有顺序索引
ArrayList(底层是数组/顺序表):基于数组实现,数据位置有序,自动对容量进行扩容,多数情况下无需指定Max长度,内存中连续紧密存储,数据访问速度快。
注:适合数据变化不大,快速读取场景。
12345678910111213141516// 创建ArrayListArrayList<String> arrayList = new ArrayList<String>();// 添加元素“Test”arrayList.add("Test");// 在索引位置1处添加元素“Test2”arrayList.add(1,"Test2");// 获取指定位置元素数据(0)arrayList.get(0);// 更新索引位置1的元素数 ...





