于笑扬java综合知识点总结 必背

更新时间:2023-12-01 08:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

目录.............................................................................................................................. 1 基础篇.......................................................................................................................... 3

一、JDK常用的包 ................................................................................................ 3 二、 Get和Post的区别 ..................................................................................... 4 三、 Java多态的具体体现 ................................................................................. 4 四、 StringBuffer StringBuilder String 区别 ....................................................... 4 五、 Hashtable与HashMap的区别 .................................................................. 5 六、 九大隐式对象............................................................................................. 5 七、 Forword(请求转发)与Redirect(重定向) .................................................... 5 八、JQurey总结 .................................................................................................. 5 九、 XML和Json的特点 ................................................................................... 5 十request.getSession() reqeust.getSession(false)和request.getSession(true) .. 6 十一、 Page和PageContext的区别 ................................................................. 6 十二、 Ajax总结 ................................................................................................. 6 十三、JSP9大隐视对象中四个作用域的大小与作用范围 .............................. 7 十四、 List,Set,Collection,Collections ................................................................. 7 十五、 java的基本数据类型 ............................................................................. 7 十六、 冒泡排序................................................................................................. 7 十七、二分查找法............................................................................................... 8 十八、时间类型转换........................................................................................... 8 十九、 阶乘......................................................................................................... 9 二十、UE和UI的区别 ....................................................................................... 9 二十一、osi七层模型 ......................................................................................... 9 二十二、线程和进程的区别............................................................................... 9 二十三、jvm的内存结构 ................................................................................ 10 二十四、内存泄露和内存溢出....................................................................... 10 二十五、单例................................................................................................... 10 二十六、解析xml文件的几种技术 ............................................................... 11 二十七、项目的生命周期............................................................................... 12 二十八、OSCache的判断 ............................................................................... 12 二十九、经常访问的技术网站....................................................................... 13 三十、项目团队中交流的工具....................................................................... 13 三十一、平时浏览的书籍............................................................................... 13 三十二、java Exception体系结构 .................................................................. 13 三十三、session和cookie的区别 ................................................................. 14 三十四、字节流与字符流的区别................................................................... 14 三十五、final,finally,finalize 三者区别 .......................................................... 15 三十六、Io流的层次结构 .............................................................................. 15 三十七、JAVA: .................................................................................................. 16 三十八、JavaSE JavaEE JavaME区别 .............................................................. 16

三十九、JDK JRE JVM的区别: ............................................................... 17 四十、报错的状态码:................................................................................... 17 四十一、协议以及默认的端口号................................................................... 17 四十二、抽象类与接口的区别....................................................................... 18 四十三、修饰符的作用................................................................................... 18 框架篇...................................................................................................................... 19

一、 Struts1的运行原理 ................................................................................ 20 二、 Struts2的运行原理 ................................................................................ 20 三、 struts2的体系结构 ................................................................................ 20 四、 Spring MVC运行原理 ............................................................................. 21 五、 Struts1.x与Struts2.x的区别 ................................................................. 22 六、 Spring MVC、struts1和struts2区别 .................................................... 22 七、 Struts2中result中的type类型............................................................ 23 八、 Struts2标签 ............................................................................................ 23 九、 SSI整合 ................................................................................................... 23 十、 SSH整合 ................................................................................................. 24 十、 Spring MVC整合 ..................................................................................... 24 十一、Hibernate 中get 和 load的区别 ...................................................... 25 十二、 Hibernate、Ibatis、Jdbc三者的区别 ............................................... 25 十三、 Hibernate的运行原理 ....................................................................... 25 十四、 Hibernate五大核心(类/接口)简述 .............................................. 25 十五、 Hibernate与JDBC的区别 ................................................................. 26 十六、Hibernate中的两大配置文件 ............................................................. 26 十七、 Hibernate事务处理 ........................................................................... 26 十八、 Hibernate的三种状态以及状态的转换 ........................................... 26 十九、 分页步骤............................................................................................. 27 二十、hibernate缓存概述 .............................................................................. 27 二十一、Ssh的概述: .................................................................................... 27 二十二、防止表单重复提交........................................................................... 28 二十三、JSP标签: ........................................................................................ 28 二十四、过滤器............................................................................................... 29 二十五、拦截器的理解................................................................................... 29 二十六、Spring融入框架 ............................................................................... 30 数据库篇.................................................................................................................. 30

一、 JDBC连接数据库步骤(以MYSQL为例)................................................ 30 二、 数据库连接池......................................................................................... 31 三、 mysql的数据库导入导出 ...................................................................... 31 四、 jdbc分段批量提交的时候出现异常怎么处理? ................................... 32 五、 jdbc批量处理数据 ................................................................................. 32 六、 Oracle分页 ............................................................................................. 33 七、 Oracle的基本数据类型 ......................................................................... 33 八、 id、rowid、rownum的区别.................................................................. 34 九、 主键和唯一索引的区别?..................................................................... 34 十、 Preparedstatement和statement的区别 .............................................. 34

十一、 数据库三范式..................................................................................... 34 十二、 视图概述............................................................................................. 35 十三、 存储过程概述..................................................................................... 35 十四、 索引概述............................................................................................. 36 十五、 必背的sql语句 .................................................................................. 37 业务场景篇.............................................................................................................. 40

一、 Spring的概述 ......................................................................................... 40 二、 事务概述................................................................................................. 41 三、 权限概述................................................................................................. 42 四、 OSCache业务场景 ................................................................................. 43 五、 线程概述................................................................................................. 43 六、 Ajax请求Session超时问题 ................................................................... 44 七:java线程池概述 ....................................................................................... 44 八、 OSCache概述 ......................................................................................... 45 九、 OSCache+autocomplete+单例业务场景 ................................................ 46 十、 缓存概述................................................................................................. 46 十一、 实现页面静态化业务场景................................................................. 47 十二、 servlet线程安全描述 ........................................................................ 47 十三、 (jbpm4)工作流引擎描述:................................................................... 48 十四、 JPBM业务场景 ................................................................................... 49 十五、 Ant描述 .............................................................................................. 49 十六、 FreeMarker描述 ................................................................................. 50 十七、 webService描述 ................................................................................. 50 十八、 oracle索引概述 .................................................................................. 52 十九、 oracle存储过程 .................................................................................. 52 二十、Junit 业务场景 ..................................................................................... 53 二十一、Apache+Tomcat 实现负载均衡及seesion复制 ............................ 53 二十二、Ant业务场景 .................................................................................... 54 二十三、maven业务场景 ............................................................................... 54 二十四、Servlet的概述: .............................................................................. 55 优化篇...................................................................................................................... 61

一、 代码优化................................................................................................. 61 二、 业务优化................................................................................................. 62 三、 sql优化 ................................................................................................... 62 四、 防sql注入 .............................................................................................. 65

基础篇

一、JDK常用的包

java.lang: 这个是系统的基础类,比如String、Math、Integer、System和Thread, 提供常用功能。

java.io: 这里面是所有输入输出有关的类,比如文件操作等

java.net: 这里面是与网络有关的类,比如URL,URLConnection等。 java.util : 这个是系统辅助类,特别是集合类Collection,List,Map等。 java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等

二、Get和Post的区别

1.get是从服务器上获取数据,post是向服务器传送数据, 2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 3.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 4.在进行文件上传时只能使用post而不能是get。

三、Java多态的具体体现

面向对象编程有四个特征:抽象,封装,继承,多态。

多态有四种体现形式:

1. 接口和接口的继承。 2. 类和类的继承。 3. 重载。 4. 重写。

其中重载和重写为核心。

重载:重载发生在同一个类中,在该类中如果存在多个同名方 法,但是方法的参数类型和个数不一样,那么说明该方法被重 载了。

重写:重写发生在子类继承父类的关系中,父类中的方法被子 类继承,方法名,返回值类型,参数完全一样,但是方法体不 一样,那么说明父类中的该方法被子类重写了。

四、StringBuffer StringBuilder String 区别

String 字符串常量 不可变 使用字符串拼接时是不同的2个空间 StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加 StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加

1.执行效率:StringBuilder>StringBuffer>String.

2.String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer.

3.对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder.

五、Hashtable与HashMap的区别

HashMap不是线程安全的,HashTable是线程安全。 HashMap允许空(null)的键和值(key),HashTable则不允许。 HashMap性能优于Hashtable。 Map

1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.

2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.

3.HashMap允许键或值为空,而HashTable不允许键或值为空.

六、九大隐式对象

输入/输出对象: request response out

作用域通信对象: session application pageContext Servlet 对象: page config 错误对象: exception

七、Forword(请求转发)与Redirect(重定向)

1、从数据共享上

Forword是一个请求的延续,可以共享request的数据 Redirect开启一个新的请求,不可以共享request的数据 2、从地址栏

Forword转发地址栏不发生变化 Redirect转发地址栏发生变化

八、JQurey总结

jquery是一个轻量级的js框架,具有跨浏览器的特性,兼容性好, 并且封装了很多工具,方便使用。

常用的有: 选择器 ,dom操作 ,ajax(ajax不能跨域) ,特效,工具类九、XML和Json的特点

Xml特点:

1、有且只有一个根节点; 2、数据传输的载体

3、所有的标签都需要自定义 4、是纯文本文件

Json(JavaScript Object Notation)特点: json分为两种格式:

private static Singleton2 single=null; public tatic Singleton2 getInstance() { if (single == null) {

single = new Singleton2(); }

return single; } }

线程安全:

public class Singleton3 { private Singleton3() {} private static Singleton3 single ; public static Singleton3 getInstance() { if(null == single){ synchronized(single ){ if(null == single){ single = new Singleton3(); } } } return single; } }

参考:

通过双重判断来保证单列设计模式在多线程中的安全性,并且它在性能方面提高了很多。 synchronized在方法上加锁 (同步锁)

synchronized在代码块内部加锁 (同步代码块) synchronized(同步锁)

使用synchronized如何解决线程安全的问题? 1.synchronized在方法上加锁 2.synchronized在代码块内部加锁 1.懒汉 2.饿汉 3.双重判断 二十六、解析xml文件的几种技术 1、 解析xml的几种技术 1.dom4j 2.sax 3.jaxb 4.jdom 5.dom

1.dom4j

11

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

2.sax

SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。 3.jaxb

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。

2、dom4j 与 sax 之间的对比:【注:必须掌握!】

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出, sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml 也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性 所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j

二十七、项目的生命周期

1.需求分析 2.概要设计 3.详细设计(用例图,流程图,类图) 4.数据库设计(powerdesigner) 5.代码开发(编写) 6.单元测试(junit 白盒测试)(开发人员) svn版本管理工具(提交,更新代码,文档) 7.集成测试 (黑盒测试,loadrunner(编写测试脚本)(高级测试)) 8.上线试运行 (用户自己体验) 9.压力测试(loadrunner) 10.正式上线 11.维护

二十八、OSCache的判断

12

Object obj = CacheManager.getInstance().getObj(\

//从缓存中取数据 if (null == obj) { obj = brandDao.getBrandList();

//如果为空再从数据库获取数据

//获取之后放入缓存中 CacheManager.getInstance().putObj(\ } return (List)obj;

二十九、经常访问的技术网站

1.csdn(详细步骤的描述) 2.iteye(详细步骤的描述)

3.oschina(开源中国获取java开源方面的信息技术)

4.java开源大全 www.open-open.com(获取java开源方面的信息技术) 5.infoq(对java,php,.net等这些语言的一些最新消息的报道)

三十、项目团队中交流的工具

飞秋(局域网) qq(局域网,外网)

RTX(局域网,外网) 邮箱 (局域网,外网)

三十一、平时浏览的书籍

实战经验:

*** in action(实战) *** 深入浅出 *** 入门指南 思想基础:

大话设计模式 重构

三十二、java Exception体系结构

java 异常是程序运行过程中出现的错误。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中定义了许多异常类,分为两大类,错误Error和异常Exception。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常(非runtimeException),也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 1、Error与Exception Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。 这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。 Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。 2、运行时异常和非运行时异常

13

运行时异常: 都是RuntimeException类及其子类异常: IndexOutOfBoundsException 索引越界异常 ArithmeticException:数学计算异常 NullPointerException:空指针异常 ArrayOutOfBoundsException:数组索引越界异常 ClassNotFoundException:类文件未找到异常 ClassCastException:造型异常(类型转换异常) 这些异常是不检查异常(Unchecked Exception),程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的。 非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如: IOException、文件读写异常 FileNotFoundException:文件未找到异常 EOFException:读写文件尾异常 MalformedURLException:URL格式错误异常 SocketException:Socket异常 SQLException:SQL数据库异常

三十三、session和cookie的区别

session是存储在服务器端,cookie是存储在客户端的,所以安全来讲session的安全性要比cookie高,然后我们获取session里的信息是通过存放在会话cookie里的sessionid获取的。又由于session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以会把很重要的信息存储在session中,而把一些次要东西存储在客户端的cookie里,然后cookie确切的说分为两大类分为会话cookie和持久化cookie,会话cookie确切的说是,存放在客户端浏览器的内存中,所以说他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,然而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间,然后我们考虑一问题当浏览器关闭时session会不会丢失,从上面叙述分析session的信息是通过会话cookie的sessionid获取的,当浏览器关闭的时候会话cookie消失所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。那么,session在什么情况下丢失,就是在服务器关闭的时候,或者是session过期(默认时间是30分钟),再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法,然后session在什么时候被创建呢,确切的说是通过调用getsession()来创建,这就是session与cookie的区别.

访问HTML页面是不会创建session,但是访问index.JSP时会创建session(JSP实际上是一个Servlet, Servlet中有getSession方法) 三十四、字节流与字符流的区别

stream结尾都是字节流,reader和writer结尾都是字符流

14

两者的区别就是读写的时候一个是按字节读写,一个是按字符。 实际使用通常差不多。

在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。

只是读写文件,和文件内容无关的,一般选择字节流。

三十五、final,finally,finalize 三者区别 Final是一个修饰符:

当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值

当final修饰的变量为静态变量(即由static修饰)时,必须在声明这个变 量的时候给它赋值

当final修饰方法时,该方法不能被重写 当final修饰类时,该类不能被继承

Final不能修饰抽象类,因为抽象类中会有需要子类实现的抽 象方法,(抽 象类中可以有抽象方法,也可以有普通方法,当一个抽象类中没有抽象方 法时,这个抽象类也就没有了它存在的必要)

Final不能修饰接口,因为接口中有需要其实现类来实现的方法 Finally:

Finally只能与try/catch语句结合使用,finally语句块中的语句一定会执行, 并且会在return,continue,break关键字之前执行 finalize:

Finalize是一个方法,属于java.lang.Object类,finalize()方法是GC (garbage collector垃圾回收)运行机制的一部分,finalize()方法是在 GC清理它所从 属的对象时被调用的

三十六、Io流的层次结构

从流的方向

输入流 输出流 从流的类型上 字符流 字节流

inputstream和outputstream都是抽象类 它们下面的实现包括

FileInputStream,BufferedInputStream FileOutputStream,BufferedOutputStream reader 和 writer

FileReader,BufferedReader,StringReader

FileWriter,BufferedWriter,StringWriter,PrintWriter

15

三十七、JAVA:

Java是面向对象的,跨平台的,它通过java虚拟机来进行跨平台操作,它可以进行自动垃圾回收的【c语言是通过人工进行垃圾回收】,java还会进行自动分配内存。【c语言是通过指定进行分配内存的】,只需要new一个对象,这个对象占用了多少空间,不需要我们来管,java虚拟机负责管这些,用完之后也不需要我们来释放,java虚拟机会自动释放

三十八、JavaSE JavaEE JavaME区别

是什么:

Java SE=Java Standard Edition=j2se = java 标准版 Java EE=Java Enterprise Edition=j2ee= java 企业版 Java ME=Java Mobile Edition=j2me = java移动版 特点:

16

SE主要用于桌面程序(swing),控制台开发(main程序)。 EE企业级开发(JSP,EJB,Spring MVC,Struts,hibernate,ibatis等), 用于企业级软件开发,网络开发,web开发。

ME嵌入式开发(手机,小家电,PDA)。[苹果的ios,黑莓] 三者之间的关系:

Java SE(Java Platform, Standard Edition,Java标准版)就是基于JDK和JRE的。 Java SE为Java EE提供了基础。

Java EE除了基于我们这个所谓的Java SE外,还新加了企业应用所需的类库

三十九、JDK JRE JVM的区别:

Jdk【Java Development ToolKit】就是java开发工具箱, JDK是整个JAVA的核心里边包含了jre,它除了包含jre之外还包含了一些javac的工具类,把java源文件编译成class文件,java文件是用来运行这个程序的,除此之外,里边还包含了java源生的API,java.lang.integer在rt的jar包里边【可以在项目中看到】,通过rt这个jar包来调用我们的这些io流写入写出等

JDK有以下三种版本:

J2SE,standard edition,标准版,是我们通常用的一个版本

J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序

J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序 Jre【Java Runtime Enviromental】是java运行时环境,那么所谓的java运行时环境,就是为了保证java程序能够运行时,所必备的一基础环境,也就是它只是保证java程序运行的,不能用来开发,而jdk才是用来开发的,所有的Java程序都要在JRE下才能运行。

包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

Jre里边包含jvm Jvm:【Java Virtual Mechinal】因为jre是java运行时环境,java运行靠什么运行,而底层就是依赖于jvm,即java虚拟机,java虚拟机用来加载类文件,java中之所以有跨平台的作用,就是因为我们的jvm

关系:

J2se是基于jdk和jre,

JDK是整个JAVA的核心里边包含了jre, Jre里边包含jvm

四十、报错的状态码: 301 永久重定向 302 临时重定向 304 服务端 未改变 403 访问无权限 200 正常 404 路径

500 内部错误

四十一、协议以及默认的端口号

17

ftp 21 文件传输协议

Pop3 110 它是因特网 电子邮件 的第一个离线 协议标准 Smtp 25 简单邮件传输协议 http 80 超文本传输协议 oracle 默认端口号1521 mysql默认端口号 3306

四十二、抽象类与接口的区别

1.一个类只能进行单继承,但可以实现多个接口。

2.有抽象方法的类一定是抽象类,但是抽象类里面不一定有抽象方法; 接口里面所有的方法的默认修饰符为public abstract,接口里的成员变 量默认的修饰符为 pulbic static final。

关系

接口和接口 继承

接口和抽象类 抽象类实现接口 类和抽象类 类继承抽象类 类和类 继承 四十三、修饰符的作用

修饰符的作用范围:

private default protected public

同一个类中 可以 可以 可以 可以 同一个包的类中 可以 可以 可以 不同包的子类中 可以 可以 不同包的类中 可以

四十四、onready和onload的区别 1.onready比onload先执行

2.onready是在页面解析完成之后执行,而onload是在页面所有元素加载后执行 3.onload只执行最后一个而onready可以执行多个。 参考:

1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 $(document).ready()可以同时编写多个,并且都可以得到执行 3.简化写法 window.onload没有简化写法 $(document).ready(function(){})可以简写成$(function(){});

18

另外,需要注意一点,由于在$(document).ready() 方法内注册的事件,只要DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的html 下载完毕,并且已经解析为DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用Jquery 中另一个关于页面加载的方法---load() 方法。Load() 方法会在元素的onload 事件中绑定一个处理函数。如果处理函数绑定给window 对象,则会在所有内容( 包括窗口、框架、对象和图像等) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。 Jquery 代码如下: $(window).load(function (){ // 编写代码 });等价于JavaScript 中的以下代码 Window.onload = function (){ // 编写代码 } 四十五、switch默认接受的几种数据类型

Short, int, byte, char

四十六、request 跟session的区别 1.他们的生命周期不同, request对应的是一次请求, session对应的是一次会话

2.request占用资源比较少,相对来说缺乏持续性,

而session资源消耗比较大,所以通常使用request来保存信息 四十七、找到解决svn冲突方法

对于svn冲突,可以采用手工处理将冲突的部分进行整合, 之后备份最新整合后的文件,采用覆盖更新的方式处理完 冲突之后,再把最新整合后的文件进行提交。

19

四十八、反射的描述

通过字符串可以动态创建java对象,并且可以动态访问方法, 属性等。

我们在项目中的时候封装过数据库jdbc的持久层, 其中就利用反射这项 技术来达到通用 和灵活的目的。

框架篇

一、Struts1的运行原理

在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器ActionServlet接收,ActionServlet在用户请求时将请求参数放到对应的ActionForm对象中的成员变量中,然后ActionServlet则会根据struts-config.xml中的映射关系找到相应的Action中的方法,将对应的ActionForm一并传给这个Action中的方法里,然后执行相应的业务逻辑操作,最后就根据ActionMapping的findforward方法返回一个ActionForward,之后在struts-config.xml中找到与之对应的forward标签,根据它的配置路径找到对应的jsp页面。 二、Struts2的运行原理

1、tomcat 启动的时候会加载 web.xml 、核心控制器 FilterDispatcher 会加载并解析 struts.xml

2、客户端会发送一个请求到 action 、FilterDispatcher 会根据后缀名进行拦截

3、FilterDispatcher根据 struts.xml 的配置文件信息 找到 某个action 对应的某个类里的指定方法

4、执行相关的业务逻辑最后返回 一个String 5、 里配置 name的属性值与返回的String 进行匹配,跳转到指定的jsp 页面

三、struts2的体系结构

1、客户端向Servlet容器(例如Tomcat)发送一个请求; 2、这个请求经过一系列的过滤器(Filter);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

20

本文来源:https://www.bwwdw.com/article/gwft.html

Top