百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Java EE基础之JSP(二) jsp实战教程

yuyutoo 2024-10-12 01:06 8 浏览 0 评论

接着上篇文章,我们上篇文章讲到了jsp的基本原理以及和servlet的关系,还介绍了jsp的基本语法部分,本篇文章就继续介绍余下的内容。

  • 编译指令Page和include

  • 基本的动作指令

  • 内置对象

一、两个编译指令

Page指令顾名思义,操作当前页面的。首先我们要知道使用编译指令的格式:<%@ page 属性名="属性值"%>,关于page的属性有哪些,如下图所示:

这里写图片描述

简单说明一下,language指定的是本页面使用的脚本语言,contentType指定了本页面的类型,有text/html,img/png等。import可以引入指定的包,默认情况下已经为我们引入了java.lang.,javax.servlet.jsp.,javax.servlet.http.*。所有在jsp页面引入的包,都会对应到servlet实例中。session指定当前页面是否支持会话(后面详细介绍),errorPage指定了当前页面如果出现异常调用的页面,如果没有为当前页面指定errorPage页面,就会直接抛出异常信息个浏览器(这是我们所不愿意看到的),isErrorPage指定了当前页面是否是错误页面,如果是,当别的页面出错的时候就会跳转到此页面,默认为false。这么多的属性,我们只要稍微有点印象,实际用的时候再过来参考即可。

我们说jsp页面中是不需要处理任何异常的,甚至是检查类异常都是不需要处理的。我们来看看为什么。从servlet类的源代码中找原因,因为这是本质。

public void _jspService(final javax.servlet.http.HttpServletRequest request, 
final javax.servlet.http.HttpServletResponse response)

我们就看看这个用来响应用户请求的方法,_jspservice(),不知道大家看到没有,整个输出html页面信息的代码块都被try....catch了,而看到catch捕捉的异常时异常机制的源头Throwable ,所有的异常都是继承自它的。而我们看到捕捉到异常之后所进行的操作是,如果当前对象不为空,就调用该对象的处理方法,处理方法就是判断当前页面是否制定的errorPage页面,如果没有抛异常给浏览器,如果有,跳向错误页面。所以无论你jsp页面会抛出什么异常,在被编译到servlet实例中,已经做了处理了,这就是为什么jsp页面不需要处理异常的原因。

第二个指令是include指令,这是一个用来包含指定页面的内容的编译指令,<%@include file="文件路径"%>,我们来看一个例子:

<html>

运行结果的图片就不贴了,从servlet实例中可以明显看出,这一切都做了什么。

out.write("\n");

不知道大家看出来了没有,一个页面里竟然包含了两个html标签和title和body标签,可见,这个编译指令就是在编译的时候将要引入的页面中的全部信息直接插入在指定位置上。

二、基本的工作指令

第一个动作指令是,forward指令,这个指令用来向另外的一个页面进行跳转。用法如下:

<html>

从运行结果上看,至少可以看出两点。第一,地址栏上的地址依然是index页面,也就是说页面并没有跳走,第二,我们看原来index页面的所有信息都被替换成convert页面的内容。由此我们可以推断出,所谓的跳转指令,其实并没有完成跳转的操作,只是将目标页面的所有信息全部替换当前页面,这和我们之前说过的一个编译指令很是类似,他是include,我们应该可以记得,include编译指令是将目标页面中所有内容替换到当前页面的某个位置,也就是替换了当前页面中的部分内容。而可以将跳转指令forward理解为替换了当前页面的所有内容。

 out.write("\n");

从servlet源代码中,我们可以看到,index中前面的代码正常加载,当加载到我们的跳转指令的时候,它实际上构建以个URL:convert.jsp?key=v,默默的请求了此页面然后将返回的结果显示在当前的页面中,其实就是去拿来目标页面中的内容覆盖当前页面,对于index页面的一些请求参数,不会丢失。(关于请求参数的接收,下文介绍)

第二个动作指令,include指令,用来动态引入外部文件到当前页面,和我们的include编译指令相似,但是也有着显著的区别。先看怎么使用:

<html>
out.write("\n");

我们可以看到,动作指令include实际上不想编译指令include将目标页面的所有信息全部插入到指定位置,动态include指令调用的是一个include方法,动态的将目标页面的body部分的内容拿过来,并且还允许传入参数。可能结果和编译指令include一样,但是内部的实现确是截然不同的,各自有各自的适用场所。

第三个动作指令,param,这是我们之前一直在使用的指令,只是一直没有说明。param指令一般都不会单独使用,通常都是结合jsp:include,jsp:forward等使用。使用的格式如下:

<jsp:include page="convert.jsp">

name指定参数名,value指定参数数值。至于怎么获取,我们在介绍request对象的时候加以说明。request对象就是一个专门用于处理用户请求的对象,所以所有的参数传递都是可以使用这个对象进行接收的。还有一些动作指令牵扯到javabean知识,暂时不说。

三、JSP内置对象

我们打开任意的servlet源代码,可以看到在用于响应用户请求的方法_jspservice();的头部有一些成员变量的定义和初始化。看:

public void _jspService(final javax.servlet.http.HttpServletRequest request, 
final javax.servlet.http.HttpServletResponse response){

接下来我们会详细介绍这些对象的含义及其具体的操作。由于篇幅限制,未完待续。。

著作权归Walker_YAM所有,转载请联系“e安在线”

相关推荐

WMS系统设计拆解-入库管理1(wms入库作业流程图)

入库业务是仓储管理系统(WMS)中最基础、最关键的环节之一,直接影响到库存准确性、作业效率以及后续的出库和库内操作。作为仓储产品经理,深入理解入库业务的复杂性并设计出高效、灵活的解决方案,是提升仓储整...

WMS系统的序列号管理(smart cover序列号)

在现代物流和仓储管理中,序列号管理扮演着至关重要的角色。它不仅帮助企业追踪商品流转,还能有效防止盗窃和伪造。然而,许多企业在实施序列号管理时常常面临各种挑战。本文将详细介绍在WMS(仓库管理系统)中,...

什么是系统管理?#企业管理(系统管理主要包括哪些内容?)

什么是系统管理?邱奕玮,营利增长地图顾问。我们老说要搭建管理系统,搭建管理体系到底什么是管理系统?很多时候老板其实概念是很模管理,给员工说你要做流程,员工就做一套流程文件,然后又说要做绩效考,员工又做...

不愧是总经理,加班两周整理的“公司各系统管理流程汇编”太神了

...

公务员管理系统(公务员管理系统hzb怎么导出)

公务员管理系统headerfooter...

物流管理系统(比亚迪物流管理系统)

以管理员身份登录,进入系统业绩管理页面。1、创建界面后,继续完成相关操作。2、根据业绩管理模块的指引进行软件操作。3、更多模块请参见哲程CRM客户管理软件物流版官方操作手册。(9744083)...

更多驱动适配 + 跨平台共享,deepin深度操作系统打印管理升级

IT之家4月8日消息,深度操作系统今日发文宣布:为了解决打印机驱动的兼容性问题,deepin正式推出全新驱动下载平台,并升级了打印管理器,重点扩展驱动覆盖范围、优化跨平台兼容性、并深度支持...

ERP系统功能拆解——生产管理是什么?怎么用?

本文深入探讨了ERP系统中的生产管理功能,揭示了如何通过高效的计划和控制来优化生产过程。从生产工单的制定到生产入库,每一个环节都被详细拆解,展示了简道云ERP管理系统如何实现流程自动化和数据跟踪。这是...

如何在NetBeans IDE中写出更好的Javadoc

作为一名在IDR解决方案上的开发者,我花了我很多时间来增加Javadoc中JPedal的JavaPDF库,使之更易于使用。我认为这可能是非常有用的,显示你的NetBeansIDE中如何简化这个过程...

6个最佳的Netbeans扩展插件(netbeans gui)

作为一个IDR解决方案的开发者,我花费大量的时间了解NetBeans的PDF查看器和NetBeans插件。下面跟大家分享一下哪些插件是比较值得安装的。下面是我认为比较有趣并值得安装的6个NetBean...

HTTP404...前端必知,精辟简介(前端设置https)

1、介绍HTTP,超文本传输协议,是互联网中最为常用的一种网络协议。2、组成HTTP协议有HTTP请求和HTTP响应组成。...

会计人的 Python 速成指南:20 个常用代码块解析

--【AI会计革命:从账房先生到数据军师的跨界突围】【能力重构篇】泰山医院岳涛引言在数字化浪潮的冲击下,会计行业正经历着深刻变革。传统的账房先生式工作模式逐渐被智能化、自动化的流程所取代。对于会...

EasyExcel导出Excel表格到浏览器,通过Postman测试导出Excel

一、前言小编最近接到一个导出Excel的需求,需求还是很简单的,只需要把表格展示的信息导出成Excel就可以了,也没有复杂的合并列什么的。...

用 Superb AI Suite 和 NVIDIA TAO Toolkit 创建高质量的计算机视觉应用

数据标记和模型训练一直被认为是团队在构建AI或机器学习基础设施时所面临的最大挑战。两者都是机器学习应用开发过程中的重要步骤,如果执行不当就会导致结果不准确和性能下降。...

二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP

一、基础概念请求和响应报文客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入相应报文中返回给客户端。...

取消回复欢迎 发表评论: