Servlet 入门到精通(二)

上一篇博客的传送门:Servlet 入门到精通(一)

JSP概述

JSP(JavaServer Pages)是由 Sun 公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML 或其他格式文档的 Web 网页,然后返回给请求者。JSP 技术以 Java 语言作为脚本语言,为用户的 HTTP 请求提供服务,并能与服务器上的其它 Java 程序共同处理复杂的业务需求。

JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部门内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建 JSP 标签库,然后像使用标准 HTML 或 XML 标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的 Servlet 代码。JSP 编译器可以把 JSP 文件编译成用 Java 代码写的 Servlet,然后再由 Java 编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

组成部分

JSP指令

小脚本

表达式

声明

标准动作

<%--在jsp中实例化java中的class,并放入对象的容器中--%>
<jsp:useBean id="emp" class="bean.Emp" scope="session" />
<%--用于设置JavaBean中指定的属性值 name是对象名 useBean中的名字--%>
<jsp:setProperty name="emp" property="empNo" value="7788"/>
<%--用来获取<jsp:useBean>中指定的属性值 name是对象名 useBean中的名字--%>
<jsp:getProperty name="emp" property="empNo"/>
<%--将用户的请求转发到一个HTML文件、JSP页面或Servlet中--%>
<jsp:forward page="1.jsp">
    <%--传递参数--%>
    <jsp:param name="a" value="1"/>
</jsp:forward>
<%--在哪使用就将被包含的文件加到指定jsp的使用位置 布尔属性,定义在包含资源前是否刷新缓存区(必须是true)。--%>
<jsp:include page="url" flush="true"/>

注释

<!--我是HTML注释-->
<%--我是JSP注释--%>

HTML静态内容

没什么好说的,就是HTML各种标签。

运行流程

优缺点

优点

  1. 一次编写,到处运行。除了系统之外,代码不用做任何更改。
  2. 系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比 ASP 的局限性 JSP 的优势是显而易见的。
  3. 强大的可伸缩性。从只有一个小的 Jar 文件就可以运行 Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台 Application 进行事务处理,消息处理,一台服务器到无数台服务器,Java 显示了一个巨大的生命力。
  4. 多样化和功能强大的开发工具支持。这一点与 ASP 很像,Java 已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
  5. 支持服务器端组件。web 应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供 web 页面调用,以增强系统性能。JSP 可以使用成熟的 JAVA BEANS 组件来实现复杂商务功能。

缺点

  1. 与 ASP 也一样,Java 的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
  2. Java 的运行速度是用 class 常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。

JSP的九大内置对象

out对象

out对象的数据类型是PrintWriter,用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

request对象

request 对象是ServletRequest 类型的对象。该对象代表了客户端浏览器的请求信息,主要用于接受通过 HTTP 协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request 对象的作用域为一次请求一次响应。

response对象

response对象是ServletResponse类型的对象。response代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回到客户端。response对象也具有作用域,它只在当前JSP页面内有效。

session对象

什么是会话

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,在此期间包含多次请求和响应,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要 session 对象。它的数据类型是HttpSession类型的。

会话ID的作用

当一个客户首次访问服务器上的一个资源(能够使用 session 对象)时,JSP 引擎产生一个 session 对象,同时分配一个 String 类型的 ID 号,JSP 引擎同时将这个ID 号发送到客户端,存放在 Cookie 中,这样 session 对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的 session 对象,直到客户关闭浏览器后,服务器端该客户的 session 对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的 session 对象。

会话的过期时间

session 对象存在一定时间过期问题,所以存在 session 中的键值对会在一定时间后失去,可以通过更改 session 有效时间来避免这种情况。同时编程时尽量避免将大量有效信息存储在 session 中,request 是一个不错的替代对象。

application对象

application对象被称之为上下文对象,类型是ServletContext类。当服务器启动后就产生了这个 application 对象,一个服务器只有一个 application 对象,当客户在所访问的网站的各个页面之间浏览时,这个 application 对象都是同一个,直到服务器关闭。但是与 session 不同的是,所有客户的 application 对象都是同一个,即所有客户共享这个内置的 application 对象。

page对象

page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。 page 隐含对象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针。

exception对象

java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令 page 的 isErrorPage 属性为 true 时,该对象才可以使用。常用的方法有 getMessage()和 printStackTrace()等。

pageContext对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP 页面的 out、request、response、session、application 等对象。pageContext 对象的创建和初始化都是由容器来完成的,在 JSP 页面中可以直接使用 pageContext 对象。

config对象

config 对象的主要作用是取得服务器的配置信息。通过 pageContext 对象的getServletConfig() 方法可以获取一个 config 对象。当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个 Servlet。 开发者可以在 web.xml 文件中为应用程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。

四大容器

// page容器只能通过pageContext获取,其他容器可以通过自身对象或者pageContext对象获取
// 容器的生命周期从page、request、session、application依次递增
// 存放到容器中
pageContext.setAttribute("A", "page存放的内容关为", 1);// 存放到page容器 默认是1
pageContext.setAttribute("B1", "request关为存放的内容", 2); // 存放到request容器
request.setAttribute("B2", "也是关为存放到了request容器");
pageContext.setAttribute("C1", "关为存放到session容器", 3);// 存放到session容器
session.setAttribute("C2", "关为也存放到了session容器");
pageContext.setAttribute("D1", "关为存放到了application容器", 4); // 存放到application容器
application.setAttribute("D2", "关为也存放到了application容器");
// 从容器中获取内容
Object obj1 = pageContext.getAttribute("A", 1);
Object obj2 = pageContext.getAttribute("B1", 2);
Object obj3 = pageContext.getAttribute("C1", 3);
Object obj4 = pageContext.getAttribute("D1", 4);
Object obj5 = request.getAttribute("B2");
Object obj6 = session.getAttribute("C2");
Object obj7 = application.getAttribute("D2");
// 删除容器中的内容
pageContext.removeAttribute("A",1);
pageContext.removeAttribute("B1",2);
pageContext.removeAttribute("C1",3);
pageContext.removeAttribute("D1",4);
request.removeAttribute("B2");
session.removeAttribute("C2");
application.removeAttribute("D2");

page容器

作用域为当前页面的容器,通过 pageContext 对象来访问,离开当前页面后失效,Servlet 中无法使用。

request容器

每次用户请求服务器的时候 web 容器(Tomcat)就会创建这个容器对象,当然 Request 除了有一个容器对象的角色,他还有一个角色就是 Request 作用域,它的作用域只是一次用户的请求内,即用户发送一个请求的时候,Request 创建,当用 户被响应这次请求的时候 Request 就会消亡。

session容器

作用域为会话的一个容器,在会话存续期间都可存活,session 对象是浏览器独享资源。

当浏览器第一次请求服务器动态资源时创建

关闭情况为:

  1. 浏览器关闭
  2. 服务器关闭(很少发生)
  3. 存活时间过期
  4. 调用了销毁方法(很少调用)

application容器

服务器全局容器,当前服务器的所有浏览器共享。服务器启动时创建,服务器关闭 时销毁。

转发和重定向的区别

继续卷,跟着关为来学习EL表达式和JSTL相关内容--Servlet 入门到精通(三) 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个开源的Java Servlet容器,它用于在服务器上运行Java Web应用程序。下面是一个关于Tomcat从入门精通的简要指南: 1. Tomcat目录结构:Tomcat的主要目录文件包括bin(存放启动、停止等脚本文件)、conf(存放配置文件)、lib(存放依赖包)、logs(存放日志文件)、webapps(存放Web应用程序)等。 2. 运行时编译:Tomcat在默认的web.xml中配置了一个JspServlet,用于处理所有以.jsp或.jspx结尾的请求。这个Servlet实现了运行时编译的功能,将JSP文件转换成可执行的Java代码。 3. 核心功能:Tomcat主要有两个核心功能,一是处理Socket连接,负责网络字节流与Request和Response对象的转化,是加载和管理Servlet,以及具体处理请求。为了实现这两个功能,Tomcat设计了连接器(Connector)和容器(Container)这两个核心组件。连接器负责对外交流,容器负责内部处理。 4. 连接器:Coyote是Tomcat的连接器框架,它是Tomcat服务器提供的供客户端访问的外部接口。Coyote负责与客户端建立连接、发送请求并接收响应。它封装了底层的网络通信,为容器提供统一的接口,使容器与具体的请求协议和IO操作方式解耦。Coyote将Socket输入转换为Request对象,并交由容器进行处理,处理完成后通过Coyote提供的Response对象将结果写入输出流。 5. 学习资源:要从入门精通Tomcat,可以从以下几个方面进行学习: - 熟悉Tomcat的目录结构和配置文件,了解每个文件的作用和使用方法。 - 学习Java Servlet的基本概念和使用方法,了解Servlet的生命周期和请求处理过程。 - 深入学习Tomcat的连接器和容器的原理和实现机制,理解其内部工作原理。 - 实践编写和部署简单的Java Web应用程序,通过实际操作加深对Tomcat的理解和掌握。 通过学习和实践,逐步深入理解Tomcat的运行原理和使用方法,可以从入门精通Tomcat。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值