Java Web学习(11):JSP九大内置对象(一)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 00:22   23   0

在学习九大内置对象之前先来看看Web应用程序的请求响应模式。

Web应用程序请求响应模式

Web应用程序的请求响应模式图示:

1)用户发送请求(request)

2)服务器给用户响应(response)

生活案例:

JSP九大内置对象一览

JSP内置对象是Web容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明,也就是不使用

new关键字就可以使用的内置对象。JSP内置对象也被称为预定义变量。

九大内置对象为:


九个内置对象的简介见下表:

out对象

out对象是javax.servlet.jsp.JspWriter类的实例,用来在response对象中写入内容,是向客户端输出内容更常用

的对象。

out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以

对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关

闭输出流。

最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用

buffered='false'属性来轻松关闭缓存。

JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的

法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。

out对象常用方法如下:


我们来看一个具体的例子:

我们使用上面out对象的一些方法来输出一首唐诗以及有关缓冲区信息的代码:


输出结果:

在上面的代码中的两句唐诗之后添加flush()方法,看是否有区别:


输出结果:


从输出的结果的缓冲区剩余大小来看,是缓冲区剩余大小的字节数变大了。

在使用flush()方法之后调用clear()方法会抛出异常,导致后面的结果不会输出。这是我们应该尽量避免的。我们

在代码中尝试:

运行结果:

在使用flush()方法之后调用clearBuffer()方法则不会抛出异常,后面的结果依然会完整的输出。

运行结果:


flush()方法是先把缓冲区的内容输出,然后再清除,clear()方法是直接清除缓冲区。

request对象

request 对象是javax.servlet.httpServletRequest类型的对象。该对象代表了客户端的请求信息,主要用于接受

通过HTTP协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一

次请求。

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。request对象具有请

求域,即完成客户端的请求之前,该对象一直有效。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的

request对象来代表这个请求。

request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。

request对象常用的方法:


在进行实例之前我们有必要来了解一下表单有两种提交方式:get与post

表达提交的语法格式为:

<form name="regform" action="动作" method="提交方式"></form>

区别:

1)get提交方式

以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2KB。安全性较低但效率比

post方式高。适合提交数据量不大,安全性不高的数据。比如:搜索、查询等功能。

实例:

login.jsp页面:

dologin.jsp页面:


运行结果:


2)post提交方式

将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性能高的用户信息,比如:注册、修改、

上传等功能。

实例:

在上面login.jsp页面的提交方式改为post:

dologin.jsp页面还是同样的。

输入同样的用户名和密码提交至dologin.jsp页面的运行结果:


再来看reuqest对象的实例

我们来使用request对象接受提交的兴趣爱好选项:

reg.jsp页面代码:

request.jsp页面代码:

运行结果:

如果我们想在用户名的地方输入中文用户名,上面的结果会导致乱码,我们在request.jsp页面加上一句代码:

最后运行的结果:

那么我们使用URL来传递用户名呢?

在reg.jsp页面中加入这样一段代码:

最后运行的结果:

再次想到,那么URL传递的也是中文用户名呢?上述的方面并不能解决乱码,这次需要去修改web.xml配置文件

中的一些参数:

在Tomcat服务器安装目录下的conf目录下的server.xml中的connector加上:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/>

重启Tomcat服务器即可。

最后运行的结果为:

我们也可以在request.jsp页面新增一些用户的属性和其对应的属性值:

最后运行的结果:

我们使用request对象的一些方法来测试,在request.jsp页面中增加代码:

最后的运行结果:


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP