博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Serlvet学习笔记之二—不同页面共享数据
阅读量:6703 次
发布时间:2019-06-25

本文共 3707 字,大约阅读时间需要 12 分钟。

一共有四种方法实现共享页面共享数据

1.cookie

2.sendRedirect

3.session

4.隐藏表单提交(form)

5.ServletContex

 

1.cookie:服务器在客户端保存用户信息,比如登录名,密码等,实现网页个性化。

2.sendRedirect:通过该方法将信息传送给下一个页面。

优点:传送的信息比较快

缺点:它只能传送字符串,不能传送对象。

形式:sendRedirect("welcome"?uanme=admin&pwd=123")

传递

res.sendRedirect("welcome?uName="+u+"&uPass="+p);    //传递给welcome页面

接收

String u=req.getParameter("uname");    //welcome界面接收

 

3.session

  用户访问网站时,服务器在服务器的内存为该浏览器分配一个空间,该空间是被这个浏览器独占的,tomcat中默认存在30min,session的时间可以在tomcat中的web.xml中修改,也可以在程序中修改。

  服务器会给浏览器分配一个唯一的session id借此区分不同的客户端。

     session占用服务器的内存,所以在迫不得已才使用。

功能:   1.网上商城的购物车

    2.保存登陆的用户信息

    3.将一些数据放在session中,提供给同一个用户的不同页面使用。

    4.防止用户非法登陆某个页面。

用法:

  HttpSession hs=req.getSession(true);              //得到session   hs.setAttribute("pass","ok");                    //向session添加属性   String name=hs.getAttribute(String name);        //得到session的某一个属性   hs.removeAttribute(arg0);                        //删除某一个属性

实现功能4

在logincl页面创建session

//将验证成功的信息写入session                    HttpSession hs=req.getSession(true);              //得到session                    hs.setAttribute("pass","ok");                    //向session添加属性                    hs.setMaxInactiveInterval(20);                     //修改session的存在时间,秒为单位                    res.sendRedirect("welcome?uName="+u+"&uPass="+p);

在welcome读取session

String u=req.getParameter("uName");               //得到sendRedirect传递过来的值            HttpSession hs=req.getSession(true);              //得到session            String val=(String)hs.getAttribute("pass");        //得到session的某一个属性            try {
            if(val==null){
                res.sendRedirect("login");             }

4..隐藏表单:这是最常见的一种方式,也是最简单的。

在login界面创建

 pw.println("
");

 5.ServletContext

保存在服务器端,共享给所有用户。

生命周期是从创建开始到服务器关闭。

如果想共享给所有用户,而又不希望保存在数据库中,数据量也不大,可以考虑使用ServletContex实现。

下面用一个网站计数器来做案列

package com.demo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.PrintWriter;import javax.servlet.http.*;public class ServletFileTest1 extends HttpServlet {    public void init(){        try {//创建一个FileReader              FileReader fr=new FileReader("D:\\myCount.txt");              BufferedReader br=new BufferedReader(fr);              String numVal=br.readLine();              br.close();                 this.getServletContext().setAttribute("vistTimes",numVal);        } catch (Exception e1) {            e1.printStackTrace();        }    }        public void destroy(){        try {//创建一个FileWriter            FileWriter fw=new FileWriter("D:\\myCount.txt");            BufferedWriter bw=new BufferedWriter(fw);            bw.write(this.getServletContext().getAttribute("vistTimes").toString());            bw.close();                    } catch (Exception e2) {            e2.printStackTrace();        }    }        public void doGet(HttpServletRequest req,HttpServletResponse res){        try {            System.out.println("doget...");            req.setCharacterEncoding("gb2312");            res.setContentType("text/html;charset=gb2312");           //在ServletContex中进行++操作            String times=this.getServletContext().getAttribute("vistTimes").toString();            this.getServletContext().setAttribute("vistTimes",(Integer.valueOf(times).intValue()+1)+"");            PrintWriter pw=res.getWriter();            pw.println("访问次数:"+this.getServletContext().getAttribute("vistTimes").toString());         pw.println("您的IP地址是: "+req.getRemoteAddr()+"
");             pw.println("您的机器名是: "+req.getRemoteHost()+"
"); } catch (Exception e3) { e3.printStackTrace(); } } public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req, res); }}

 

转载地址:http://nkblo.baihongyu.com/

你可能感兴趣的文章
区块链软件公司:区块链的金融化体系
查看>>
常用的几个设计心理学
查看>>
微服务为什么一定要用docker
查看>>
U盘空间缩减还原
查看>>
nagios监控window主机和LInux主机网卡流量
查看>>
Linux内核将用Nftables替代iptables
查看>>
css 字体属性详细总结
查看>>
Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
SQL Server --堆表和索引表的区别
查看>>
程序相关规范_已整理
查看>>
我对创业和管理的一些看法
查看>>
linux chattr -- 修改linux文件属性
查看>>
我的友情链接
查看>>
Edit Control 上行号
查看>>
20110717 搞不懂的思科物流
查看>>
将图片和文字写到pdf文件中
查看>>
如何用C++实现一个LRU Cache
查看>>
前端小白,了解这3点,不怕找不到工作!
查看>>