JavaEE复习

最近马上要JavaEE考试了,给自己做做个笔记。

课前练习

之前老师突然来了个课前练习,挺简单的,我把这题再整一遍。
1.Tomcat安装成功后默认的端口是( 8080
2.简单描述一下Servlet的生命周期

  • 编译阶段:servlet容器编译servlet源文件,生成servlet类。
  • 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法init()
  • 执行阶段:调用与JSP对应的servlet实例的service()方法,需要重写doGet()和doPost()方法
  • 销毁阶段:调用与JSP对应的servlet实例的销毁方法destroy(),销毁servlet实例

3.Request/session/application对象的作用范围是什么?

  • Request:仅在当前请求中有效
  • Session:当前会话中有效
  • Application:整个应用都有效

4.如果用JSP开发一个聊天程序,不用数据库存储聊天纪录,请问聊天记录最好存储在#3那个对象中?
Application
5.JSP forward,与redirect 的区别?
一个是请求转发,一个是重定向。
转发url路径不改变,而重定向url改变。
转发和重定向区别可以讲很多,这题这么问我也是不知道怎么答好了。
--------------------------------------------------------手动分割线-------------------------------------------------------------

Hibernate

这个我没有学过,上课也没太听讲,所以就只能硬着头皮看老师的PPT了。

ORM原理:ORM(Object Relational Mapping)是对象到关系的映射,它的作用是在关系数据库和对象之间做一个自动映射,将数据库中数据表映射成为对象,也就是持久化类,对关系型数据以对象的形式进行操作,减少应用开发过程中数据持久化的编程任务。
这个原理博客也没有人写,百度写的也看不太明白,但凭借我101分拙劣的语文基础我理解了一下,我觉得他就是把数据库里面的对象和框架代码里面的对象形成一个一对一的映射关系。

Hibernate简介:Hibernate充分体现了ORM的设计理念,提供了高效的对象到关系型数据库的持久化服务,它将持久化服务从软件业务层中完全抽取出来,让业务逻辑的处理更加简单,程序之间的各种业务并非紧密耦合,更加有利于高效地开发与维护开发。
这句话我的理解很简单,Hibernate就是一个实现ORM原理的框架。
百度是这么写的:

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
看了这一段,我感觉我是对的。

Hibernate有三个常见类:
配置类(Configuration):

主要负责管理Hibernate的配置信息以及启动Hibernate,在Hibernate运行时配置类(Configuration)会读取一些底层实现的基本信息,其中包括数据库URL、数据库用户名、数据库用户密码、数据库驱动类和数据库适配器(dialect)。
会话工厂类(SessionFactory):
会话工厂类(SessionFactory)是生成Session的工厂,它保存了当前数据库中所有的映射关系,可能只有一个可选的二级数据缓存,并且它是线程安全的。但是会话工厂类(SessionFactory)是一个重量级对象,它的初始化创建过程会耗费大量的系统资源。
会话类(Session):
会话类(Session)是Hibernate中数据库持久化操作的核心,它将负责Hibernate所有的持久化操作,通过它开发人员可以实现数据库基本的增、删、改、查的操作。但会话类(Session)并不是线程安全的,应注意不要多个线程共享一个Session。

老师对Hibernate的要求就是知道他是干什么用的,我觉得这些够了。。毕竟我到现在连SSM框架都没学个透彻呢,何谈SSH。。哭哭哭
--------------------------------------------------------手动分割线-------------------------------------------------------------

HTTP协议

老师说这个也就了解它是什么就好。

HTTP 超文本传输协议 (HTTP-Hypertext transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议
HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。 实际我们要学习的就是这两种报文。客户端发送给服务器的称为”请求报文“,服务器发送给客户端的称为”响应报文“。

HTTP协议的会话方式:
浏览器与服务器之间的通信过程要经历四个步骤
在这里插入图片描述
浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。
浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对

--------------------------------------------------------手动分割线-------------------------------------------------------------

JavaBean

JavaBean是一个可重复使用的软件部件,是描述Java的软件组件模型,是Java程序的一种组件结构,也是Java类的一种。
应用JavaBean的主要目的是实现代码重用,便于维护和管理。

JavaBean实质上是一个Java类,但是有它独有的特点,特性包括以下几方面。
● JavaBean是公共的类。
● 构造函数没有输入参数。
● 属性必须声明为private,方法必须声明为public。

我自己呢,学了这么久,觉得JavaBean在我而言,就是一个实体类,不过这个实体类有一些小要求:公有、无参构造方法、属性私有、getter和setter方法

在JSP开发模式中,采用的就是JavaBean+JSP的模式,JavaBean和JSP技术的结合不仅可以实现表现层和商业逻辑层的分离,还可以提高JSP程序的运行效率和代码重用的程度,并且可以实现并行开发,是JSP编程中常用的技术。
在JSP中提供了jsp:useBean、jsp:setProperty和
jsp:getProperty动作元素来实现对JavaBean的操作。

--------------------------------------------------------手动分割线-------------------------------------------------------------

Servlet

什么是Servlet
1.全称Server Applet:服务器端小程序
2.狭义:javax.servlet.Servlet接口及其子接口
广义:指实现了Servlet接口的实现类
3.对象由Servlet容器创建

如何使用Servlet
● 使用一个接口的传统方式:
创建一个类实现接口
new 实现类对象
调用类的方法等

● 使用Servlet接口的方式
创建一个类实现Servlet接口
在web.xml中“注册”这个实现类
Tomcat(Servlet容器)会创建实现类对象

Servlet接口
● 生命周期相关
构造器
init()方法
service()方法
destroy()方法

● 配置相关
getServletConfig()

Servlet生命周期
●第一次请求
创建对象
执行init()方法
执行service()方法

●后面请求
执行service()方法
●对象销毁前
执行destroy()方法

请求和响应
●HttpServletRequest
代表HTTP请求,对象由Servlet容器创建
功能:获取请求参数、获取请求路径即URL地址相关信息、在请求域中保存数据、转发请求

●HttpServletResponse
代表HTTP响应,对象由Servlet容器创建
功能:向浏览器输出数据、重定向请求

转发与重定向
●请求转发
1.一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发。
2.在服务器内部完成,用户感知不到,浏览器地址栏不变,整个过程浏览器只发出了一个请求,可以共享“请求域”数据,目标资源可以在WEB-INF目录下
●重定向
1.一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,称之为请求重定向。
2.服务器以302状态码通知浏览器访问新地址浏览器地址栏改变整个过程浏览器发出两次请求,不能共享“请求域”数据,目标资源不可以在WEB-INF目录下
--------------------------------------------------------手动分割线-------------------------------------------------------------

过滤器

Servlet过滤器是客户端与目标资源间的中间层组件,用于拦截客户端的请求与响应信息

过滤器接口
init(),doFilter(),destroy()
关于doFilter():此方法主要用于将过滤器处理的请求或响应传递给下一个过滤器对象。在多个过滤器的Web应用中,可以通过此方法进行传递。
--------------------------------------------------------手动分割线-------------------------------------------------------------

XML

●XML——可扩展标记语言
●XML的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
●XML用来传输和存储数据,HTML用来显示数据
●XML没有预定义标签,均为自定义标签

XML用途
1.配置文件
2.数据交换格式(Ajax、WebService)
3.数据存储(保存关系型数据)

XML解析
●XML解析是指通过解析器读取XML文档,解释语法,并将文档转化成对象
●对XML的一切操作都是由解析开始的,所以解析非常重要。
●Java 平台同时提供了 DOM(Document Object Model)和 SAX(Simple API for XML)。

--------------------------------------------------------手动分割线-------------------------------------------------------------

JSP

JSP是什么
●JSP全称Java Server Pages,顾名思义就是运行在java服务器中的页面,也就是在我们JavaWeb中的动态页面其本质就是一个Servlet
●其本身是一个动态网页技术标准,它的主要构成有HTML网页代码、Java代码片段、JSP标签几部分组成,后缀是.jsp。
●JSP相比HTML页面来说,最直观的功能就是可以在页面中使用变量,这些变量一般都是从域对象中获取。有了变量的好处就是我们的页面可以动态的显示信息。
●相比于Servlet,JSP更加善于处理显示页面,而Servlet更擅长处理业务逻辑,两种技术各有专长,所以一般我们会将Servlet和JSP结合使用,Servlet负责业务,JSP负责显示。

Servlet简化设计,逻辑与界面设计分开,开发更方便;
●HTML语法的 java 扩展,加入新的标签(<%, %>,…);
强大的组件(Java Bean)支持功能

Servlet和JSP区别
●Servlet承担客户请求与业务处理的中间角色,需要调用固定的方法,将动态内容混合到静态之中产生HTML;而在JSP页面中,可直接使用HTML标签进行输出,要比Servlet更具显示层的意义
●Servlet中需要调用Servlet API接口处理HTTP请求,而在JSP页面中,则直接提供了内置对象进行处理
●Servlet的使用需要进行一定的配置,而JSP文件通过“.jsp”扩展名部署在容器之中,容器对其自动识别,直接编译成Servlet进行处理

老师说JSP那些属性标签都不考呢 有点开心嘻嘻
但是内置对象还是要考滴~~

JSP九大内置对象
●request,请求对象
●response,响应对象
●pageContext,页面上下文对象
●session,会话对象
●application,应用程序对象
●out,输出对象
●config,配置对象
●page,页面对象
●exception,例外对象

老师提了一嘴说要了解JSP如何调用Servlet,我刚开始真是一头雾水,这是个什么问题?
但是查资料之后又想了想,其实应该是想要考察我们是否真的了解前后端交互吧~~

JSP如何调用Servlet
在JSP页面中有两种方式,分别为:form表单中action=balabala 和 a href=balabala
之后便会调用Servlet里面service()方法中重写的doGet()和doPost()方法,进行业务逻辑的处理。

嗯,一定是这样的
--------------------------------------------------------手动分割线-------------------------------------------------------------

Spring

Spring是什么
●Spring 是一个开源框架.
●Spring 为简化企业级应用开发而生.
●Spring 是一个 IOC(DI)容器和AOP面向切面编程的框架

Spring是什么具体描述
●轻量级:Spring 是非侵入性的 ,基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
依赖注入(DI — dependency injection、IOC)
面向切面编程(AOP — aspect oriented programming)
●容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期
●框架: Spring 实现了使用简单的组件配置组合成一和 Java 注解组合这些个复杂的应用. 在 Spring 中可以使用 XML 对象
●一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC

IOC/DI
●IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式
●DI(Dependency Injection) — IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接

依赖注入的方式
●属性注入(Set方法注入 )
●构造器注入
●工厂方法注入(很少使用,不推荐)

AOP
●AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充.是一种横向抽取机制,取代了传统的纵向继承机制。
●AOP 的主要编程对象是切面(aspect)
●在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类. 这样一来横切关注点就被模块化到特殊的对象(切面)里.
●AOP 的好处:每个事物逻辑位于一个位置, 代码不分散, 便于维护和升级,业务模块更简洁, 只包含核心业务代码.

我个人对于AOP的了解要多于IOC,毕竟用代码实操过,这个东西说是切面,怎么理解呢,我觉得就相当于好几个平行的管子,AOP在他们垂直的方向上安了一个新的管子,把他们都连通起来,可以共享同样的东西,那个哪里都可以用的对象就是那根管子,这根管子只要想用的时候,把它插到想用的地方就ok了,总之非常的方便,写的代码也少。

好了,这就复习完了,开心,高分过~~~~

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页