jsp的域深入
来源:互联网 发布:户型图数据录入 编辑:程序博客网 时间:2024/06/08 12:32
首先,jsp有9大内置对象:
9个内置对象就不用说,大家或多或少都使用过,但是,这些内置对象有其对应的作用范围,即作用域:
发现作用域主要有4个:page,session,request,application:
现在,我们就这4个域进行研究:
首先第一步,写一个form表单,用于将数据传递到第二个页面:
第二步,在第二个页面中,把获取的数据传入这个域所代表的对象中;
第三部,进行page域的测试;
第四部,进行session域的测试;
第五步,进行request域的测试;
第六步,进行application域的测试。
第一步,先写一个from表单,用于获取数据:
<form method="post" action="JSP/second.jsp"> <table> <tr> <td> <b>用户名:</b> </td> <td> <input type="text" name = "user"> </td> </tr> <tr> <td> <b>密 码:</b> </td> <td> <input type="password" name = "pswd"> </td> </tr> <tr> <td> <b>性 别:</b> </td> <td> 男<input type="radio" name = "sex" value="男" checked="checked"> 女<input type="radio" name = "sex" value="女"> </td> </tr> <tr> <td> <b>年 龄:</b> </td> <td> <input type="text" name = "age"> </td> </tr> <tr> <td> <input type="reset" value = "重置"> </td> <td> <input type="submit" value="提交"> </td> </tr> </table> </form>
效果如下:
<%String nameString = null;String pswdString = null;String sexString = null;String ageString = null;String nmString = request.getParameter("user");String pdString = request.getParameter("pswd");String sString = request.getParameter("sex");String aString = request.getParameter("age");nameString = new String(nmString.getBytes("ISO-8859-1"),"UTF-8");pswdString = new String(pdString.getBytes("ISO-8859-1"),"UTF-8");sexString = new String(sString.getBytes("ISO-8859-1"),"UTF-8");ageString = new String(aString.getBytes("ISO-8859-1"),"UTF-8");session.setAttribute("name", nameString);session.setAttribute("pswd", pswdString);session.setAttribute("sex", sexString);session.setAttribute("age", ageString);request.setAttribute("name", nameString);request.setAttribute("pswd", pswdString);request.setAttribute("sex", sexString);request.setAttribute("age", ageString);pageContext.setAttribute("name", nameString);pageContext.setAttribute("pswd", pswdString);pageContext.setAttribute("sex", sexString);pageContext.setAttribute("age", ageString);application.setAttribute("name", nameString);application.setAttribute("pswd", pswdString);application.setAttribute("sex", sexString);application.setAttribute("age", ageString);%>
效果如下:
所以,在当前页面对传入的值进行提取:
<%String namepageContextString = (String)pageContext.getAttribute("name");String namesessionString = (String)session.getAttribute("name");String namerequestString = (String)request.getAttribute("name");String nameapplicationString = (String)application.getAttribute("name");String pswdpageContextString = (String)pageContext.getAttribute("pswd");String pswdsessionString = (String)session.getAttribute("pswd");String pswdrequestString = (String)request.getAttribute("pswd");String pswdapplicationString = (String)application.getAttribute("pswd");String sexpageContextString = (String)pageContext.getAttribute("sex");String sexsessionString = (String)session.getAttribute("sex");String sexrequestString = (String)request.getAttribute("sex");String sexapplicationString = (String)application.getAttribute("sex");String agepageContextString = (String)pageContext.getAttribute("age");String agesessionString = (String)session.getAttribute("age");String agerequestString = (String)request.getAttribute("age");String ageapplicationString = (String)application.getAttribute("age");%>
效果如下:
发现所有的域对象都可以获取到值,说明,4大域在单个的页面内全部有效。
第四步,进行session测试,跳转到一个新的jsp页面,直接提取4大域对象的值:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>fourjsp page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> <% String namepageContextString = (String)pageContext.getAttribute("name"); String namesessionString = (String)session.getAttribute("name"); String namerequestString = (String)request.getAttribute("name"); String nameapplicationString = (String)application.getAttribute("name"); String pswdpageContextString = (String)pageContext.getAttribute("pswd"); String pswdsessionString = (String)session.getAttribute("pswd"); String pswdrequestString = (String)request.getAttribute("pswd"); String pswdapplicationString = (String)application.getAttribute("pswd"); String sexpageContextString = (String)pageContext.getAttribute("sex"); String sexsessionString = (String)session.getAttribute("sex"); String sexrequestString = (String)request.getAttribute("sex"); String sexapplicationString = (String)application.getAttribute("sex"); String agepageContextString = (String)pageContext.getAttribute("age"); String agesessionString = (String)session.getAttribute("age"); String agerequestString = (String)request.getAttribute("age"); String ageapplicationString = (String)application.getAttribute("age"); %> 客户信息:<br> pageContext:<br> 姓名:<%=namepageContextString %><br> 密码:<%=pswdpageContextString %><br> 性别:<%=sexpageContextString %><br> 年龄:<%=agepageContextString %><br> session:<br> 姓名:<%=namesessionString %><br> 密码:<%=pswdsessionString %><br> 性别:<%=sexsessionString %><br> 年龄:<%=agesessionString %><br> request:<br> 姓名:<%=namerequestString %><br> 密码:<%=pswdrequestString %><br> 性别:<%=sexrequestString %><br> 年龄:<%=agerequestString %><br> application:<br> 姓名:<%=nameapplicationString %><br> 密码:<%=pswdapplicationString %><br> 性别:<%=sexapplicationString %><br> 年龄:<%=ageapplicationString %><br> </body></html>效果如下:
发现page域对象和request域对象无法获取到值,说明,通过链接打开新的页面,导致request和page域失效,即page和request域的作用范围暂时是单个页面。
第五步,进行request域测试,在第二个页面中加入以下代码:
<jsp:forward page="/JSP/four.jsp"></jsp:forward>
然后,回到第一个信息输入页面:
进行数据输入:
点击提交:
发现page失效,但是request没有失效,而且,url是第二个页面的url,但是显示的页面是第四个页面,
在看看加入的代码,是一个jsp的动作转发:
所以,发现request域的范围>page,但是小于session和application域:
接下来我们测试session,发现session域的范围是一次会话,所以,我们关闭浏览器,直接输入第四个页面的url:
发现session的域对象失效,但是application域对象仍然有效,
到了这里,可以认为
page-------单个页面
request--------请求范围---------url未变
session--------一次会话--------浏览器未关闭
application---------一个项目周期----------服务器未关闭
到了这里,4大域的范围就全部清楚了。
- jsp的域深入
- 深入JSP
- jsp的路径的深入研究
- JSP中标签库的深入研究
- JSP中标签库的深入研究
- JSP中标签库的深入研究
- JSP的相对路径深入研究
- JSP的相对路径深入研究!
- JSP的相对路径深入研究
- JSP的相对路径--深入研究
- JSP编程-Java线程的深入探讨
- 深入剖析jsp的工作原理
- 学会深入"了解"JSP
- 深入jsp运行机制
- jsp input 深入
- 深入理解JSP
- 深入理解JSP原理
- 深入理解JSP
- html笔记
- java判断远程文件是否存在
- Tomcat发布一个web项目
- Android基础UI控件
- 大数据、数据分析、数据统计、数据挖掘、OLAP的区别
- jsp的域深入
- POJ1113---Wall(基础计算几何:凸包入门)
- WCF入门
- MULE ESB项目本地部署(windows)
- HDU1281 【最大二分图匹配+关键路径】
- 【iOS】简述下OC block的实现
- Heartbeat
- get方式获取页码,id号分页显示查询结果
- HDU 2017 多校联合训练赛1 1002 6034 Balala Power 排序