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

来源:互联网 发布:初级程序员考什么语言 编辑:程序博客网 时间:2024/05/01 23:26

        在学习九大内置对象之前先来看看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页面中增加代码:

       

       最后的运行结果:

        

       

       


4 0