标签:
在学习九大内置对象之前先来看看Web应用程序的请求响应模式。
Web应用程序的请求响应模式图示:
1)用户发送请求(request)
2)服务器给用户响应(response)
生活案例:
JSP内置对象是Web容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明,也就是不使用
new关键字就可以使用的内置对象。JSP内置对象也被称为预定义变量。
九大内置对象为:
九个内置对象的简介见下表:
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 对象是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页面中增加代码:
最后的运行结果:
标签:
原文地址:http://blog.csdn.net/erlian1992/article/details/51901629