原创精品 Servlet 课堂笔记 三.docx
《原创精品 Servlet 课堂笔记 三.docx》由会员分享,可在线阅读,更多相关《原创精品 Servlet 课堂笔记 三.docx(13页珍藏版)》请在冰豆网上搜索。
![原创精品 Servlet 课堂笔记 三.docx](https://file1.bdocx.com/fileroot1/2022-11/15/b006bbfe-ad00-4b0c-adb4-05bf7bb20c90/b006bbfe-ad00-4b0c-adb4-05bf7bb20c901.gif)
原创精品Servlet课堂笔记三
1.同一用户的不同页面共享数据4method[important]
(不同页面即不同servlet)
A.cookie技术
B.sendRedirect()转向
C.隐藏表单(form)
D.session技术
2.cookie
服务器在客户端保存用户的信息,比如登录名,密码
3.cookie用处
a.保存用户名,密码,在一定时间不用重新登录
b.记录用户访问网站的喜好(eg,无背景音乐,网页的背景色是什么)
c.网站的个性化,比如定制网站的服务,内容。
4.sendRedirect()方法
通过该方法将信息传送给下一个页面,eg:
sendRedirect(“welcome?
username=ltl”);的形式
优点:
传送信息的速度比较快
缺点:
它只能传送字符串,而不能传送一个对象
5.sendRedirect(“welcome?
username=ltl”);的形式:
注意点:
a.welcome代表你要跳转的那个servlet的url
b.servleturl名和变量之间有?
号
c.如要传递两个以上的值,它们间要用&号分开
eg.sendRedirect(“welcome?
username=ltl&password=123”);
d.如果传递的是中文,则会得到乱码,需处理一下
19.通过sendRedirect()可以将一个页面信息传递给另外的页面
eg.在welcome页面中显示登录用户的姓名可以使用该方法
20.
//登录界面Login.java
packagecom.ltl;
importjavax.servlet.http.*;
importjava.io.*;
publicclassLoginextendsHttpServlet{
//处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)
{
//业务逻辑
try
{
//中文乱码处理
res.setContentType("text/html;charset=gbk");
PrintWriterpw=res.getWriter();
//返回登录界面
pw.println("");
pw.println("
");
pw.println("
登录界面
");
pw.println("");//表单
pw.println("用户名:
");
pw.println("密码:
");
pw.println("
");
pw.println("");
pw.println("");
pw.println("");
}
catch(Exceptione)
{
e.printStackTrace();
}
}
//处理post请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)
{
this.doGet(req,res);
}
}
//用户验证servletLoginprocess.java
packagecom.ltl;
importjavax.servlet.http.*;
importjava.io.*;
publicclassLoginprocessextendsHttpServlet
{
//处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)
{
//业务逻辑
try
{
//接收用户名和密码
Stringu=req.getParameter("username");
Stringp=req.getParameter("password");
//验证
if(u.equals("sq")&&p.equals("123"))
{
//合法
//跳转到welcome
res.sendRedirect("welcome?
username=”+u+”&password=”+p");
}
else
{
//不合法
//跳转
res.sendRedirect("login");//写你要到的servlet的那个url
}
}
catch(Exceptione)
{
e.printStackTrace();
}
}
//处理post请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)
{
this.doGet(req,res);
}
}
//欢迎界面Welcome.java
packagecom.ltl;
importjavax.servlet.http.*;
importjava.io.*;
publicclassWelcomeextendsHttpServlet
{
//处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)
{
//得到从loginprocess传递的用户名
Stringu=req.getParameter(“username”);
//得到从loginprocess传递的密码
Stringp=req.getParameter(“password”);
//业务逻辑
try
{
PrintWriterpw=res.getWriter();
pw.println("welcomehello"u+”password=”+p);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
//处理post请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)
{
this.doGet(req,res);
}
}
21.隐藏表单
这是最常见的一种方式,也是最简单的,但有时该技巧非常管用,形如:
22.通过隐藏表单也可以将一个页面信息传递给另外的页面
eg.在welcome页面中显示登录用户的姓名也可以使用该方法
23.什么是Session
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。
这个空间就是session空间,该空间中的数据默认存在时间为30min,你也可以修改。
A:
服务器分配给A客户端的session空间
B:
服务器分配给B客户端的session空间
C:
服务器分配给C客户端的session空间
24.Session可以用来做什么?
a.网上商城的购物车
b.保存登录用户的信息
c.将某些数据放入到Session中,供同一用户的各个页面使用
d.防止用户非法登录到某个页面
……
25.如何理解Session
可将session看作一张表,这张表有两列。
而表有多少行,理论上没有限制,每一行就是session的一个属性
每个属性包含有两个部分,一个是该属性的名字(String),另一个是它的值(Object)
26.如何使用Session
a.得到session
HttpSessionhs=request.getSession(true);
b.向session添加属性
hs.setAttribute(Stringname,Objectval);
a.从session得到某个属性
Stringname=hs.getAttribute(Stringname);
b.从session删除某个属性
hs.removeAttribute(Stringname);
27.Session的注意事项
A.session中属性存在的默认时间是30min,你可修改它存在时间:
a.修改web.xml
b.在程序中去修改
B.30min指的是用户间隔时间(发呆时间),而不是累计时间
C.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的sessionid,并以此来区分不同的浏览器(即客户端)
D.因为session的各个属性要占用服务器的内存,因此软件公司都在迫不得已的情况下才使用
28.Session应用实例
session是非常重要的,也是非常有用的技术,在网站开发中可以完成的功能很多,比如:
a.网上商城中的购物车
b.保存登录用户的信息
c.将某个数据放入到Session中,供同一用户的各个页面使用
d.防止用户非法登录某个页面
现实现b和c的功能
29.保存登录用户的信息
//登录界面Login.java
packagecom.ltl;
importjavax.servlet.http.*;
importjava.io.*;
publicclassLoginextendsHttpServlet{
//处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向客户端(浏览器)返回信息
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)
{
//业务逻辑
try
{
//中文乱码处理
res.setContentType("text/html;charset=gbk");
PrintWriterpw=res.getWriter();
//返回登录界面
pw.println("");