组件技术期末复习重点

1.什么是软件复用?
软件复用:是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的费用。
2.什么是组件
利用某种编程手段,将一些人们所关心的,但又不便于让用户直接去操作的细节进行封装。同时对各种业务逻辑进行规则化,用于处理用户的内部操作细节,这个封装体称为组件
3.平台,框架设计思想
框架:一组软件组件互相协作,提供了针对某个给定问题领域中应用程序所用到的一种可复用的体系结构
平台:类似框架,但又结合架构的考虑。他是更高层面上的框架,准确谈是一种应用,是一种产品。
4.两种编程体系。CS/BS
B/S结构即Browser/Server结构,应用程序同样由客户端和服务器端两部分组成;但客户端一般使用通用的浏览器,只负责用户与服务器的交互,处理能力有限;绝大多数处理功能都运行在服务器端。
C/S结构:即Client/Server结构,指应用程序由服务器端程序和客户端程序两部分构成,客户端具有独立的处理功能,同时可以通过网络与服务器端通信,进行协同处理。
5.请求Post和Get的区别:
Post:
请求参数在请求体中
请求的URL长度无限制
相对安全
Get:
请求参数在请求行中
请求的URL长度有限制
相对不安全
6.响应状态码:(200,404,500)
1)100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 。
2)200~299:表示成功接收请求并已完成整个处理过程 。
3)300~399:为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址。
4)400~499:客户端的请求有错误。
5)500~599:服务器端出现错误。
7.Web解决方案:
J2EE:
基于Java体系的完整的企业应用解决方案
结构先进、发展成熟
具有跨平台的特性
大量开源项目的支持
强调软件的架构和框架,有利于大型、复杂系统的开发
ASP.NET:
微软的Web解决方案,与J2EE竞争
设计思想先进,发展很快
可以跨语言平台、硬件平台,但无法跨操作系统平台
开发难度大幅度降低,效率大大提高
适于中小型项目的快速开发
8.Web应用组成结构
在这里插入图片描述

9.Servlet:
①Servlet定义:一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序,它用来扩展服务器的功能,可以生成动态的Web页面。
②Servlet架构:
在这里插入图片描述

③Servlet运行环境:
在这里插入图片描述
④Servlet工作原理:
Web容器负责管理Servlet。它装入并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。
Web容器在 Servlet 的使用期限结束时终结该 Servlet。服务器关闭时,Web容器会从内存中卸载和除去 Servlet。
⑤servlet三种编程方案

  1. 实现Servlet接口
  2. 继承GenericServlet抽象类
  3. 继承HttpServlet抽象类
    ⑥Servlet工作流程:
    (1)客户机将请求发送到服务器。
    (2)服务器上的Web容器实例化(装入)Servlet
    (3)Web容器将请求信息发送到 Servlet。
    (4)Servlet 创建一个响应,并将其返回到Web容器。
    (5)Web容器将响应发回客户机。
    (6)服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。
    ⑥Servlet生命周期:Servlet生命周期就是指Servlet容器创建Servlet实例后响应客户请求直至销毁的全过程。
    (1)容器加载Servlet类。
     当第一次有Web客户请求Servlet服务或当Web服务启动时。
    (2)创建Servlet对象实例。
     容器环境根据客户请求,创建一个或多个Servlet对象实例,并把这些实例加入到Servlet实例池中。
    (3)Servlet初始化。
     容器环境调用Servlet的初始化方法init()进行初始化,并传入一个包含初始化参数和容器环境信息的ServletConfig对象,向Servlet传递数据,若传递失败,则产生ServletException异常,Servlet将不能正常工作。
    (4)容器生成请求和响应对象。
     容器利用HttpServletRequest和HttpServletResponse对象,封装从Web客户接收到的HTTP请求和由Servlet生成的响应。
    (5)调用service方法提供服务。
     容器调用HttpServlet.service()方法提供服务,并将请求和响应对象传递给该方法。service()方法可被多次调用,各调用过程运行在不同的线程中,互不干扰。
     从请求对象读取HTTP请求数据,通过session对象访问状态信息,并用HttpServletResponse对象生成HTTP响应数据。
    (6)注销Servlet。
     当Web服务器和容器关闭时,会自动调用HttpServlet.destroy()方法关闭所有打开的资源,并进行一些关闭前的处理。

⑦Servlet的xml配置:

servletif
com.xatu.servletif


servletif
/myself


和标识用于对Servlet进行配置,这个配置信息可以分为两个部分,第一部分是配置Servlet的名称和对应的类,第二部分是配置Servlet的访问路径。
:对每个Servlet进行说明和定义。
是这个Servlet的名称,这个名字可以任意命名,但是要和节点中的保持一致。
是Servlet对应类的路径,如果有Servlet带有包名,一定要把包路径写完整,否则Servlet容器就无法找到对应的Servlet类。
:是对Servlet的访问路径进行映射。
是这个Servlet的名称,要和节点中的保持一致。
定义了Servlet的访问映射路径,这个路径就是在地址栏中输入的路径
10.如何引用response
Import javax.servlet.http.HttpServletResponse
11.处理属性方法
在这里插入图片描述
12.请求转发与响应重定向的区别:
请求转发:
这种转发是在服务器端控制权的转向,客户端发来的请求将交由新的页面进行处理。
使用请求转发,在客户的浏览器地址栏中不会显示转发后的资源地址。
使用请求转发,可将前一个页面的数据、状态等信息传到转发的页面。
响应重定向:
实际是服务器向浏览器发送一个特殊的响应头(Location,状态码302),命令浏览器连接到新的位置。
在浏览器的地址栏中可以看到地址的变化。
重定向是作为不同请求来看待的,因此,所有请求作用域的参数在重定向到下一个页面时都会失效。
使用sendRedirect()方法重定向时,资源不能位于WEB-INF目录中。
13.response设置http头(课本P119)
http头一般用来设置网页的基本属性,可以通过response的setHeader()方法进行设置。代码如下在这里插入图片描述
通过设置refresh响应头实现每5秒钟刷新一次页面
response.setHeader(“refresh”,“5”);
告诉浏览器在5秒钟后跳转到http://host/path页面
response.setHeader(“Refresh”,“5;URL=http://host/path/”);
response.setDataHeader(“Expires”,0);

14.会话技术下cookie和session作用,使用,应用
会话:
用户开一个浏览器,访问某个网站,只要不关闭浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个过程称为一次会话。
Cookie:
作用:保存上次登录时间等信息。
保存用户名、密码,在一定时间不用重新登录。
记录用户访问网站的喜好(如有无背景音乐、网页的背景色是什么)
网站的个性化,如定制网站的服务、内容。
使用:可以把cookie想成一张表: 分两列,一个是名字,一个是值,数据类型都是String
如何创建一个cookie(在服务器端创建)
Cookie c=new Cookie(String name, String val);
c.setMaxAge();//保持时间
如何将一个Cookie添加到客户端
response.addCookie©;
如何读取cookie(从客户端读到服务器)
request.getCookies( );
Cookie默认生命周期是会话级别的(即存储在浏览器的内存中),该cookie的生命周期当浏览器关闭时就消亡。 Cookie的生命周期可以通过cookie.setMaxAge(int expiry)设置。
setMaxAge(正数) 即多少秒后该cookie失效
setMaxAge(0) 删除该cookie,并要求重新addCookie才能生效
setMaxAge(负数),相当于该cookie的生命周期是会话级的。
如果cookie重名,则会替换原来的cookie值。
一个站点可以保存多个cookie。一个web应用可以给一个浏览器发送多个cookie,一个浏览器也可以存储多个web应用提供的cookie。
Session:
生命周期:
Session 的生命周期为间隔时间,即从最后一次访问后开始计时。即设置Session为20分钟,如果20分钟内没有访问,Session即失效。以下情况Session也会失效:关闭tomcat、重启web应用、时间到、调用 session.invalidate();
设置session时长。session.setMaxInactiveInterval(600); //以秒为单位
作用:在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
使用:
(1)获取会话对象
HttpSession hs=request.getSession(true);
(2)对会话对象进行读或写
void setAttribute(String name, Object val);
Object getAttribute(String name);
(3)手工终止会话,或者什么也不做,让它自动终止。每个会话对象都有一定的生存周期,超过这个周期,容器将自动将会话对象中止。
void invalidate()
void setMaxInactiveInterval(int interval)
15.什么是JSP?
在HTML中嵌入Java脚本语言;
由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令;
然后将生成的整个页面信息返回给客户端;
16. JSP工作原理:
在这里插入图片描述

  1. JSP基本元素:
    指令元素(Directive Elements)
    行为元素(Action Elements)
    脚本元素(Scripting Elements)
    17.JSP脚本语法包括
    “HTML注释”:<! – comments -->
    语法: 或

这种注释发送到客户端,但不直接显示,在源代码中可以查看到。
“隐藏注释”:<%-- comments --%>
JSP 语法格式如下: <%-- 注释 --%> 不发送到客户端。
“声明” <%! declaration; [ declaration; ] … %> 或<%! 声明; [声明; ] … %>
“表达式”: <%=表达式%>
输出表达式的计算结果。表达式中的变量必须是前面已声明过的变量
注意:%与=之间不能有空格且表达式后面不需要分号。
“脚本段” <% code fragment %> 或<% 代码 %>
18.JSP动作组件:
JSP动作组件是一些XML语法格式的标记,被用来控制Web容器的行为。它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
常见的JSP动作组件共有以下几种:
jsp:include:在页面被请求的时候引入一个文件。
< jsp:param>:在动作组件中引入参数信息。
< jsp:forward>:把请求转到一个新的页面。
< jsp:setProperty>:设置JavaBean的属性。
< jsp:getProperty>:输出某个JavaBean的属性。
< jsp:useBean>:寻找或者实例化一个JavaBean。
forword动作组件用于将浏览器显示的网页,导向至另一个HTML网页或JSP网页,客户端看到的地址是A页面的地址,而实际内容却是B页面的内容。其语法如下:
<jsp:forword page= “网页名称”>
注意:在使用forward之前,不能有任何内容已经输出到客户端,否则会有意外抛出。
include指令
定义一段文字或代码,它可以在当前页面被解析时加入其中。增强了代码的复用性
例如:<%@ include file=”wickedHeader.html” %>
include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。
语法:<%@ include file=“relativeURL”%>,其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web应用。
include指令细节注意问题:
被引入的文件必须遵循JSP语法。
被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见名知意,JSP规范建议使用.jspf(JSP fragments(片段))作为静态引入文件的扩展名。
由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。

  1. request复选框的获取和显示:
    getParameterValues(“parameterName”)
    返回值类型: 字符串数组 String[]
    能够取出参数的多个值,主要用于复选框值的获取。
    String mybox[];
    mybox=request.getParameterValues(“mybox”);
    if(mybox!=null) {
    for(int i=0;i<mybox.length;i++)
    out.println(mybox[i]);
    }
    20.请求的中文乱码问题:
    表单提交方式为post时出现的乱码
    a.使用setCharacterEncoding(String code)方法设置统一字符编码request.setCharacterEncoding(“GBK”);
    b.对获取的信息进行重新编码
    String name = request.getParameter(“userName”);
    byte b[] = name.getBytes(“ISO-8859-1”);
    name = new String(b);
    表单提交方式为get时出现的乱码
    a.对接受到的字符进行重新编码(post提交方式解决办法的第二种)
    b.配置Tomcat下server.xml的Connector节点
    JSP页面通过URL传递中文参数的乱码问题
    a.配置Tomcat下server.xml的Connector节点(get提交方式解决办法的第二种)
    b.对URL中的中文字符进行编码
    21.response重定向作用域(4个)范围,生存周期
    页面域:对象只对于其所在页面是可访问的
    请求域:在请求的生命周期内有效
    会话域:会话的对象对于参与某客户端会话的所有组件有效
    应用域:应用域的对象在整个应用的生命周期都有效
    范围:作用域通信对象包括 session、application 和 pageContext
  2. JavaBean:
    (1)定义:
    Java平台的一种可复用、跨平台的软件组件
    遵循一定的规范、用Java语言编写的一个类, 该类的实例称为JavaBean
    封装属性和方法来完成某些功能或业务
    (2)创建:
    jsp:useBean
    声明一个具有一定生存范围及一个唯一id的JavaBean的实例,JSP页面通过id来识别JavaBean,并可通过id.method类似的语句来操作JavaBean。
    例:在应用程序作用域中,创建了类型 Student的id为s1的 bean:
    <jsp:useBean id=“s1” class=" Student " scope=“application”/>
    (3)设置:设置JavaBean属性的三种方法
    ①.直接调用JavaBean对象的方法
    s1.setClassno(“56789”);
    ②.用jsp动作标记jsp:setProperty
    <JSP:setProperty name=“beanId” property=“propertyName” value=“propertyvalue"/>
    ③.利用request对象传递来的参数来设置JavaBean
    <JSP:setProperty name=“beanId” property=“propertyName” param=“paramName”/>
    注意:如果参数值为空值,那么对应的属性值不会被设定。另外,不能在同一个“JSP:setProperty”中同时使用param和value参数 。
    (4)获取:
    jsp:getProperty
    用来返回一个已被创建的bean组件的属性值
    访问属性的值,并且把该值转换为 String,然后输出到客户的输出流当中
    <jsp:getProperty name=“beanId” property=“propertyName” />
    22.JDBC:
    (1)定义:
    JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力。
    JDBC是一种用于执行SQL语句的Java API,由一组类和接口组成,该API提供了操作数据库的标准编程接口
    各厂商需针对自己的产品实现该接口,即JDBC驱动。
    (2)工作原理:
    在这里插入图片描述
    (3)工作过程:
    加载JDBC驱动类
    向数据库建立连接
    执行SQL语句
    返回处理结果
    释放连接
    核心对象:
    DriverManager:依据数据库的不同,管理JDBC驱动
    Connection:负责连接数据库并担任传送数据的任务
    Statement:由Connection产生、负责执行SQL语句
    ResultSet:负责保存Statement执行后产生的查询结果
    数据库连接:
    try {
    Class.forName( JDBC驱动类 );
    Connection con=DriverManager.getConnection(JDBC URL,数据库用户名,密码);
    Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(“SELECT a, b, c FROM Table1”);

while (rs.next()) {
int x = rs.getInt(“a”);
String s = rs.getString(“b”);
float f = rs.getFloat(“c”);
}
con.close();
} catch (ClassNotFoundException e) {
System.out.println(“无法找到驱动类”);
} catch (SQLException e) {
e.printStackTrace();
}
如何建立数据库连接:
1)通过java.lang.Class类的静态方法forName( )动态加载JDBC驱动类,这个类会自动通过DriverManager.registerDriver( )方法向DriverManager中注册。
2)通过DriverManager类的getConnection()方法获得对该类数据库操作的Connection对象。
JDBC连接方式:
1)JDBC-ODBC桥接方式。
2)纯JAVA的驱动方式。
桥接方式:
将对JDBC API的调用,转换为对另一组数据库连接API的调用
优点:可以访问所有ODBC可以访问的数据库
缺点:执行效率低,功能不够强大
纯JAVA驱动方式:
由JDBC驱动直接访问数据库
优点:100% Java,高效且可跨平台
缺点:访问不同的数据库需要下载专用的JDBC驱动
Statement接口:
execute( String sql ):执行一条SQL语句
executeQuery( String sql ):执行一条查询语句,返回记录集
executeUpdate( String sql ) :执行一条更新语句(Create、Drop、Alter、Insert、Delete或Update),返回影响行数(整数)
PreparedStatement接口:执行予编译的SQL
优点:
SQL经过编译,成批执行时效率更高;
采用参数传递方式,语句简单,且可以避免SQL攻击
ResultSet接口:代表了数据库的查询结果集
ResultSet类型的对象包含了查询的结果
查询结果数据一般是一条一条的记录
内部有一个游标,开始时定位在第一条记录之前
使用其next( )方法将游标移到下一行
若返回true则有数据,否则没有数据
使用getXXX( )方法获取各字段的数据
释放数据库连接:
按顺序分别释放rs、stmt、con
rs.close( );
stmt.close( );
con.close( );
数据库连接池:
在应用开发中,建立数据库连接时一项最耗时的操作
连接池就是预先建好的一系列数据库连接,由容器来管理
当用户想访问数据库时,直接从连接池中获取一个连接
当连接使用完成后,再将其返还给连接池。
23.开发模式:MODEL1

在这里插入图片描述

Model2(MVC)重点: 在这里插入图片描述
24.设计模式:
(1)定义:
设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。
目的:为了可重用代码、让代码更容易被他人理解、提高代码可靠性。
(2)分类:
根据目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三类:
创建型模式主要用于创建对象
结构型模式主要用于处理类或对象的组合
行为型模式主要用于描述类或对象如何交互和怎样分配职责
根据范围,即模式主要是处理类之间的关系还是处理对象之间的关系,可分为类模式和对象模式两种:
类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是一种静态关系
对象模式处理对象间的关系,这些关系在运行时变化,更具动态性
(3)组成
(4)设计原则:
单一职责原则
开闭原则
里氏代换原则
依赖倒转原则
接口隔离原则
合成复用原则
迪米特法则
**(5)简单工厂模式(Simple Factory Pattern):
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
**工厂方法模式(Factory Method Pattern):
定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
**(6)抽象工厂模式(Abstract Factory Pattern):
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
过滤器:
25.EL和JSTL定义
(1)什么是EL?
EL,又称表达式语言
是JSP2.0新引入的一种计算和输出Java对象的简单语言。它的基本语法是${expr}
EL为不熟悉Java的页面开发人员提供了一个开发JSP应用的新途径。
(2)JSTL定义
JSP 标准标记库(JSP Standard Tag Library,JSTL),是一个实现 Web 应用程序中常用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问等。
在Web应用中使用JSTL需要以下步骤
将JSTL所需的jar添加的Web工程的类路径
在JSP页面中使用taglib指令引入标记库
26过滤器:
(1)定义: 是一种Java组件
可被用来截获并处理发送到servlet之前的请求
可被用来处理servlet运行完而发送回客户端之前的响应
在web.xml中配置容器何时调用过滤器
(2)原理: 在这里插入图片描述
(3)API; Filter(过滤器API的核心,所有的过滤器都必须实现该接口)
FilterConfig(通过该接口可以获得过滤器名、过滤器运行的ServletContext对象以及过滤器的初始化参数。)
FilterChain
配置:
在这里插入图片描述
27监听器
应用,用户,请求,对象。原理(重点)

部分没有写答案,自己查查。都不难,主要理解着背
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值