Javaweb相关名词解释
1. JQuery
百科定义:
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。
jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。
它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

我的理解:
- JQuery是 JS语言体系 下的** 一个框架** ,是一个优秀的 JS语言代码库 ,即封装好的代码库。
- JQuery是一种 简约的JS设计模式 ,能优化HTML文档,事务处理,动画设计和Ajax交互。
2. JavaScript
3. Jason
4. Ajax
5. React
6. Dao
7. MVC架构
8. EL表达式
8.1 EL表达式基本信息
定义:
百度百科:
EL表达式的全称是 表达式语言(Expression Language)。
EL表达式是为了让JSP更加简洁而出现的一种表达式,用于表达在JSP语法中难以直接获取的对象。
======================================================================
以MVC模式设计程序,JSP只是视图,视图的任务就是显示响应,而不是在JSP中做任何关于程序控制和业务逻辑的事情。
所以在JSP页面中应该尽可能少的、或者是完全不出现Java代码。
======================================================================
在使用JSP标准动作操作 JavaBean 时,如果JavaBean的属性是 String类型或者基本类型,则能够实现类型的自动转换,如 JavaBean的属性从String类型可自动转换成int类型。如果 Javabean中的属性不是 String类型和基本类型,而是一个 Object类型,并且属性还有自己的属性,如何获得此 Object类型的属性呢?
JSP标准动作中没有提供这种嵌套式访问机制,所以要想实现这个功能,就只能在JSP页面中通过Java代码来读取 Object类型的属性。
从JSP2.0之后,可以使用EL表达式来处理这样的的问题。所以,EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language)。
EL表达式语言是一种简单的语言,提供了在JSP中简化表达式的方法,目的是为了尽量减少JSP页面中的Java代码,使得JSP页面的处理程序编写起来更加简洁,便于开发和维护。
我的理解:
- EL表达式是为了让JSP更加简洁而出现的一种表达式,用于表达在JSP语法中难以直接获取的对象。
- JSP中存在可以自动转换类型的属性,如基本类型。但也存在JSP标准语法中不能自动转换类型的,如Object类型。
此时就需要使用 EL表达式 取到该类型结果。
8.2 EL表达式语法
(1)基础语法
- 在JSP中访问 模型对象 是通过 EL表达式的语法 来表达。
- 所有EL表达式的格式都是以“\({}”表示:例如,\){ userinfo}代表获取变量userinfo的值。
- 当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。
也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。
(2)[ ]与"." 运算符
- EL 提供“.“和“[ ]“两种运算符来存取数据。
- "[]"用于当要存取的属性名称中 包含一些特殊字符 ,如 . 或 - 等并非字母或数字的符号。
例如:${ user. My-Name}应当改为${user["My-Name"]} - "[]"同样用于动态取值(如变量),而“.“无法做到动态取值。
例如:${sessionScope.user[data]}其中,data 是一个变量。
(3)EL表达式取出变量与范围:
EL存取变量的方法很简单,例如:${username}
它的意思是取出 某一范围 中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会 **依序从Page、Request、Session、Application范围 **查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传" "。
| EL表达式的范围 | 属性 |
|---|---|
| Request | PageScope |
| Page | RequestScope |
| Session | SessionScope |
| Application | ApplicationScope |
(4)其他说明:
- 注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext} 也返回 PageContext 对象。
- 注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
8.3 EL表达式的隐式对象
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:
| 隐式对象 | 定义与作用 |
|---|---|
| pageContext | JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,${pageContext.response}为页面的响应对象赋值。 |
| param | 将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name)获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 ${param . name}相当于 request.getParameter (name)。 |
| paramValues | 将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues. name} 相当于 request.getParamterValues(name)。 |
| header | 将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 ${header. name} 相当于 request.getHeader(name)。 |
| headerValues | 将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 ${headerValues. name} 相当于 request.getHeaderValues(name)。 |
| cookie | 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie. name .value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues. name} 表达式。 |
| initParam | 将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面: |
| pageScope | 将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope .objectName. attributeName} 访问对象的属性。 |
| requestScope | 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope. objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope. objectName. attributeName} 访问对象的属性。 |
| sessionScope | 将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:${sessionScope. name} |
| applicationScope | 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。 |
9. JavaBean
百度百科:
JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用,也可以可视化地被Java开发工具使用。
它包含属性(Properties)、方法(Methods)、事件(Events)等特性。
JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。
任何可以用Java代码创造的对象都可以利用JavaBean进行封装。
通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些JavaBean就好比组成这辆汽车的不同零件。
对软件开发人员来说,JavaBean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。
====================================
JavaBean的种类按照功能可以划分为可视化和不可视化两类。
可视化的JavaBean就是拥有GUI图形用户界面的,对最终用户是可见的。
不可视化的JavaBean不要求继承,它更多的被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序的分离,提高了代码的可读性和易维护性,使系统更健壮和灵活。
随着JSP的发展,JavaBean更多的应用在非可视化领域,并且在服务器端应用方面表现出了越来越强的生命力。
我的理解:
- JavaBean是一种可重用的Java组件,它可以被Servlet,JSP等java应用程序所调用。
- 任何可以用Java代码创造的对象都可以利用JavaBean进行** 封装。**
- 通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序。
- JavaBean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。
10. SSH框架
百科介绍:
SSH是 struts+spring+hibernate的一个集成框架,是16年之前较为流行的一种Web应用程序开源框架。区别于 Secure Shell 。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。
11. SpringMVC框架
框架包含 DAO层,Service层,Controller层,View层:
转自:https://www.jianshu.com/p/df659d7fbbf7
11.1 Dao层
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
11.2 Service层
Service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
11.3 Controller层
Controller层:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。
11.4 View层
View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,
11.5 各层的开发策略
(1)DAO层开发策略
DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势,Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。
DAO设计的总体规划需要和设计的表,和实现类之间一一对应。
DAO层所定义的接口里的方法都大同小异,这是由我们在DAO层对数据库访问的操作来决定的,对数据库的操作,我们基本要用到的就是新增,更新,删除,查询等方法。因而DAO层里面基本上都应该要涵盖这些方法对应的操作。除此之外,可以定义一些自定义的特殊的对数据库访问的方法。
(2)Service逻辑层设计
Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。
在DAO层定义的一些方法,在Service层并没有使用,那为什么还要在DAO层进行定义呢?这是由我们定义的需求逻辑所决定的。DAO层的操作 经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,这样的好处是在对Service进行扩展的时候不需要再对DAO层进行修改,提高了程序的可扩展性。
在DAO层定义的一些方法,在Service层并没有使用,那为什么还要在DAO层进行定义呢?这是由我们定义的需求逻辑所决定的。DAO层的操作 经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,这样的好处是在对Service进行扩展的时候不需要再对DAO层进行修改,提高了程序的可扩展性。
DAO完成连接数据库修改删除添加等的实现细节,例如sql语句是怎么写的,怎么把对象放入数据库的。service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层。
dao就是把数据存起来,之所以service的方法会有雷同只不过是因为service得需求不是很复杂不用再service里面完成太多包装或者处理过程可以直接调用dao的方法就完成的请求处理例如就要save一个对象,而这个对象是封装好的,dao里面有个方法专门save封装好的对象于是service的方法就仅仅调用一下就o了,函数签名自然很像了service不能直接接触持久层,而dao是持久层或者直接访问持久层有的时候只是为了分层清楚,为了将来scale up的时候方便我们才把service和dao分开,其实没必要分开的。

浙公网安备 33010602011771号