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

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

yuyutoo 2024-10-12 01:06 7 浏览 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安在线”

相关推荐

国产RISC-V终端Sipeed Lichee Console4A上架,1699元起

IT之家12月11日消息,国内著名开源硬件厂商Sipeed矽速科技推出RISC-V终端LicheeConsole4A,售价1699元(不带LM4A模块)-3299元。Li...

H3C交换机常用配置命令

1、配置主机名...

ThinkPad老版Bios中英文对应详解

ThinkPad老版Bios中文对应详解。解决方案:...

澳大利亚Console Connect与非洲数据中心达成战略合作,增强整个非洲的数据连接

据techafricanews网11月13日报道,在2024年非洲科技节上,澳大利亚ConsoleConnect与非洲数据中心共同宣布了一项具有里程碑意义的战略合作协议,该协议致力于提升非洲大陆关键...

多功能调焦 腾龙TAP-in Console延期发售

最新消息传出,腾龙TAP-inConsole(modeltap-01)多功能调焦器由于生产方面原因原本预计3月24日发售延迟至3月30日,腾龙的这款调焦器功能类似于适马的USBDock调焦底座,...

关于交换机上存在的不同接口介绍(一)

生活中常见的电子设备有很多,其中明交换机主要起到的是连接的作用,上面有非常多的接口,下面就一起来看看这些不同的接口作用是什么。1、RJ-45接口这是我们见的最多、应用最广的一种接口类型,它属于双绞线以...

颜值更高?微软新推精英版Xbox One手柄

本月,微软的XboxOne升级了更强大的版本——XboxOneEliteconsole(精英版?),升级版的控制手柄功能更强大,可以主导你的客厅;从曝光的图片上看得出,新版XboxOneE...

“全球首个”:Console Connect为全球物联网项目推出连接解决方案

据DevelopingTelecoms2月27日报道,在MWC2023上,全球网络即服务(NaaS)平台ConsoleConnect推出了“全球首个”私有连接解决方案,可帮助企业在全球范围内动态...

密码遗忘专题——Console口密码遗忘

如果忘记了Console口密码,用户可以通过以下两种方式来设置新的Console口密码:方法一:通过STelnet/Telnet登录设备修改Console口密码。...

为锐捷路由器交换机开启web和telnet,实现轻松管理

笔者上一篇文章写了关于锐捷二层交换机配置教程,那么接下来讲一下锐捷的路由交换设备配置web、telnet技巧。同样,今天的教程也是基于命令行,比较简单,适合新手小白进行学习。准备工作配置前准备:con...

C# - 类文件构成,C#基本语法,Console属性与方法 007

类文件(.cs)构成类文件主要分为引用命名空间与自己项目的命名空间...

Console OS系统帮你在PC上自由切换Windows和安卓应用

通过ConsoleOS你可以在你的PC上安装自己喜欢的安卓游戏,需要时之间切换回Windows进行其他工作,ConsoleOS能够完全利用你的PC硬件配置,该系统可以安装在PC的内置硬盘里,也可以...

交换机通过串口线console口登录设备

一、功能简介:PC端通过设备的Console口登录,实现对第一次上电的设备进行基本配置和管理。...

(每日持续更新)jdk api之Console基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整...

KFC推出“真正的次世代主机”KFConsole!真4K/120帧

今天KFCGaming官方推特发布了一则“主机”宣传片,正式公布了旗下名为KFConsole的全新主机产品。并宣称:游戏的未来就在这里,介绍真正的次世代主机!根据官方介绍,本款KFC主机功能强大,支...

取消回复欢迎 发表评论: