- 浏览: 445190 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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创建错误处理页面
先介绍下会话跟踪的概念吧!
我们知道,HTTP是一种无状态的协议,也就是说,客户端在浏览服务器上的不同的页面时,每次请求获得响应完成后,服务器和客户端的Socket连接会关闭。但是在不同页面之间,我们往往需要交换信息。交换信息的方式如下:
1.HTTP信息
它将需要交换的信息保存在HTTP头部。随着代理服务器的出现和保密性的问题,这种技术就过时了。
2.隐藏字段
通过HTML的HIDDEN标记来传递信息:
<input type="hidden" name="somename"value="somevalue">
这种方式存在保密性问题,我们可以通过浏览器菜单中的【view】查看—>【Source】命令来查看浏览器中的源文件
3.URL重写
把身份认证的信息加到页面链接的尾部,如:
<a href="/user.jsp">Next</a>
改为
<a href="user.jsp?name=hellking&item=item&quantify=3">Next</a>
其实这样方式也存在安全的问题,同时,这个链接的长度受URL长度的限制(一般浏览器URL长度最大为2KB)
4.Cookie
浏览器把一些小的片断信息保存在客户端,在以后的使用过程中,服务器端可以使用客户端的Cookie。Cookie虽然是一个有效的解决方式,但同样存在一些问题:客户端可以选择不接受Cookie,如果这样,有些程序很可能就不能正常运行。
5.Session
Session就是会话。简单地讲,会话可以在单一的用户和服务器之间定义一些列的交互,这些交互可以保持一段时间。一旦服务器上建立一个会话,一个SessionID就和这个会话关联。
实例:一个简单的购物程序
Products类。它表示当前可以获得的Item,在通常情况下从数据库中获得
Cart类,表示购物车,它使用HashMap保存用户添加的物品。
以上就是JavaBean组件
现在要结合JSP页面了。
先看看checklogin.jsp
<jsp:useBean id="cart" class="com.Cart" scope="session">
<jsp:setProperty name="cart" property="*"/>
</jsp:useBean>
<% session.setMaxInactiveInterval(900); //设置Session超时为30分钟%>
<%
String nextpage;
if(cart.getUserId().equals("jack"))nextpage="shopping.jsp";
else nextpage="login.jsp"
%>
<jsp:forward page="<%=nextpage%>"/>
接下来就是登陆成功进入的shopping.jsp代码
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="com.*"%>
<jsp:useBean id="products" clss="com.Products" scope="session"/>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="test/html;charset=utf8">
</head>
<Link href="x.css" type=text/css rel=stylesheet>
<body>
<%@ include file="header.jsp"%>
<center>
<form action="cart.jsp" method=get>
<table width="75%"border="1" bordercolor="#006633">
<tr bgcolor="#999999">
<td>id</td>
<td>名称</td>
<td>价格</td>
<td>是否有库存</td>
<td>出版社</td>
</tr>
<%
java.util.Vector=products.getItems();
java.util.Enumeration e=v.elements();
while(e.hasMoreElements())
{
Item item=(Item)e.nextElement();
%>
<tr>
<td><input type="checkbox" name="itemId"> value="<%=item.getItemId()%>"</td>
<td><%=items.getDescription()%></td>
<td><%=items.getPrice()%></td>
<td><%=items.getAvailable%></td>
<td><%=item.getProducer()%></td>
</tr>
<%}%>
<tr align=left>
<td colspan=5><input type=submit value="add" name="action"></td></tr>
<td colspan=5><a href="cart.jsp">购物车</a>[]<a href="logout.jsp">注销</a></td></tr>
</table>
</form>
</center>
<%@include file="tail.jsp"%>
</body>
</html>
上面的代码实现个Add功能。现在看看cart.jsp文件吧
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="com.*,java.util.*"%>
<jsp:useBean id="products" clss="com.Products" scope="session"/>
<jsp:useBean id="cart" clss="com.Cart" scope="session"/>
</jsp:useBean>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="test/html;charset=utf8">
</head>
<Link href="x.css" type=text/css rel=stylesheet>
<%
//action为执行操作,add表示添加此Item,remove表示删除此Item
String action=request.getParameter("action");
//获得所有添加、删除的Item的ItemId
String items[]=request.getParamterValues("itemId");
if(items!=null)
for(int i=0;i<items.length;i++){
if(action.equals("add"))
cart.addItem(items[i],1)
else if(action.equals("remove"))cart.removeItem(items[i])
}
%>
<body>
<%@include file="header.jsp"%>
<center>
<form action="cart.jsp" method=get>
<table width="75%" border="1" bordercolor="#006633">
<tr bgcolor="#999999">
<td>id</td>
<td>名称</td>
<td>数量</td>
</tr>
<%
java.util.HsahMap cart_item=cart.getItems();
Iterator it=cart_item.keySet().iterator();
while(it.hasNext()){
String itemId=(String)it.next();
Item item=products.getItem(itemId);
%>
<tr>
<td><input type="checkbox" name="itemId" value="<%=item.getItemId()%>"></td>
<td><%=item.getDescription()%></td>
<td><%=car_item.get(itemId)%></td>
</tr>
<%}%>
<tr align=left>
<td colspan=5><input type=submit value="remove" name="action"></td>
</tr>
<tr align=left>
<td colspan=5><a href="shopping.jsp">购物</a>[]<a href="logout.jsp">注销</a></td>
</tr>
</table>
</center>
<%@ include file="tail.jsp"%>
</body>
</html>
最后看下注销logout.jsp的相关源码
<jsp:useBean id="cart" class="com.Cart" scope="session"/>
<%
cart.clear();
session.invalidate();
response.sendRedirect("login.jsp");
%>
我们知道,HTTP是一种无状态的协议,也就是说,客户端在浏览服务器上的不同的页面时,每次请求获得响应完成后,服务器和客户端的Socket连接会关闭。但是在不同页面之间,我们往往需要交换信息。交换信息的方式如下:
1.HTTP信息
它将需要交换的信息保存在HTTP头部。随着代理服务器的出现和保密性的问题,这种技术就过时了。
2.隐藏字段
通过HTML的HIDDEN标记来传递信息:
引用
<input type="hidden" name="somename"value="somevalue">
这种方式存在保密性问题,我们可以通过浏览器菜单中的【view】查看—>【Source】命令来查看浏览器中的源文件
3.URL重写
把身份认证的信息加到页面链接的尾部,如:
引用
<a href="/user.jsp">Next</a>
改为
<a href="user.jsp?name=hellking&item=item&quantify=3">Next</a>
其实这样方式也存在安全的问题,同时,这个链接的长度受URL长度的限制(一般浏览器URL长度最大为2KB)
4.Cookie
浏览器把一些小的片断信息保存在客户端,在以后的使用过程中,服务器端可以使用客户端的Cookie。Cookie虽然是一个有效的解决方式,但同样存在一些问题:客户端可以选择不接受Cookie,如果这样,有些程序很可能就不能正常运行。
5.Session
Session就是会话。简单地讲,会话可以在单一的用户和服务器之间定义一些列的交互,这些交互可以保持一段时间。一旦服务器上建立一个会话,一个SessionID就和这个会话关联。
实例:一个简单的购物程序
//Item 类 public class Item{ //属性 private String itemId;//目录中Items的Id private double price;// Item的价格 private String description;//Items的描述 private boolean available;//是否有Item private String producter;//Items的生产商 //构造方法 public Item(String itemId,double price,String description, boolean available,String producter){ this.itemId=itemId; this.price=price; this.description=description; this.available; this.producter=producter; } //属性getter和setter方法 public String getItemId(){ return itemId; } public void setItemId(String itemId){ this.itemId=itemId; } public double getPrice(){ return price; } publi void setPrice(double price){ this.price=price; } public String getDescription(){ return description; } public void setDescription(String description){ this.description=description; } public boolean getAvailable( return available; ) public void setAvailable(boolean available){ this.available=available; } public String getProducter(){ return producter; } public void setProducter(String producter){ this.producter=producter; } }
Products类。它表示当前可以获得的Item,在通常情况下从数据库中获得
import java.util.Vector; public class Products{ private Vector items=new Vector();//表示Item的目录 synchronized public Vector getItems(){ return items; } synchronized public Item getItem(String itemId){ int index=Integer.parseInt(itemId); return (Item)items.elementAt(index); } synchronized public void setItem(Item item,String itemId){ int index=Integer.parseInt(itemId); items.set(index,item); } public Products(){ //添加一些资料 items.addElement(new Item("0","JSP技术",(double)45.90,true,"电子工业出版社")) ......................... } //Item数量 public int getSize(){ return items.size(); } }
Cart类,表示购物车,它使用HashMap保存用户添加的物品。
public class Cart{ private String userId;//用户ID private HashMap items;// 购物车中的物品 public Cart(){ items=new HashMap(); } //新增一个Item public void addItem(String itemId,int quantity){ items.put(itemId,Integer(quantity)); } //删除一种Item public void removeItem(String itemId){ items.remove(itemId); } //更新某个Item public void updateItem(String itemId,int quantity){ if(items.containsKey(itemId)) items.remove(itemId); items.put(itemId,new Integer(quantity)); } //返回购物车中的所有Item public HashMap getItems(){ return this.items } public void setUserId(String userId){ this.userId=userId; } public String getUserId(){ return this.userId; } //清空购物车 public void clear(){ items.clear(); } }
以上就是JavaBean组件
现在要结合JSP页面了。
先看看checklogin.jsp
引用
<jsp:useBean id="cart" class="com.Cart" scope="session">
<jsp:setProperty name="cart" property="*"/>
</jsp:useBean>
<% session.setMaxInactiveInterval(900); //设置Session超时为30分钟%>
<%
String nextpage;
if(cart.getUserId().equals("jack"))nextpage="shopping.jsp";
else nextpage="login.jsp"
%>
<jsp:forward page="<%=nextpage%>"/>
接下来就是登陆成功进入的shopping.jsp代码
引用
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="com.*"%>
<jsp:useBean id="products" clss="com.Products" scope="session"/>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="test/html;charset=utf8">
</head>
<Link href="x.css" type=text/css rel=stylesheet>
<body>
<%@ include file="header.jsp"%>
<center>
<form action="cart.jsp" method=get>
<table width="75%"border="1" bordercolor="#006633">
<tr bgcolor="#999999">
<td>id</td>
<td>名称</td>
<td>价格</td>
<td>是否有库存</td>
<td>出版社</td>
</tr>
<%
java.util.Vector=products.getItems();
java.util.Enumeration e=v.elements();
while(e.hasMoreElements())
{
Item item=(Item)e.nextElement();
%>
<tr>
<td><input type="checkbox" name="itemId"> value="<%=item.getItemId()%>"</td>
<td><%=items.getDescription()%></td>
<td><%=items.getPrice()%></td>
<td><%=items.getAvailable%></td>
<td><%=item.getProducer()%></td>
</tr>
<%}%>
<tr align=left>
<td colspan=5><input type=submit value="add" name="action"></td></tr>
<td colspan=5><a href="cart.jsp">购物车</a>[]<a href="logout.jsp">注销</a></td></tr>
</table>
</form>
</center>
<%@include file="tail.jsp"%>
</body>
</html>
上面的代码实现个Add功能。现在看看cart.jsp文件吧
引用
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="com.*,java.util.*"%>
<jsp:useBean id="products" clss="com.Products" scope="session"/>
<jsp:useBean id="cart" clss="com.Cart" scope="session"/>
</jsp:useBean>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="test/html;charset=utf8">
</head>
<Link href="x.css" type=text/css rel=stylesheet>
<%
//action为执行操作,add表示添加此Item,remove表示删除此Item
String action=request.getParameter("action");
//获得所有添加、删除的Item的ItemId
String items[]=request.getParamterValues("itemId");
if(items!=null)
for(int i=0;i<items.length;i++){
if(action.equals("add"))
cart.addItem(items[i],1)
else if(action.equals("remove"))cart.removeItem(items[i])
}
%>
<body>
<%@include file="header.jsp"%>
<center>
<form action="cart.jsp" method=get>
<table width="75%" border="1" bordercolor="#006633">
<tr bgcolor="#999999">
<td>id</td>
<td>名称</td>
<td>数量</td>
</tr>
<%
java.util.HsahMap cart_item=cart.getItems();
Iterator it=cart_item.keySet().iterator();
while(it.hasNext()){
String itemId=(String)it.next();
Item item=products.getItem(itemId);
%>
<tr>
<td><input type="checkbox" name="itemId" value="<%=item.getItemId()%>"></td>
<td><%=item.getDescription()%></td>
<td><%=car_item.get(itemId)%></td>
</tr>
<%}%>
<tr align=left>
<td colspan=5><input type=submit value="remove" name="action"></td>
</tr>
<tr align=left>
<td colspan=5><a href="shopping.jsp">购物</a>[]<a href="logout.jsp">注销</a></td>
</tr>
</table>
</center>
<%@ include file="tail.jsp"%>
</body>
</html>
最后看下注销logout.jsp的相关源码
引用
<jsp:useBean id="cart" class="com.Cart" scope="session"/>
<%
cart.clear();
session.invalidate();
response.sendRedirect("login.jsp");
%>
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2019最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 964在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 848最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 92771.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 830FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 728核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 968HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 740基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1204基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 995在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2154在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2183JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2197在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 34691.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1385java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4476在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3910在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18893前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3729简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8589Java EE 5平台引入了Java ...
相关推荐
其关键是启用会话处理,那么 Servlet 就可以知道哪个用户在干什么。 本教程显示了一个 URL 书签系统,在这个系统中, 多个用户访问一个系统以添加、除去和更新 HTML 书签列表。 Servlet 使用 JSP 技术来处理用户...
JavaWeb03-会话跟踪cookie与session.rar JavaWeb04-内置对象与include指令.rar JavaWeb05-购物车.rar JavaWeb06-Servlet.rar JavaWeb07-javaWeb模式.rar JavaWeb08-DBUtil.rar JavaWeb09-EL与JSTL.rar JavaWeb10-...
9.8 拥有购物车和会话跟踪功能的在线商店 第ii部分 jsp技术 第10章 jsp技术概述 10.1 对jsp的需求 10.2 jsp的好处 10.3 jsp相对于竞争技术的优势 10.4 对jsp的误解 10.5 jsp页面的安装 10.6 基本语法...
第二篇为“Servlet核心技术”,主要讲述Servlet的技术特点、请求和响应、数据共享、会话跟踪等技术;第三篇为“JSP技术基础”,主要讲述JSP的基本语法和内建对象及JSP和Servlet的集成,JavaBean和表达式语言;第四篇...
8.2.5 会话跟踪 188 8.2.6 Servlet异常相关 192 8.3 Servlet配置选项 192 8.3.1 元素及其子元素 192 8.3.2 元素及其子元素 194 8.4 用Servlet生成动态图片 195 8.5 扩展练习 198 第9章 Web基础知识 201 9.1 Web发展...
实验五 会话跟踪处理 18 1.实验目的: 18 2.实验内容: 18 3.作业: 20 实验六 基本 Servlet 开发 20 1.实验目的: 20 2.实验内容 : 20 3.作业: 22 实验七 JavaBean 使用 23 1.实验目的: 23 2.实验内容 : 23 ...
8、四种会话跟踪技术(重要考点)★★★★★ 答:会话作用域ServletsJSP 页面描述 page是代表与一个页面相关的对象和属性。 一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 ...
为此,web服务器必须采用一种机制来唯一地标识一个用户,同时记录该用户的状态,这就要用到会话跟踪技术。 Java Web使用Session来跟踪会话和管理会话内的状态。 Session对象是一个jsp内置对象,它在第一个jsp页面...
9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 ...
9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 ...
9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 ...
9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 ...
1 Oracle:索引 5分 ...21 Servlet:会话和会话跟踪 5分 22 Servlet:jsp标准动作 4分 23 Servlet:jsp:setproperty 6分 24 Servlet:servlet的配置 6分 25 Servlet:过滤器 9分 26 Servlet:simpletag 6分
2.四种会话跟踪技术. 会话作用域ServletsJSP 页面描述 page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 ...
57 4.3.7 Servlet协作 57 4.3.8 Filter 58 4.4 使用Servlet处理客户端请求 58 4.5 会话跟踪 61 4.5.1 使用Cookie进行会话跟踪 61 4.5.2 使用URL重写进行会话跟踪 62 4.5.3 使用隐藏表单域进行会话跟踪 63 4.6 小结 ...
会话跟踪 170 结束servlet 171 跟踪服务请求 171 通知方法Shut Down 172 创建长时间运行的方法 173 第11章 JSP技术 175 什么是JSP页面 175 JSP页面的例子 176 JSP页面的生命周期 179 转换与编译 179 异常 179 初始化...
6.7会话跟踪 53 6.8 安全性 54 第七章 WebSphere应用编程 58 7.1 数据库应用编程 59 7.2 会话编程 71 7.3 PageListSevlet技术 73 参考文献 75 附录Ⅰ IBM WebSphere Studio实验以及应用开发实验的设置指导 76 特别...
会话跟踪技术进阶 7. 会话跟踪技术 8 9 9.EL表达式 10 10.JSTL标签库 Java-Web程序设计(PPT)全文共389页,当前为第2页。 本章内容 Web 应用程序简介 HTTP 协议 Tomcat 简介 使用Eclipse开发Java Web 应用程序 静态...
随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。 JavaServletAPI提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。 建立Session 因为HTTP是一个请求-响应协议,一...
所有的Apache Tomcat 3.X版本跟踪其遗产回到原来的Servlet和JSP实现,Sun公司捐赠给Apache软件基金会。该3.X版本都实现了支持Servlet 2.2和JSP 1.1规范。 的Apache Tomcat 3.3.X。版本3.3.2是当前的生产质量版本。...