- 浏览: 458965 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
不同页面或者用户之间共享数据
在JSP中共享数据,大体上分为两种情况,第一种是在同一个用户的不同页面之间共享数据,另一种是在不同用户之间共享数据。
对于同一个用户的会话,要想在不同的页面之间共享数据,可以有以下几种选择:
1.1 把数据保存在Session中
1.2 通过Cookie
1.3 通过隐含的表单把数据提交到下一个页面
1.4 通过ServletContext对象
1.5 通过application对象
1.6 通过文件系统或者数据库
要在不同用户之间共享数据,通常的方法是:
1.1 通过ServletContext对象
1.2 通过application对象
1.3 通过文件系统或数据库
可见,对于在不同用户之间共享数据的实现方法,在同一个用户的不同页面也能实现数据共享。
在不同页面之间共享数据
1. 使用Session共享数据
用户在浏览网页时,由于HTTP协议时一种无状态的协议,往往在不同的页面之间存在数据交换的问题,这就需要在这些不同的页面之间共享数据。在编程实现中,我们最常见的实现方法是把共享的数据保存到Session中。比如在用户登录的页面把一些用户的信息保存到Session之中,然后在其他的页面中读取用户的信息。
这些共享的数据可以是字符串或者与Java的原始数据类型相关的对象,也可以是一个Java对象。
下面看一个实例。用户登录时,如果验证成功,就把登录的信息保存在一个userSession类中,在其他的页面可以读取这个值。
这里是一个JavaBean下面看jsp页面
假设这个登录页面的处理如下:
(1) 获得用户登录信息
(2) 连接数据库,进行权限验证
(3) 如果验证通过,那么读取用户的注册信息
(4) 把用户的注册信息保存到一个userSession对象中
(5) 把userSession对象保存到Session内建对象中
(6) 把视图派发到下一个显示页面。
需要注意的是session.setAttribute("userSession",user)把userSession的一个对象设置到Session中,Session只能保存对象,不能保存原生类型。例如
session.setAttribute("count",10)
是非法的语句,如果要把值10的整数保存到Session中,需要以下的方法:
session.setAttribute("count",new Integer(10)),
然后在另一个页面中使用:
(Integer)session.getAttribute("count");
把这个整数读取出来。
接下来看weclome.jsp页面
可以看出,通过:
UserSession user=(UserSession)session.getAttribute("userSession");
代码来读取在前一个页面中设置的对象,然后再从这个对象中读取一些相关的值
当然也可以使用JavaBean的形式,如在login.jsp中使用的JavBean
注意在这个代码段里面的JavaBean的范围是Session。同样,在另一个页面中也可以使用
<jsp:useBean>指令获得前面的JavaBean
在<jsp:useBean>指令中,由于指定了它的scope为Session,如果在Session中已经有一个userSession的JavaBean,那么直接使用它;如果还没有这个JavaBean,就创建一个新的JavaBean。由于在前面的页面中已经创建了JavaBean,这里简单地去读它的值就可以了。其实这种共享数据的方式和session.setAttribute("name","value")的本质是一样
2.使用Cookie
和使用Session不同的是,Cookie是放在客户端的。由于客户端可能考虑安全等因素会禁止使用Cookie,这样在不使用Cookie时可能会遇到一些麻烦。
下面我们来看一个使用Cookie的例子。
在客户端设置Cookie(setCookie.jsp)
在这种方式中,首先创建Cookie,然后通过response.addCookie()方法把Cookie添加客户端。
下面我们看怎么在另一个页面中读取这个Cookie。
在另一个页面中读取Cookie(getCookie.jsp)
在这个页面中,首先获得客户端的所有Cookie,然后从Cookie中获得目标的Cookie以读取它的值。
3.使用隐含的表单
这种方式通过隐含表单的形式把数据传递到下一个页面,它有两个局限性:
1. 只能在相邻的两个页面之间传递数据
2. 客户端可以通过查看网页源代码的方法获得表单中的数据,安全性不好。
简单看下它的使用方法:(不建议使用。知道就可以)
在JSP中共享数据,大体上分为两种情况,第一种是在同一个用户的不同页面之间共享数据,另一种是在不同用户之间共享数据。
对于同一个用户的会话,要想在不同的页面之间共享数据,可以有以下几种选择:
1.1 把数据保存在Session中
1.2 通过Cookie
1.3 通过隐含的表单把数据提交到下一个页面
1.4 通过ServletContext对象
1.5 通过application对象
1.6 通过文件系统或者数据库
要在不同用户之间共享数据,通常的方法是:
1.1 通过ServletContext对象
1.2 通过application对象
1.3 通过文件系统或数据库
可见,对于在不同用户之间共享数据的实现方法,在同一个用户的不同页面也能实现数据共享。
在不同页面之间共享数据
1. 使用Session共享数据
用户在浏览网页时,由于HTTP协议时一种无状态的协议,往往在不同的页面之间存在数据交换的问题,这就需要在这些不同的页面之间共享数据。在编程实现中,我们最常见的实现方法是把共享的数据保存到Session中。比如在用户登录的页面把一些用户的信息保存到Session之中,然后在其他的页面中读取用户的信息。
这些共享的数据可以是字符串或者与Java的原始数据类型相关的对象,也可以是一个Java对象。
下面看一个实例。用户登录时,如果验证成功,就把登录的信息保存在一个userSession类中,在其他的页面可以读取这个值。
package com.test.ch10; import java.util.Date; public class UserSession { private boolean isLogin=false; private String userId; private Date lastLoginTime; private int logCount; public void setIsLogin(boolean l) { this.isLogin=l; } public void setUserId(String userId) { this.userId=userId; } public void setLastLoginTime(Date d) { this.lastLoginTime=d; } public void setLogCount(int logCount) { this.logCount=logCount; } public boolean isLogin() { return this.isLogin; } public String getUserId() { return this.userId; } public Date getLastLoginTime() { return this.lastLoginTime; } public int getLogCount() { return this.logCount; } }
这里是一个JavaBean下面看jsp页面
<%@page contentType="text/html;charset=gb2312" language="java" import="java.sql.*",com.test.ch10.* errorPage=""%> <html> <head> <title>Test Login Page</title> <meta http-equiv="Content-Type" context="text/html;charset=gb2312"> </head> <body> <% String name=request.getParameter("name"); String password=request.getParameter("password"); //连接数据库,进行登录 int logCount=resultSet.getInt("count"); java.util.Date lastLoginTime=resultSet.getDate("lastLogintime"); UserSession user=new UserSession(); user.setUserId(name); user.setIsLogin(true); user.setLastLoginTime(new java.util.Date); user.setLogCount(10); session.setAttribute("userSession",user); response.sendRedirect("welcome.jsp"); %> </body> </html>
假设这个登录页面的处理如下:
(1) 获得用户登录信息
(2) 连接数据库,进行权限验证
(3) 如果验证通过,那么读取用户的注册信息
(4) 把用户的注册信息保存到一个userSession对象中
(5) 把userSession对象保存到Session内建对象中
(6) 把视图派发到下一个显示页面。
需要注意的是session.setAttribute("userSession",user)把userSession的一个对象设置到Session中,Session只能保存对象,不能保存原生类型。例如
session.setAttribute("count",10)
是非法的语句,如果要把值10的整数保存到Session中,需要以下的方法:
session.setAttribute("count",new Integer(10)),
然后在另一个页面中使用:
(Integer)session.getAttribute("count");
把这个整数读取出来。
接下来看weclome.jsp页面
<%@page contentType="text/html;charset=gb2312" language="java" import="java.sql.*",com.test.ch10.* errorPage=""%> ....... <% UserSession user=(UserSession)session.getAttribute("userSession"); try{ if(user.isLogin()){ out.println("欢迎你,你的登录ID是:"+user.getUserId()); out.println("你上次登录的时间是:"+user.getLastLoginTime()); out.println("现在是你第:"+user.getLogCount()+"次登陆此网站"); }else{ response.sendRedirect("login.jsp"); } } catch(Exception e){ response.sendRedirect("login.jsp"); } %> ....
可以看出,通过:
UserSession user=(UserSession)session.getAttribute("userSession");
代码来读取在前一个页面中设置的对象,然后再从这个对象中读取一些相关的值
当然也可以使用JavaBean的形式,如在login.jsp中使用的JavBean
... <jsp:useBean id="user" class="com.test.ch10.UserSession" scope="session"/> <% String name=request.getParameter("name"); String password=request.getParameter("password"); user.setUserId(name); user.setIsLogin(true); user.setLastLoginTime(new java.util.Date); user.setLogCount(10); response.sendRedirect("welcome.jsp"); %>
注意在这个代码段里面的JavaBean的范围是Session。同样,在另一个页面中也可以使用
<jsp:useBean>指令获得前面的JavaBean
... <jsp:useBean id="user" class="com.test.ch10.UserSession" scope="session"/> <% try{ if(user.isLogin()) { out.println("欢迎你,你的登录ID是:"+user.getUserId()); .............. %>
在<jsp:useBean>指令中,由于指定了它的scope为Session,如果在Session中已经有一个userSession的JavaBean,那么直接使用它;如果还没有这个JavaBean,就创建一个新的JavaBean。由于在前面的页面中已经创建了JavaBean,这里简单地去读它的值就可以了。其实这种共享数据的方式和session.setAttribute("name","value")的本质是一样
2.使用Cookie
和使用Session不同的是,Cookie是放在客户端的。由于客户端可能考虑安全等因素会禁止使用Cookie,这样在不使用Cookie时可能会遇到一些麻烦。
下面我们来看一个使用Cookie的例子。
在客户端设置Cookie(setCookie.jsp)
<%@ page contentType="text/html;charset=gb2312" langauge="java" import="java.sql.*,javax.servlet.http.*,com.test.ch10.*"errorPage=""%> <% Cookie cookie=new Cookie("lastLoginTime",new java.util.Date().toLocaleString()); response.addCookie(cookie); %> //已经在客户端设置了Cookie,你可以在<a href="getCookie.jsp">这个</a>页面中读取这个Cookie
在这种方式中,首先创建Cookie,然后通过response.addCookie()方法把Cookie添加客户端。
下面我们看怎么在另一个页面中读取这个Cookie。
在另一个页面中读取Cookie(getCookie.jsp)
<%@ page contentType="text/html;charset=gb2312" langauge="java" import="java.sql.*,javax.servlet.http.*,com.test.ch10.*"errorPage=""%> <% Cookie[] cookies=request.getCookies(); for(int i=0;i<cookies.length;i++){ Cookie c=cookies[i]; String name=c.getName(); if(name.equals("lastLoginTime")) out.println("你上次登录的时间是:"+c.getValue()); } %>
在这个页面中,首先获得客户端的所有Cookie,然后从Cookie中获得目标的Cookie以读取它的值。
3.使用隐含的表单
这种方式通过隐含表单的形式把数据传递到下一个页面,它有两个局限性:
1. 只能在相邻的两个页面之间传递数据
2. 客户端可以通过查看网页源代码的方法获得表单中的数据,安全性不好。
简单看下它的使用方法:(不建议使用。知道就可以)
<form action="target.jsp"> <input type=hidden name="test" value="test"/> <input type=hidden name="tes2" value="test2"/> </form> //在另一个页面中,通过以下的方式获得这些数据 String test=request.getParameter("test"); String test2=request.getParameter("test2");
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2094最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 998在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 889最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93891.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 865FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 760核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1031HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 778基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1246基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1063在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2193在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2218JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2241在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35131.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1430java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4516在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3952在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18932前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3768简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8642Java EE 5平台引入了Java ...
相关推荐
以下是一些在JSP开发中常见的知识点: 1. **JSP基本语法**:JSP是基于Java的动态网页技术,它允许在HTML页面中嵌入Java代码。JSP页面由两部分组成——静态内容和动态脚本元素。动态脚本元素包括`<% %>`、`<%= %>`和...
包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录下的文件移到另一个指定的目录? 6. ...
在这个阶段不需要过多涉及Swing或Java图形界面的相关知识,因为这些在JSP开发中并不常用。相反,应该把注意力集中在Java的工作原理、逻辑思维以及JavaBean的应用上。学习Applet虽然有助于拓宽视野,但在实际项目中...
本书精选了230多个实用性很强的问题和常用需求,旨在帮助读者解决在JSP应用程序开发中经常遇到的实际问题,提高程序开发效率。本书内容涵盖了搭建开发环境、JSP基础知识、JavaBean高级应用、JSP高级组件、表单验证、...
本书全面、细致地介绍了JSP网络开发技术的原理和基本编程...本书不仅适合JSP网络开发技术的初学者,还能够帮助有一定编程经验的JSP开发人员解决开发中遇到的问题。同时本书也可作为高等院校计算机相关专业的参考用书。
根据给定的信息,我们可以总结出以下关于JSP网页开发中常用的代码知识点: ### 1. 禁止右键菜单和其他浏览器默认行为 在JSP页面中,有时我们需要禁止用户的一些默认操作,例如右键菜单、拖拽选择等。下面的代码...
在JSP(Java Server Pages)...这些技巧是JSP开发中不可或缺的基础,掌握它们能够帮助开发者构建更高效、稳定和易于维护的Web应用程序。在实际项目中,还需要结合Java编程、Servlet技术以及Web容器的特性进行综合运用。
在JSP(JavaServer Pages)开发过程中,经常会遇到一些需要技巧性处理的问题,本文将重点介绍两个常见的小技巧:如何获取虚拟目录的物理路径以及如何解决`response.sendRedirect`带中文的问题。此外,还会简要提及...
JSP应用开发可以遵循一定的技巧和技术,掌握了这些技巧和技术,有助于提高开发效率,缩短开发周期。本章介绍JSP开发中一些常用的技巧和应用。
JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录下的文件移到另一个指定的目录? 6. 制作表格线? 7...
本篇文章将深入探讨一些JSP开发中的经典技巧,包括客户端编程、发送Email、绘制图形、文件上传、编写国际化应用,以及使用JFreeChart图表系统和MVC架构。 首先,客户端编程是Web应用的重要组成部分。动态表格的实现...
《Ajax+JSP网站开发从入门到精通》的源代码,全书共分为16章,包括JSP的基础知识、JSP访问外部数据、JSP高级技术、Ajax概述、Ajax相关技术、Ajax开发基础、Ajax开发模式、Ajax框架、Ajax常用技巧。本书最后介绍了6个...
这份源代码包含了作者在书中所讲解的各种JSP开发实例,覆盖了从基础到高级的各种主题。 **JSP技术介绍**: JSP是Java平台上的动态网页技术,它允许开发者将静态HTML内容与动态Java代码结合,以创建数据驱动的Web...
接着,会逐步深入到EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),这些都是简化JSP开发的工具,使代码更加简洁易读。 在实例部分,书中可能会涵盖如用户登录、注册、数据展示、表单...
通过实际操作这些例子,你可以更好地理解和掌握JSP开发的技巧。这些实例可以帮助你在实践中学习,从简单的页面展示到复杂的业务逻辑处理,逐步提升你的开发技能。 总的来说,"JSP系统开发与设计实例教程"是一个全面...
JSP入门、HTTP和Servlet基础、JSP基本语法、JSP内置对象、JavaBean开发、MVC模式、JSP开发常用技巧、表达式语言、JSTL、自定义标签、JDBC、JSP实用开发技术、综合应用实例以及Struts/Hibernate/Spring初步等
7. **集成开发环境(IDE)集成**:可以与Eclipse、IntelliJ IDEA等主流IDE无缝集成,让开发者在熟悉的环境中进行JSP开发。 **三、JSpsmart的安装与配置** 1. **下载**:首先,从官方渠道或指定的资源库下载JSp...