重温cookie,session的获取,写入与读写

来源:互联网 发布:sql语句起别名 编辑:程序博客网 时间:2024/05/17 02:48

这个知识点其实不应该不懂,但却偏偏忘记了!相信很多人会跟我一样!

cookie的写入:
String cookieName="休息休息"; 
Cookie cookie=new Cookie(cookieName, "value"); 
cookie.setMaxAge(10); 
response.addCookie(cookie); 
cookie读取:
Cookie cookies[]=request.getCookies(); 

for(Cookie cookie:cookies) 

  out.println(cookie.getName());
out.println(cookie.getValue());
}

 

 


            在JSP中的session

Jsp使用httpsession的对象来跟踪用户的操作状态。Httpsession是一个建立在cookies和URL-rewriting上的高质量的界面。Session的信息保存在服务器端,session的id保存在客户机的cookies中,实际上,许多服务器上,如果浏览器的支持的话他们聚使用cookie,但是如果不支持或者废除了的话就自动转化为url-rewriting,session 自动为每个流程提供了方便存储信息的方法。

Session一般在服务器上设置了一个30分钟的国旗时间,当客户停止活动后自动失效。Session中保存和检索的信息不能使基本的数据类型 如 int,double等,而必须是Java的相应的对象,如Double,Integer。

注意如果JSP没有显示的使用 <% @page session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);

这也是JSP中隐含的 session对象的来历。由于session会耗费内存资源,因此,如果不盘算使用session,应当在所有的JSP中关闭它。

 

Httpsession具有如下api

 

getid 此方法返回唯一的标识,这些标识为每个session二产生。只有一个单一的值与一个Session联合时,或当日志信息与先前的session有关时,它被当做键名用。

GetCreationTime 返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可以将此值传给date constructor 或者gregorian calendar得方法set timelnmillis。

GetLastAccessesTime 返回session最后被客户发送的时间。最小单位为千分之一秒。

GetMaxinActiveInterval 返回总时间(秒)负值表示session永远不会超时。

getAttribute 取一个session相联系的信息。

Integer item =(Integer) session.getAttrobute(“item”);

setAttribute 提供一个关键词和一个值。会替换掉任何以前的值。

Session.setAttribute(“itemvalue”,itemname);

 

 

在应用中setAttribute和getAttribute用的最多 例子如下:

 

1、test1.jsp

<html>

<head>

<tittle>Document</tittle>

</head>

<body bgcolor=”#ffffff”>

Session.setAttribute(“str”,new String(“this a test”));

</body>

</html>

 

 

2、test2.jsp

<html>
<head>

<title>new Document </title>

</head>

<body bgcolor=”#ffffff”>
<%

String is_str=null;

is=str=(String)session.getAtribute(“str”);

Out.println(“从session 里取出的值为:”+is_str);

</body>

</html>

 

 

 

                                                                              在struts中的session

要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前 Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();

  如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

publicclass NonIoCServlet extends ActionSupport {
    private String message;
   
    public String getMessage() {
        return message;       
    }
   
    @Override
    public String execute() {   
        ActionContext.getContext().getSession().put("msg", "Hello World from Session!");
       
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();       
        HttpSession session = request.getSession();
       
        StringBuffer sb =new StringBuffer("Message from request: ");
        sb.append(request.getParameter("msg"));
        sb.append("<br>Response Buffer Size: ");
        sb.append(response.getBufferSize());
        sb.append("<br>Session ID: ");
        sb.append(session.getId());
       
        message = sb.toString();
        return SUCCESS;
    }
}
 

 

 

 

原创粉丝点击