Cookie技术
n 1、Cookie技术:网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。
n 由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。
n 为你所专有,不能作为代码执行,也不会传送病毒,只能由提供它的服务器来读取。
作用
n 1、记录访问者的访问次数、访问时间、访问路径
n 2、实现自动登录
n 3、个性化服务
n 如:根据用户的爱好定制站点
n 4、发送广告
n 1)建立Cookie
n Cookie 对象名=new Cookie(“索引值”,”字符串信息内容”)
n 例:Cookie c = new Cookie("Name", name);
n 注:Cookie对象不能单独使用,必须和request对象或response对象结合使用才起作用。
n 2)将Cookie信息传送到客户端方法:
n response.addCookie(对象名);
n 3)取得客户端所有Cookie对象的数组
n request.getCookies()
n Cookie cookies[] = request.getCookies();
n //得到客户端所有的Cookie的数组
n if(cookies[i].getName().equals("Name"))
n //查找是否存在名称为Name的Cookie
n name = cookies[i].getValue();
n //取得Cookie值
n 4)取得Cookie的索引值和信息内容
n Cookie名称.getName()
n Cookie名称.getValue()
n 5)设置Cookie()有效期
n Cookie名称.setMaxAge(有效期)
代码解析:将信息写入Cookie中
Cookie c = new Cookie("Phone", phone);
c.setMaxAge(30);
// Cookie 的有效期为 30 秒
response.addCookie(c);
n 结果集类型( resultSetType)有3种:
¨ ResultSet.TYPE_FORWORD_ONLY:不可滚动,默认值。
¨ ResultSet.TYPE_SCROLL_INSENSITIVE
¨ ResultSet.TYPE_SCROLL_SENSITIVE
n 结果集的并发性(Concurrency)决定ResultSet对象是否可以修改数据库中的行。
¨ ResultSet.CONCUR_READ_ONLY,不能修改数据库,默认值。
¨ ResultSet.CONCUR_UPDATABLE,可以修改数据库
三层结构设计:分为用户界面层、业务处理层和数据库存储操作层。
将编译成功含有Bean的包或者Bean类(无包)放置在虚拟目录/WEB-INF/classes目录下
package db;
import java.sql.*;
public class condb{
String d="sun.jdbc.odbc.JdbcOdbcDriver";
String u="jdbc:odbc:shopcart";
public Statement stm=null;
public Connection con=null;
ResultSet rs=null;
public condb(){
try{
Class.forName(d);
con=DriverManager.getConnection(u,"sa","sa");
}catch(Exception e){System.out.println(e);}
}
public ResultSet exeQuery(String s){
try{
stm=con.createStatement();
rs=stm.executeQuery(s);
}catch(Exception e){System.out.println(e);}
return rs;
}
public static void main(String args[])throws Exception{
condb c=new condb();
ResultSet r=c.exeQuery("select * from product");
while(r.next()){
System.out.println(r.getString(2));
}
}
}
package product;
public class Product{
private String name;
private float price;
public Product(){name="JSP book";price=21.3f;}
public String getName(){return name;}
public void setName(String n){name=n;}
public float getPrice(){return price;}
public void setPrice(float p){price=p;}
public boolean isName(String n){
if (name.equals(n)) return true;
else return false;
}
public static void main(String args[]){
Product p=new Product();
System.out.println(p.getName());
System.out.println(p.getPrice());
}
}
<%@ page import="db.condb"%>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=GB2312"%>
<jsp:useBean id="c" class="condb" scope="page"/>
<html>
<body>
<%String sql="select * from product";
ResultSet r=c.exeQuery(sql);
while(r.next()){
out.print("<center>"+r.getString(2)+"<br></center>");
}
%>
</body>
Counter.java:
package pack;
public class Counter
{ long count=0;
public synchronized long getCount()
{ count++;
return count;
}
}
<%@ page import=“pack.Counter"%>
<HTML><BODY ><Font size=1>
<jsp:useBean id="people" class="Counter" scope="application" >
</jsp:useBean>
<% if(session.isNew())
{ %>
<P>您是第
<jsp:getProperty name= "people" property="count" />
位访问本站的人
<%
}
else
{ out.print("禁止通过刷新增加计数!");
}
u 实例2:简易购物车
u 实例:chap4-8.html 4-8.jsp Buy.java
u chap4-8.html
u <form action = "4-8.jsp" method="post">
u <select name="item">
u <option selected>衬衫</option>
u <option>休闲长裤</option>
u <option>旅游鞋</option>
u <option>羊毛外套</option>
u </select>
u <Input type="submit" name="submit" value="add">
u <Input type="submit" name="submit" value="remove">
u </form>
<%request.setCharacterEncoding("GBK");%>
<jsp:useBean id="cart" scope="session" class="ch4.Buy" />
<jsp:setProperty name="cart" property="item" value="<%=request.getParameter(/"item/")%>"/>
<jsp:setProperty name="cart" property="submit" value="<%=request.getParameter(/"submit/")%>"/>
<% cart.processRequest(); %>
<br> 您选择了如下商品:
<% String[] items = cart.getItems();
for (int i=0; i<items.length; i++) {
%> <li> <%= items[i] %>
<% } %>
<%@ include file ="chap4-8.html" %>
package ch4;
import java.util.Vector;
public class Buy {
Vector v = new Vector();
String submit = null;
String item = null;
private void addItem(String name) {
v.addElement(name);
}
private void removeItem(String name) {
v.removeElement(name);
}
public void setItem(String name) {
item = name;
}
public void setSubmit(String s) {
submit = s;
}
public String[] getItems() {
String[] s = new String[v.size()];
v.copyInto(s);
return s;
}
public void processRequest() {
if (submit.equals("add"))
addItem(item);
else if (submit.equals("remove"))
removeItem(item);
reset();
}
private void reset() {
submit = null;
item = null;
}
}