jsp期末复习

1.2 Tomcat的目录

  • bin:存放Tomcat的可执行文件和脚本文件(扩展名为bat的文件)。
  • conf:配置文件
  • lib:Tomcat服务器和Web程序应用的JAR文件
  • logs:日志文件
  • temp:运行时产生的临时文件
  • webapps:Web应用程序主要发布目录、
  • work:Tomcat的工作目录,JSP编译生成的Servlet源文件和字节码。

2.1 JSP的执行流程

  1. 启动Tomcat
  2. 向浏览器发出请求。也就是访问url。
  3. 将jsp文件转为java文件。例如:hello.jsp→hello_jsp.java
  4. 使用javac指令,把java文件编译成字节码文件。即:hello_jsp.java→hello_jsp.class
  5. 调用java指令,执行字节码文件(class文件)。只执行动态代码。
  6. Tomcat把动态代码的执行结果嵌入到静态代码中,发送给浏览器显示。

2.2.1 page 指令

语法

<%@ page %>

作用:对页面属性进行处理(例如,静态编码、导包)。配置指令只对当前页面有效

静态编码:对当前页面的html和静态代码进行编码,服务器端对静态编码进行处理。

<%@page contentType="text/html;charset=utf-8"%>

注意:如果将这条指令放在最下面,无效,出现在JSP代码的最上面,只能写一条。

导包(不建议使用)

<% page import="java.util.*"%>

2.2.2 include指令包含

指令包含

语法

<%@ include file="文件路径"%>

作用:把指定文件内容包含到当前页面。

执行特点:先包含后执行,对被包含页面没有内容要求。

缺点

  1. 被包含页面不能与当前页面出现相同的变量名,Tomcat出现问题。
  2. 被包含页面不能出现<html><body>标签,浏览器出现问题。

标签包含

    标签包含是属于java的。标签包含可以有子标签,执行顺序是先执行子标签。

标签包含语法

<jsp:include page="包含的文件路径">
<jsp:include page="XXXXX">
    <jsp:param name="PARAM_NAME" value="PARAM_VALUE">
</jsp:include>

执行特点:先执行子标签,逐级向上执行。先执行后包含。

作用:标签包含和指令包含都是将指定文件内容包含到当前页面。

缺点

  1. 只能包含动态代码
  2. 被包含页面不能出现<html><body>标签


指令包含和标签包含的区别

(重点考试必考)

  1. 语法不同
    ①写法不同;
    ②语法范畴也不同:指令包含属于jsp,标签包含属于java。
  2. 执行流程不同
    ①指令:先包含后执行
    ②标签:动态页面(先执行后包含)、静态页面(先包含不执行)
  3. 对被变化页面是否识别
    ①指令:不识别被包含页面类型。
    ②标签:识别被包含页面类型。
  4. 传参
    指令:当前页面不能向被包含页面传参
    标签:动态(能)、静态(不能)

include和forward

forward():表示在服务器端从一个Servlet中将请求转发到另一个资源(Servlet、Jsp或Html等),本意是让第一个组件对请求做些预处理(或者什么都不做),而让另一组件处理并返回响应。
include():表示在响应中包含另一个资源(Servlet、Jsp或Html等)的响应内容,最终被包含的页面产生的任何响应都将并入原来的response对象,然后一起输出到客户端。


理解HTTP协议

    http协议是超文本传输协议的缩写。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。默认HTTP的端口号为80,HTTPS的端口号为443。HTTP协议永远都是客户端发起请求,服务器回送响应。


表单和超链接发请求的共同点和不同点。

表单的作用:
①自动生成http协议的请求
②封装请求的参数(利用post请求)

表单的优点:
①、使用简单、方便
②、自动封装请求参数

相同点
前台技术,自动产生http请求

不同点:
① 从表单内接受的参数都是字符串类型
② 表单可以通过method属性决定是get提交还是post提交,超链接只能用get提交
③表单容易和用户进行交互,超链接不容易和用户进行交互
④表单的代码复杂度高,超链接的代码复杂度低


JSP九大内置对象及其作用域

1、request : 得到用户的请求信息 请求范围(请求开始到结束)
2、response : 服务器向客户端的回应信息 请求范围(请求开始到结束)
3、session : 用来保存用户的信息 用户范围(浏览器启动到关闭)
4、application : 表示所有用户的共享信息 服务范围(服务器启动到关闭)
5、config : 服务器配置,可以取得初始化参数 服务范围(服务器启动到关闭)
6、out : 页面输出 请求范围(请求开始到结束)
7、page : 表示从该页面中表示出来的一个Servlet实例 页面范围
8、pageContext : JSP的页面容器
9、exception : 表示JSP页面所发生的异常,在错误页中才起作用


一个标准的JavaBean需要具备的条件

1、所有的类必须放在一个包中,在WEB中没有包的是不存在的。
2、所有的类必须声明为public class,这样才能够被外部所访问
3、类中所有的属性都必须封装,即使用private声明
4、封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法
5、一个JavaBean中至少存在一个无参构造方法,此方法为JSP中的标签所使用。


服务端跳转和客户端跳转的异同点

相同点

  1. 都是动态跳转。
  2. 从一个组件跳到另一个组件

不同点

  1. 语法不同
    ①客户端跳转(重定向) response
    ②服务端跳转 request
  2. 执行机制不同
    ①客户端:服务器通过语句向客户端设定控制信息,由浏览器进行跳转(重定向)
    ②服务端:服务器进行跳转
  3. 代码执行情况
    ①客户端跳转执行后 该代码之后的代码依旧执行,跳转后,浏览器地址栏变化
    ②服务端跳转执行后 该代码之后的代码不执行,跳转后,浏览器地址栏不变化
  4. 参数传递
    ①客户端跳转后,不能将参数进行传递(从一个组件到另外一个组件)
    ②服务端跳转后,可以将参数传递(从一个页面到另外一个页面)
  5. 是否可以重新传递参数
    ①客户端跳转可以重新传递参数(重新发请求)
    ②服务端跳转不能重新发请求
  6. 应用场合
    ①客户端跳转:异常流程时使用
    ②服务端跳转:平常流程


MVC设计模式

model view control
MVC全名是Model View Controller,模型层,视图层,控制层(业务层,持久层逻辑javabean)

视图层和控制层结合的缺点
可维护不好;移植性不好;健壮性不好

MVC设计模式的优点

  1. 分离视图层和控制层,可以提高代码可维护性,例如,更好地解决空指针异常;
  2. 健壮性和可移植性增强。 各司其职、互不干涉;
  3. 有利于开发中的分工;
  4. 有利于组建的重用;


cookie 和session 的区别:

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上。
  2. cookie里包含了sessionID(系统cookie)
  3. 安全方面:
    session传递的是用户的验证信息,在服务器工作,安全但是降低效率
    cookie传递的是用户信息,在客户端工作,不安全但是不影响服务器效率
  4. 存储数据方面:Cookie中只能保管ASCII字符串,而Session中能够存取任何类型的数据

Servlet分类及其作用

1、简单Servlet : 是作为一种程序所必须的开发结构保存下来的
2、过滤器: (过滤器作用)过滤器是属于一个组件的形式加入到应用程序当中。(过滤器定义)Filter是Servlet2.3之后增加的新功能,当需要限制用户访问某些资源或者在处理请求时提前处理某些资源,就可使用过滤器完成
3、监听器 : 主要是负责监听WEB的各种操作,当相关的事件触发后将产生事件,并对此事件进行处理。


为什么application可以通过getRealPath()方法,取得虚目录的真实路径。

Application对象是javax.servlet.ServletContext接口的实例化对象,表示的是Servlet的上下文,ServletContext代表了整个容器的操作
如果要想取得一个虚拟目录对应的绝对路径要使用getRealPath()方法

String path = getServletContext().getRealPath("/");

application的操作本身是ServletContext接口的实例,但是在JSP中有一个方法的功能可以完全与之对应:getServletContext()方法。

String path = this.getServletContext().getRealPath("/");(这个方法要重点使用)

九大内置对象

    九大内置对象:request、response、pageContext、session、application、out、config、page、exception。


request

        类型Javax.servlet.http.HttpServletRequest
        生命周期:请求范围。请求一开始就创建,请求结束就销毁。决定于服务端。
作用

  1. 传递数据和设定属性
  2. 页面跳转(控制层向视图层跳转)
  3. 编码

response

    request和response同生共死。
    类型Javax.servlet.http. HttpServletResponse
    生命周期:请求范围。请求一开始就创建,请求结束就销毁。

作用
  1. 把结果信息发送给浏览器显示
  1. 设定协议头(控制浏览器自动发请求,容易被黑客利用,危险)
  1. 设置cookie(危险)
  1. 完成客户端跳转
重定向和转发
重定向:当页面进行跳转之后, request和response的生命周期已经结束,完全交给下一个页面去处理了(连url都变了);
转发:还可以往request里面添加携带参数, request和response的生命周期没有结束(url不变)。

session(会话)

        在网络中被称为会话,一个会话就是浏览器与服务器之间的一次通话(保存登录状态时)
        一个用户可以发多个请求,可以有多个request,但是只能有一个session。session的生命周期比request长。

        类型Javax.servlet.http.HttpSession

        生命周期:用户范围。第一次发请求访问服务器组件,用户下线。决定于客户端。

作用
  1. session传递验证信息,安全性更高(当然也可以用来传递数据,但不建议这么使用,效率低,增加服务器负担)

        举例:当一个用户登录时,登录信息正确后,会找到这个用户的session设置验证信息。

session结束的条件之一
  • 服务器关闭
  • 会话过期(Tomcat一段会话时间默认为30分钟)
  • 手动终止会话
设置获取session生命周期
  1. 通过session对象的setMaxInactiveInterval()方法可以设置session的生命周期。
  1. 可以通过getMaxInactiveInterval()方法来获得session的生命周期。

page

        生存周期:当前页面有效

        作用:存放临时数据,不能传递数据


pageContext

作用 :用于获取页面的上下文,通过此对象可以获取页面的其他8个内置对象

application

类型javax.servlet.ServletContext
        生存周期:服务范围。Tomcat一启动就会创建application对象,Tomcat销毁关闭。是生存周期最长的。(公共垃圾桶)

        作用:公共资源

        任何对象的任何项目都可以使用,可以跨项目,跨用户,用于存放公共信息。

        缺点:不安全,内存效率下降。


config

        生存周期:服务server范围。Tomcat一启动就会创建application对象,Tomcat销毁关闭。

        类型javax.servlet.ServletConfig

        作用:传递配置信息


out

        作用:数据输出

        注意:不要轻易使用,任何一个组件都可以使用,不易维护,不安全。

exception

        类型javax.lang.Throwable
        生存周期:服务范围。Tomcat一启动就会创建application对象,Tomcat销毁关闭。


将一个jsp页面保存在WEB-INF文件夹之下,如何通过配置web.xml文件 ,访问该页面?

  1. 配置web.xml中的servlet:
<servlet>
	<servlet-name>index</servlet-name>
	<servlet-file>/web-inf/index.jsp</servlet-file>     <!-- 要执行的jsp文件-->
	<servlet-class>跳转到首页的action</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>index</servlet-name>
	<url-pattern>/index.action</url-pattern>    <!--映射的路径-->
</servlet-mapping>
  1. 访问地址:http://localhost:8080/index/index.jsp
  • 26
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值