上篇我们说过,在我们的响运用户要求的方法_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的基本知识就先容完了,实在还是不全面,但是我会在连续学习中进行补充的。如果文章哪里有缺点,欢迎大家指出来。