第五章 Java Web
Servlet与JSP
1.页面请求的工作流程是怎样的
一个Web应用程序一般是由客户端程序与服务器程序这两部分组成。
客户端主要是指用户和浏览器,用户可以通过浏览器查找所需要的资源,而这些资源则位于服务器上。
浏览器是一个工具软件,它主要有两个作用:1:完成与服务器端的交互;:2:完成HTML(超文本标记语言)的解析,从而实现把用户需要查看的资源信息一直观的形式展现出来。
服务器端用来接收客户端发来的请求,并对该请求进行处理,找到客户端请求的资源,最后把查找到的资源返回给客户端,这些资源主要包括HTML页面、图片、音频、视频、PDF文件等内容。

2.HTTP中GET与POST方法有什么区别
HTTP请求的方法有很多种类,例如GET、POST、HEAD、TRACE、OPTIONS等,但是GET和POST事两个最常用的方法。GET是最简单的一种请求方式,其主要功能是从服务端获取用户所需的资源(可以是HTML页面、图片、文档等内容),并将其作为响应返回给客户端。GET方法的作用主要用来获取服务端资源信息,就如同数据库中查询操作一样,不会影响到资源自身的状态,例如删除、修改或新增资源都是不允许的。而POST方法提供了比GET方法更强大的功能,它除了能够从服务端获取资源外,同时还可以向服务器上传数据。
虽然GET方法主要用来从服务器上获取数据,也可以向服务器上传数据,但是一般不建议采用GET方式上传数据,而是用POST。主要原因有两个:(数据量与安全性)
- 采用GET方法向服务器上传数据时,一般将数据添加到URL后面,并且两者间用接,变量间用&连接。由于对URL的长度存在限制,因此采用这种方式上传的数据量非常小,通常在1024Byte左右。由于POST方法传递数据是通过HTTP请求的附件进行的,传送的数据量更大一些,一般默认行为不受限制的。
- GET方法提交数据暴露在URL后面,对于敏感数据本身存在安全隐患。
3.什么是Servlet
HTML只能用来保存静态内容,而通常情况下静态页面很难满足实际应用的需要,鉴于此,动态页面(能够根据不同时间、不同用户而现实不同内容的页面)的概念被引入。Servlet主要功能是交互式地浏览和生成数据,生成动态Web内容。
什么是Servlet呢ervlet是采用Java语言编写的服务端程序,它运行于Web服务器中的Servlet容器中,其主要功能是提供请求/响应的Web服务模式,可以生成动态的Web内容,而这正是HTML所不具备的功能。
下面要写Servlet的执行流程…
常见笔试题:
Servlet处理请求的方式为(以进程的方式)
4.doPost()方法与doGet()方法怎么选择
从Web容器处理HTTP请求的流程中可以看出,最终的请求都会交给Servlet来处理,而Servlet是通过调用service()方法来处理请求的,service方法会根据不同的请求类型分别调用doPost()方法(处理POST请求)或doGet()方法(处理GET请求)。
具体而言,当HTTP请求中的method属性为get时,调用doGet()方法;当method属性为post时,调用doPost()方法。
5.什么是Servlet的生命周期
由于Servlet运行在容器中,没有main()方法,因此,整个生命周期都是由容器来控制的。简单而言,Servlet的生命周期只有两种状态:未创建状态与初始化状态。这两种状态的转换主要是由3个重要的方法来进行控制:init()、service()和destory()。其中init方法是servlet声明的起点,用于创建或打开任何与Servlet相关的资源以及执行初始化工作。service方法是Servlet中真正处理客户端闯过来的请求的方法,它根据HTTP请求方法(GET、POST等)将请求发送到doGet()、ddoPost()等方法。destory方法释放任何在init方法中打开的与Servlet相关的资源。
具体而言,Servlet的生命周期可以分为加载、创建、初始化、处理客户请求和卸载5个阶段。
- 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet。
- 创建:通过调用Servlet的构造函数来创建一个Servlet实例。
- 初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已被创建但向客户端提供服务之前调用的,需要注意的是,init方法只会被调用一次。
- 处理客户请求:Servlet一旦被创建后,就可以为客户端提供服务了。每当有新的客户请求到来时,容器都会创建一个新的线程来处理该请求,接着会调用Servlet里面的service(当然它会调用doPost和doGet方法)来完成客户端的请求。
- 卸载:容器在卸载Servlet之前需要调用destory方法,让Servlet自己释放占用的系统资源,一旦destory方法被调用,容器酒气就不会再向这个Servlet发送任何请求信息了。如果容器需要这个Servlet,那么就必须重新创建并实例化一个实例。需要注意的是:destory方法只会执行一次。
常见笔试题:
zaiServlet的声明周期中,容器只会调用一次的方法是(init和destory)。
6.JSP有哪些优点
在引入JSP之前,在Web应用程序中,所有业务逻辑和HTML的响应都是在Servlet中实现的,但是在使用这种方式时,存在一个比较大的缺陷:必须把给用户响应的视图组装成一个很长的HTML格式的字符串写入println()方法中。所以,使用这种方式变成,在编写一段很长的HTML字符串时很容易出错,而且代码可读性很差。同时业务逻辑与视图没有分离,系统的可扩展性、可维护性较差。
因此引入JSP,从本质上说,就是嵌入了Java代码的HTML文件(但是注意的是,JSP页面最好少写Java代码)。JSP的引入在一定程度上解决了Servlet存在的缺点。其实现理念是让每个Servlet只负责其对应的业务逻辑的处理,让JSP来负责用户的HTML显示,因此实现了业务逻辑与视图实现的分离,从而极大地提高了系统的可扩展性。
7.JSP与Servlet有何异同
JSP与Servlet的相同点为:JSP可以被看作一个特殊的Servlet,它只不过是对Servlet的扩展,只要JSP可以完成的工作,使用Servlet都可以完成。由于JSP页面最终要被转换成Servlet来运行,因此处理请求实际上是编译后的Servlet。
不同点:1.Servlet是在Java中嵌入了HTML代码,比较适合做流程控制,业务处理;JSP是HTML中嵌入了Jsvs代码,比较适合页面的显示;2.Servlet没有内置对象,JSP中内置对象都是必须通过HttpServletRequest对象、HttpServletResponse对象以及HttpServlet对象得到。
8.如何使用JSP与Servlet实现MVC模型
9.Servlet中forward和redirect有什么区别
forward是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此在客户端浏览器的地址栏中不会显示转向后的地址,还是原来的地址,此外,真个定向过程用的是用一个request。
、(随后修改)
10.JSP的内置对象有哪些
9个
11.request对象有哪些方法
12.JSP有哪些动作
13.JSP中include指令和include动作有什么区别
14.会话跟踪技术有哪些
15.Web开发中如何制定字符串的编码
16.什么是Ajax
实一个结合了Java技术、XML以及JavaScript的编程技术,其主要目的是在不刷新页面的情况下通过与服务器进行少量数据的交互来提高页面的交互性,减少响应时间,从而改善用户体验。
17.cookie和session有什么区别
cookie保存在客户端,session保存在服务端,后者更安全,前者耽搁cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie。
框架
11.什么是IoC
控制反转有时也被称为依赖注入,是一种降低对象耦合关系的设计思想。
12.什么是AOP
面向切面编程是对面向对象开发的一种补充。
13.什么是Spring框架
Spring框架是一个J2EE的框架,这个框架提供了对轻量级IoC的良好支持,同时也提供了对AOP技术非常好的封装。相比其他框架,Spring框架的设计更加模块化,框架内的每个模块都能完成特定的工作,而且各个模块可以独立地运行,不会相互牵制。
14.什么是Hibernate
Hiberate是对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,所以任何可以使用JDBC的地方都可以用Hibernate来替代。Hiberate实现了Java对象与关系数据库记录的映射关系,简化了开发人员访问数据库的流程。
15.什么是Hibernate的二级缓存
一级缓存由Session来管理,二级缓存由SessionFactory来管理。在使用时,二级缓存可有可无,一级缓存必须有。一级缓存生命周期短,线程不安全,因此引入二级缓存。
16.Hiberate中session的update()和saveOrUpdate()、load()和get()有什么区别
17.Hiberate有哪些主键生成策略
瞬时态,持久态和托管态
18.如何实现分页机制
19.什么是SSH
20.什么是SSM
第六章 数据库原理
1.SQL语言的功能有哪些
功能有四个:数据查询、数据操纵(插入、修改以及删除)、数据定义和数据控制。
数据查询是:select
数据操纵(insert、update、delete)
数据定义(create、drop)数据表的建立、数据表的删除。
数据控制(grant、revoke)为用户授予系统权限、收回系统权限
常见面试题:
delete与truncate命令有哪些区别br> 相同点:都可以删除一个表中的数据。
不同点:
- truncate是一个数据定义语句,它会被隐式地提交,一旦执行后将不能回滚。delete执行的过程是每次从表中删除一行数据,同时将删除的操作以日志的形式进行保存,以便将来进行回滚操作。
- 用delete操作后,被删除的数据占用的存储空间还在,还可以回复。而用truncate操作删除数据后,被删除的数据会立即释放占用的存储空间,被删除的数据是不能被恢复的。
- truncate的执行速度比delete快。
常见面试题:
Oracle数据库的一个表中有若干条数据,其占用的存储空间为10MB,如果用delete语句删除表中的所有数据,此时该表所占存储空间为多大br> 10MB。数据库中delete操作类似于在Windows系统中把数据放到回收站,还可以回复,因此它不会立即释放掉所占的存储空间。如果想在删掉数据后立即释放存储空间,可以使用truncate。
2.内连接与外连接有什么区别/p>
-
内联接 select fieldlist from table1 [inner] join table2 on tabl1.column = table2.column;
内联接返回的是两个表共有的行。例如,检索 students和courses表中学生标识 相同的所有行。 -
外联接。外联接可以是左向外联接、右向外联接或完整外部联接。left [outer join]、right [outer] join、full [outer] join。
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3.什么是事务
事务是数据库操作的最小工作单元;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。
事务必须满足四个属性,即原子性、一致性、隔离性、持久性。
原子性:是数据库操作的最小工作单元,事务中包含的各操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
隔离性:一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性:指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
4.什么是存储过程与函数有什么区别于联系
第七章 设计模式
单例模式
单例模式确保一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例。
注意:单例模式保证系统中的一个类只有一个实例。单例类的构造方法必须私有,同时单例类必须提供一个全局访问点。
工厂模式
https://www.cnblogs.com/raichen/p/5671637.html
https://www.cnblogs.com/zailushang1996/p/8601808.html
首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。
适配器模式
适配器模式是把一个类的接口转换成客户端所期望的另一种接口,从而使根本因接口与不陪陪而无法一起工作的两个类能够一起工作。适配类可以根据所传递的参数返回一个合适的实例给客户端。
举个例子,现在系统已经实现了一个点、线、正方形。而现在客户要求实现一个圆形,一般的做法是建立一个类来实现Shape接口。然后实现里面的display、fill、undisplay等方法。但是现在系统里面已经实现了一个画圆的类,但是方法名却和自己的不一样。则不能直接使用这个类,因为那样无法保证多态。这时候我们创建一个适配器接口(Adapter),里面有两个(其实是四个)方法,一个是support方法,看哪些类是我们适配的接口。另一个三个方法是分别调用上面的三种方法(传入参数是实现的接口,根据此在方法中判断嗲用哪个方法)。
观察者模式
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91280 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!