Cookie+Session+ServletContentext的区别和用法
//总结一下:Cookie和Session都是通过request得到,ServletContext是通过this得到。Cookie通过getValue取值,Session和ServletContext通过getAttribute取值。Cookie通过setMaxAge来清空,Session通过setMaxActiveInterval来清空。
Cookie的创建:Cookie通过new,add,setMaxAge的方式设定值,Session和ServletContext通过setAttribute的方式设定值。 //演示了一个Cookie的创建的案例 package Model;
import javax.servlet.*; import javax.servlet.http.*; import java.io.*;
public class CookieTest1 extends HttpServlet{ //处理doGet请求 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ try{ response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); PrintWriter pw=response.getWriter(); //当有用户访问该Servlet时,就将信息创建到该用户的Cookie中 //1.现在服务器端创建一个cookie Cookie myCookie =new Cookie("color1","red"); Cookie name=new Cookie("myname",u); Cookie pass=new Cookie("mypasswd",p); //2.设置改cookie存在的时间,如果你不设置存在时间,那么该cookie将不会保存 myCookie.setMaxAge(30); name.setMaxAge(14*24*3600); pass.setMaxAge(14*24*3600); //3.将该cookie写回到客户端 response.addCookie(myCookie); res.addCookie(name); res.addCookie(pass); pw.println("已经创建了cookie"); }catch(Exception e){ e.printStackTrace(); } } }
//如何读取cookie案例 package Model;
import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.*;
public class CookieTest2 extends HttpServlet{ //处理get请求 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ try{ response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); //从客户端得到所有的cookie信息 Cookie[] allCookie=request.getCookies(); int i=0; //如果allCookie不为空.. if(allCookie!=null){ //从中取出cookie for(i=0;i
//如何删除cookie案例 package Model;
import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.*;
public class CookieTest3 extends HttpServlet{ //处理get请求 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); //从客户端得到所有cookie信息 Cookie[] allCookies=request.getCookies(); int i=0; //如果allCookies不为空.. if(allCookies!=null){ //从中取出cookie for(i=0;i
Session: //session案例--如何得到session/和在session中添加属性 package Model;
import javax.servlet.*; import javax.servlet.http.*; import java.io.*;
public class SessionTest1 extends HttpServlet{ //处理get请求 //request:用于获得客户端(浏览器)信息 //response:用于向客户端(浏览器)返回信息 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ //处理中文乱码 response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); //得到和request相关联的session,如果没有就创建session HttpSession hs=request.getSession(true); //得到session的id,这是由容器分配的 String sessionId=hs.getId(); pw.println("sessionTest1的session id="+sessionId); //向session中添加一个属性(String类型的) hs.setAttribute("name", "李世荣"); //如果不指定时间,那么该session的有效期是30秒 hs.setMaxInactiveInterval(20); pw.println("在session中放入了一个属性 name=李世荣"); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ this.doGet(request, response); } }
package Model;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class SessionTest2 { //处理get请求 //request:用于获得客户端(浏览器)的信息 //response:用于向客户端(浏览器)返回信息 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); //得到和req相关联的session,如果没有就创建session HttpSession ht=request.getSession(true); //得到sessionId String sessionId=ht.getId(); pw.println("sessionTest2的session id="+sessionId); //得到session中的某个属性 String myName=(String)ht.getAttribute("name"); pw.println("name="+myName); } }
package Model;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class SessionTest3 extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter pw=response.getWriter(); //得到和request相关联的session,如果没有就创建session HttpSession ht=request.getSession(true); //向session中添加一个属性(String类型的) ht.setAttribute("you", "周星星"); ht.setAttribute("I", "lishirong"); pw.println("在没有删除you属性前you的值="+ht.getAttribute("you")+"
"); //从session中删除you属性 ht.removeAttribute("you"); ht.setMaxInactiveInterval(0); pw.println("删除you属性后you的值="+ht.getAttribute("you")+"
"); pw.println("删除you属性后he的值="+ht.getAttribute("he")+"
"); } }
ServletContext:
package Model;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class ServletContext extends HttpServlet{ public void init(){ //重写init函数 try{ //只会被调用一次 //创建一个FileReader FileReader fr=new FileReader("F:\\counter.txt"); BufferedReader br=new BufferedReader(fr); //读出一行数据 String numVal=br.readLine(); //一定要关闭文件流 br.close(); //将times放入到ServletContext this.getServletContext().setAttribute("visitTimes",numVal); System.out.println("init被调用!"); }catch(Exception e){ e.printStackTrace(); } } //重写destroy函数 public void destroy(){ try{ FileWriter fw=new FileWriter("f:\\counter.txt"); BufferedWriter bw=new BufferedWriter(fw); //在文件中写入数据 bw.write(this.getServletContext().getAttribute("visitTimes").toString()); //关闭文件流 bw.close(); System.out.println("destroy被调用"); }catch(Exception e){ e.printStackTrace(); } } //处理get请求 public void doGet(HttpServletRequest request,HttpServletResponse response){ try{ String u=request.getParameter("username"); String p=request.getParameter("password"); //将servletContext中的visitTime所对应的值++ String times=this.getServletContext().getAttribute("visitTimes").toString(); //对times++再重新放回servlet this.getServletContext().setAttribute("visitTimes", (Integer.parseInt(times)+1)+""); //跳转到wel response.sendRedirect("Main"); }catch(Exception e){ e.printStackTrace(); } } }
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
