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

Java EE基础之JSP(三) jsp+javabean+servlet

yuyutoo 2024-10-12 01:05 6 浏览 0 评论

原来准备简单点,用一篇文章介绍完JSP的,没想到细节很多。这是第三篇也是最后一篇,这三篇文章介绍了基本的JSP知识,很多名词概念和用法,一定要在实践项目中使用之后才会有更加亲切的体会。第三篇接着上篇介绍的JSP内置对象。

上篇我们说过,在我们的响应用户请求的方法_jspservice()方法的头部,定义和初始化了一些局部变量。他们其实就是我们现在说的jsp内置对象,通过这些对象所封装的方法,我们可以完成一些关于数据共享,数据传输,浏览器响应等操作。

第一个内置对象是,application。熟悉.net的朋友可能知道,在.net中,可以使用session,cookies来实现多个不同页面之间数据的共享,在我们JSP 中上述有着更加完善的共享数据机制,上述的session和cookies只是其中的一部分。所有被application设置访问范围的数据在整个web应用中都是可见的,无论你是jsp页面还是servlet页面,只要是位于当前的web应用中的页面都是可以访问该数据的。这叫全局可见性,是所有共享数据中范围最大的。具体的使用方法如下:

<html>

这里写图片描述

访问过index页面之后访问convert页面,可以看到我们在index页面设置的全局性变量,在另外的页面是可以访问的到的。这种是将数据设置在整个web应用下的,所以在可以放在更低范围内的情况下(后文会介绍在更小的范围设置共享数据),尽量还是不要设置在全局下,因为这样很有可能在不经意之间被修改了值产生数据不一致性。

application对象的第二个作用是可以读取web.xml中的配置信息,这是一种可能会经常使用到的操作。因为我们的数据库用户名和密码等参数的配置一般都是配置在web.xml中的,当我们在程序中需要用到的时候,就可以考虑这种操作来读取配置信息。

/首先在web.xml文件中配置一下信息/

这里写图片描述

<html>

这里写图片描述

通过上述操作,我们成功的访问了配置信息内容,web.xml中< context-param>标签中的就是类似于键值对的作用,子标签配置的是name和value和我们的param动作指令的传参是类似的,之后便可以同过方法getInitParameter("name")来获取对应的value的值。

第二个内置对象,pageContext。这是一个非常大佬的对象,他可以获取其他的内置对象。

ServletReques getRequest(); 
//获取Request对象ServletResponse getResponse(); 
//获取Response对象SerletConfig getServletConfig();
//获取config对象ServletContext getServletContext();
//获取application对象HttpSession getSession(); 
//获取session对象

以上的有些对象我们说了,有些对象会在后文中说明,有些暂时不会介绍,原因是他们不是很常用。

pageContext对象的主要作用还是对共享数据的范围设定。

pageContext.setAttribute("name","li",pageContext.PAGE_SCOPE); 
//设置变量位于当前page范围内可见pageContext.setAttribute("name","li",pageContext.REQUEST_SCOPE); 
//设置变量位于本次请求中可见pageContext.setAttribute("name","li",pageContext.SESSION_SCOPE); 
//设置变量位于当前会话范围内可见(就是浏览器关了就没了)
pageContext.setAttribute("name","li",pageContext.APPLICATION_SCOPE); 
//设置变量位于当前Web应用范围内可见

当然,对应的获取方法是:pageContext.getAttribute("name")。

第三个内置对象是,request对象。这个对象封装了用户的某次请求的所有内容,有浏览器自动生成的请求头,还有用户提交的请求参数。请求头对于我们来说暂时可能没怎么使用到,但是请求参数还是需要好好的研习一下的。下面提供了几个获取请求参数的方法:

String getParameter(String paramName) 
//获取指定name的参数值Map getParameterMap() 
//获取所有请求参数名和请求参数值,以键值对的形式返回Enumeration getParameterNames() 
//获取所有请求参数名构成的Enumeration集合String[] getParameterValues(String name) 
//获取指定name的所有参数值,可能一个参数name对应了多个参数值
<html>

相信大家已经知道结果了,我们知道浏览器的请求方法是有两种的,Get和Post请求,两种请求方式的优劣相信大家都知道,此处不再啰嗦。虽然是两种请求方式,但是我们在获取请求参数的数值的时候是一样的方法,不要做另外的改变。以上至演示了一种形式,其他形式获取参数的情况大家可以自行测试。

request对象还有一个操作也是经常会做的,官方说法,操作request范围的属性。其实就是将某个变量放到request请求参数中,在接受页面出可以接受该参数。

<html>

我们可以简单的理解为,这个操作就是将指定的参数添加到请求本页面的这个request对象中,一旦此页面实现跳转,必然可以携带者这个参数转发到另外的页面中。

最后,我们说说这个response内置对象。刚才我们介绍的request是处理用户请求的,主要是接受用户传入的请求参数,或者解析请求头信息等。而正真决定怎么响应我们用户的是response对象。

首先我们看看第一个作用,response的getOutputStream()方法,这个方法返回响应输出字节流,一个OutputStream对象。我们在介绍流那块知识的时候说过,每个流都会绑定一个文件,这个文件可以是字节数组,或者磁盘上的实际文件,因为这些操作最终都会流到实际的文件中。(不可能是一个抽象不存在的文件,那我们的一切操作岂不是操作空气,又没有改变什么),此处可以将getOutputStream方法理解为绑定了当前请求的浏览器,也就是我们队流进行写入会写到浏览器中。看个例子:

<html>

这里写图片描述

结果显而易见,但是不要忘记引入Java.io.* 这个包,否则会报错,不能识别OutputStream。

第二个用法,页面重定向。使用的是方法,response.sendRedirect(String path)。这个页面重定向和之前的forward动作指令是不一样的,之前的forward指令不会丢弃当前request的请求参数,而这也页面重定向会丢弃所有的请求参数,重新开一个request,并且地址栏的地址也是会随之改变的。具体代码很简单,不演示了,要不然就写不完了。

最后一个response对象的操作是,增加cookies,我们知道cookies是保存在用户本机电脑上的,对服务器带宽没什么影响,但是会有不安全隐患,如果被用户删了怎么办?但是我们还是会经常的使用它的,现在我们看看怎么使用这个cookies。

<%@ page contentType="text/html;charset=UTF-8" language="java" 
import="java.io.*,javax.servlet.http.Cookie" %><html>

设置cookie只需要三个步骤,在上述代码中已经得到体现,第一步,创建cookie对象,没引入cookie包的会报错的,第二步,设置cookie的声明周期,也就是什么时候过期失效,单位毫秒,第三部使用response.addCookie()方法设置cookie。

cookie的读出,我觉的是设计的不合理的地方,它竟然需要将所有的cookie全部读取出来,然后需要遍历找到我们需要的cookie。当然可能.net中的底层也是这么实现的,但是人家提供的接口就很简洁,根据名称就可以直接找到值。

至此,JSP的基本知识就介绍完了,其实还是不全面,但是我会在继续学习中进行补充的。如果文章哪里有错误,欢迎大家指出来。

相关推荐

国产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主机功能强大,支...

取消回复欢迎 发表评论: