社区
Web 开发
帖子详情
谁有关于Session 和 Cookie的详细资料
mshaolin
2003-04-02 01:15:42
谢谢~
...全文
52
2
打赏
收藏
谁有关于Session 和 Cookie的详细资料
谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
isub
2003-04-02
打赏
举报
回复
2,session管理
Session在Servlet中是很有用的,它比cookie安全可靠灵活,但是管理起来有点麻烦,用得不好会造成服务器的开销很大,浪费资源。下面是一个基于Session管理一个对象的简单例子。
一个简单的bean对象TestObject
package test;
public class TestObject extends Object {
int id = 0; public String cur="";
}
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class TestMan extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int f = 1;
if(request.getParameter("f")!=null)
f =
Integer.parseInt(request.getParameter("f"));
switch(f){
case 1: this.getResult(request,response);
break;
case 2:
this.setSession(request,response);
break;
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
public void getResult(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TestObject testObject = null;
testObject = getStatus(request,response);
String html = testObject.id; doWrite( response,html);
}
public void setSession(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
TestObject testObject = null;
testObject = getStatus(request,response);
String tmp = null;
tmp = request.getParameter("id");
if(tmp != null) testObject.id = tmp;
session.putValue("testObject ",article);
getResult(request,response);
}
private TestObject getStatus(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
TestObject testObject = null;
if(session!=null){
if(session.getValue("testObject ")!=null){
testObject = (TestObject)session.getValue("testObject ");
}
else{
testObject = new TestObject ();
}
}
else{
testObject = new TestObject ();
}
return testObject;
}
private void doWrite(HttpServletResponse response,String html) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(html);
out.close();
}
/////////////////////////////////////////////////////////
}
若能轻松搞定上面的例子,相信读者对SERVLET已有了较为深刻的理解。
下面再介绍一个上传文件例子,其中汲及到了下载的免费JavaBean (如有感兴趣的朋友,可来函索要免费JavaBean源代码,Email:js79@yesky.com)
上传基本原理:由页面发出一个http请求,服务端得到请求后,解析多媒体协议,读出文件内容,写文件内容到服务器,所有的这些功能都封装到JavaBean中。
上传文件的必需条件:Browser端< form>表单的ENCTYPE属性值必须为 multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,< input>的type属性必须是file。
package upload;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class UpLoadServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("< div align=´center´ valign=´top´>"
+"< span class=´nava´>请你选择上传的文件(请注意文件大小只能在20K之内)< /span>< BR>"
+"< form ENCTYPE=´multipart/form-data´ method=post action=´´>"
+"< input type=´file´ name=´file´>"
+"< input type=´submit´ value=´发送´>"
+"< /form>"
+"< /div>");
out.println("< /body>< /html>");
out.close();
}
////////
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
int tmpID = 1; try {
MultipartRequest multi = new MultipartRequest(request,"/home/js79/html/", 5 * 1024 * 1024);
}
catch(Exception e){
tmpID = -1; System.out.println(e);
}
if(tmpID == 1){
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("上传成功!< /body>< /html>");
}
else{
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("上传不成功!< /body>< /html>");
}
out.close();
}
}
isub
2003-04-02
打赏
举报
回复
几个实用的Servlet应用例子-入门、cookie、session及上传文件
--------------------------------------------------------------------------------
Servlet可以被认为是服务端的applet,它被WEB服务器加载和执行,前端可以显示页面和获得页面数据,后台可以操纵数据库,能完成JavaBean的很多功能。在这里我较为详细的说说Servlet在Cookie,Session和上传文件上的应用,在说明时我给出一些能编绎运行的小例子,最后给出一个文件上传例子以加深印象。
我们先来看看SERVLET程序的基本构架:
式1:
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int f =1; switch(f){
case 1:firstMothed(request,respponse);break;
}
}
public void firstMothed(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new
OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
}
式2:
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
}
式1适合于作总控模块,此SERVLET作中间调度,根据不同的f值调用不同的SERVLET或方法。
式2适合于对html的get和post有不同要求的情况。
但这并不是绝对的,式2就完全可以代替式1,只要在doGet()方法中写上doPost就与式1完全一样。
在init方法中执行的语句,只要这个servlet被启动了就一直有效,比如,我们在init()中new了一个对象,那么这个对象的内存空间就永远存在,除非显式地把这个对象赋为null,或重启服务。
HttpServletRequest和HttpServletResponse两个对象实现http请求,它们有很多有用的方法,在下面的cookie和session管理中会细加描述。
1, cookie管理 cookie用于在客户端保存个人所特有的信息,它采取在客户机写临时文件的机制。
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//写cookie
String CookieName ="js79"; //若是汉字则需编码
String CookieValue = "yesky";//若是汉字则需编码
Cookie cookie = new Cookie(CookieName,CookieValue);
cookie.setMaxAge(age); // age = Integer.MAX_VALUE 永不过期
cookie.setPath("/");
//读cookie
String value = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i=0; i< cookies.length; i++) {
if (cookies[i].getName().equals(CookieName))
value = cookies[i].getValue();
break;
}
}
}
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>test< /title>< /head>");
out.println("cookie键:"+CookieName+"< br>");
out.println("cookie值: "+value);
out.println("< /body>< /html>");
out.close();
}
}
JSP中
Session
及
Cookie
实操入门
JSP中
Session
及
Cookie
的使用,实操极简入门。内容包括:
session
实现在线考试系统之一、
session
实现在线考试系统之二、
session
实现在线考试系统之三
session
实现在线考试系统之四、
cookie
的用法举例-1、
cookie
的用法举例-2、
cookie
的用法举例-3。
session
和
cookie
的区别
一、写在前面 今天在准备的面试的时候,看到一个题目,谈一谈
session
和
cookie
的区别。我不会,下面进行总结一下。 二、区别 2.1、保存的位置不同
cookie
保存在浏览器端,
session
保存在服务端。 2.2、使用方式不同
cookie
如果在浏览器端对
cookie
进行设置对应的时间,则
cookie
保存在本地硬盘中,此时如果没有过期,则就可以使用,如果过期则就删除。如果没有对
cookie
设置时间,则默认关闭浏览器,则
cookie
就会删除。
session
:我们在请求中,如果发送的请求中存在ses
什么是
session
?什么是
cookie
?
session
和
cookie
有什么区别?
这里是修真院前端小课堂,本篇分析的主题是 【什么是
session
?什么是
cookie
?
session
和
cookie
有什么区别?】 每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇分享的是: 【什么是
session
?什么是
cookie
?
session
和
cookie
有什么区别?】 什么...
Cookie
和
Session
的区别(面试必备)
一、共同之处:
cookie
和
session
都是用来跟踪浏览器用户身份的会话方式。 二、区别:
cookie
数据保存在客户端,
session
数据保存在服务端。
session
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是
session
,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话
session
id,服务器根据当前
session
id判断相应的用户数据标志,...
Session
和
Cookie
的作用和区别
Session
的原理和用途
session
和
cookie
一样都是为了记录用户的信息,实现识别用户,自动登录,显示购物车功能。 不同之处在于
session
的主体在服务器上,体量大,
cookie
主体在客户端上,体量小。
session
会在响应报文中发给用户一个
session
id,用来唯一标识此用户,用户可以把
session
id发给服务器用来表明身份。
Session
对象在客户端第一次请求服务器的时候创建。Tomcat中
session
默认失效时间是20min。
Session
比
cookie
方便,但是对服务器压力大
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章