转发和重定向
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.格式
这是一个段落
换行
在网页中加一条横线
:这是定义了一个???.css格式文件
===============================================
1、转发和重定向的区别:
1)地址:
转发的地址必须是同一个应用内部的各个组建。
重定向的地址没有限制。
2)能否共享request
转发可以
重定向不行
3)浏览器地址栏的地址是否变化
转发不变
重定向不会
4)事件是否处理完毕
转发是一件事未做完。
重定向是一件事已经做完。
2、状态管理:
2)怎样进行状态管理:
第一种方式:在客户端管理用户的状态
(cookie)
第二种方式:在服务器端管理用户的状态
(session)
3)cookie:
a,什么是cookie?
浏览器在访问服务器时,服务器将一些数据以set—cookie消息头的形式发送给浏览器,浏览器会将这些数据(内存或者硬盘)保存起来,当浏览器再次访问服务器时,会将保存的数据会以cookie的消息头的形式发送给浏览器。通过这种方式可以管理用户的状态。
b,怎样去创建cookie?
Cookie cookie=new Cookie(String name, String value);cookie中保存键值对
response.addCookie(cookie);服务器从cookie中读取数据
c,查询cookie
//如果没有cookie,则返回null
Cookie[] cookies=request.getCookies();
String name=cookie.getName();
String value=cookie.getValue();---------遍历cookie
d,cookie保存时的编码问题:cookie的值只能是ascii字符,如果是中文,需要将中文转换出呢个ascii字符形式,可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换
e,cookie的保存时间:
cookie.setMaxAge(int seconds);
seconds>0:浏览器会将cookie以文件的方式保存在硬盘上,在超过指定的时间以后,会删除该文件。
seconds<0:默认值,浏览器会将cookie保存在内存里。只有当浏览器关闭之后才会删除。
seconds=0:删除。
f,删除cookie
比如要删除一个name为“username”的cookie。
Cookie c=new Cookie("username","");
c.setMaxAge(0);
response.addCookie(c);
g,cookie的路径问题
浏览器在向服务器上的某个地址发送请求时,会先比叫cookie的路径和要访问的路径是否匹配,只有匹配的cookie才会发送
cookie的路径可以通过:cookie.setPath(String path)方法来设置,如果没有设置,则有一个缺省的路径,缺省的路径是生成该cookie的组建的路径。比如:/appname/addCookie保存了一个cookie,则该cookie的路径是/appname/addCookie。
规则:cookie的路径必须是要访问的路径的上层目录,或者是于要访问的路径相等,浏览器才会将cookie发送给服务器,否则浏览器不会发送。
一般可以设置setPath("/appname"); 表示访问该目录下的所有地址,均会发送cookie.
h,cookie的限制:
cookie可以被用户禁止。
cookie的大小有限制(4k左右)。
cookie的数量有限制(浏览器大约能保存300个)。
cookie的名字和值只能是字符串,要考虑编码问题。
cookie不安全。
4)session
a,什么是session
浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id,一般称为sessionId)服务器在缺省情况下会将sessionId以cookie机制发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送给服务器。服务器依据sessionId就可以找到对应session对象。通过这种方式,就可以管理用户的状态。
b,如何获得session对象:
方式一:HttpSession session=request.getSession(boolean flag);
当flag=true:服务器会先查看请求中是否包含sessionId,如果没有,则创建一个session对象,如果找到,则返回,如果找不到则创建一个新的session对象。
当flag=false:服务器会先查看是否包含sessionId,如果没有则返回null,如果有,则依据sessionId去查找对应的session对象,如果找到则返回,如果找不到,则返回
null。
方式二:HttpSession session=request.getSession();等价于HttpSession session=request.getSession(true);
c,接口HttpSession的常用方法:
String session.getId();-----获得sessionId;
session.setAttribute(String name,Obiect obj); obj最好实现Serializable 接口(序列化接口)。
Object session.getAttribute(String name); 如果name对应的值不存在,返回null。
session.removeAttribute(String name);
d,session超时:服务器会将超过指定时间的session对象删除(在指定时间内,该session对象没有使用)。
方式一:session.setMaxInactiveInterval(int senconds);
方式二:服务器有一个缺省的超时限制,可以通过修改相应的配置文件来重新设置。比如可以修改tomcat的server.xml,另外,也可以修概某个应用的web.xml e,删除session
session.invalidate();
案例:
session验证
原理:1,在登录成功之后,在session上面绑定一些数据,比如:session.setAttribute("user",user);
2,在访问需要保护的页面或者资源时,执行Object obj=session.getAttribute("user");
如果obj为null,说明没有登录,一般重定向到登录页面,否则登录成功。
1、验证码
1,create table t_computer(
id bigint primary key auto_increment,
model varchar(20),
pic varchar(50),
proDesc text,
price double);
2,insert into t_computer(model,pic,proDesc,price) value('x200','x200.jpg','还算便宜',2000); insert into t_computer(model,pic,proDesc,price) value('x500','x500.jpg','性价比最好',3000); insert into t_computer(model,pic,proDesc,price) value('x600','x600.jpg','性能最好',8000);
3,Computer 实体类
4,ComputerDAO类