您的位置:首页 > 其它

(第5讲)同一用户的不同页面共享数据的四种方法

2016-08-30 11:39 483 查看
同一用户的不同页面共享数据的四种方法

1、cookie
2、sendRedirect
3、session
4、隐藏表单提交

1、cookie

 服务器在客户端保存的用户信息,比如登录名,密码等就是cookie。

cookie作用:

(1)保存用户名、密码,在一定时间不用重复登录

(2)记录用户访问网站的喜好(比如有无背景音乐、网页背景色是什么)

(3)网站的个性化,比如定制网站的服务、内容

cookie  和 servlet一样,内部的数据结构是散列表。

cookie的使用:

(1)cookie的创建(在服务器创建):Cookie c = new Cookie(String name,String val);

(2)将一个cookie对象添加到客户端:response.addCookie(c);

(3)从客户端读取cookie到服务器:request.getCookies();

cookie的其他说明:

(1)可以通过IE--工具--Internet选项--隐私--高级:来启用或者禁用cookie

(2)由于cookie的信息是保存在客户端的,因此安全性不高

(3)cookie信息的生命周期可以在创建时设置(比如30s),从创建的那一刻起,就开始计时,

30s后cookie信息就无效了。

例子:在cookie1页面:创建并显示cookie信息

          在cookie2页面:保存cookie信息并显示

          在cookie3页面:删除cookie信息

程序如下:

-----------------------------------------------------------------------------------------------------------------------------------

/**

 *新建cookie

 */

package com.weiya;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class Cookie1 extends HttpServlet{

     public void doGet(HttpServletRequest req,HttpServletResponse res){

            try{

                res.setContentType("text/html;charset=UTF-8");

                PrintWriter pw = res.getWriter();

                //当用户访问该页面时,就将信息创建到该用户的cookie中

                //1、先在服务器端创建一个cookie

                Cookie cookie = new Cookie("color1","red");

                //2、设置该cookie存在的时间

                cookie.setMaxAge(30);

                //3、将该cookie写到客户端

                res.addCookie(cookie);

                pw.println("已经创建了cookie");

            }catch(Exception e){

                e.printStackTrace();

            }

     }

        public void doPost(HttpServletRequest req,HttpServletResponse res){

         this.doGet(req,res);

     }

}

--------------------------------------------------------------------------------------------------------------------------

/**

 * 读取cookie

 */

package com.weiya;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class Cookie2 extends HttpServlet{

     public void doGet(HttpServletRequest req,HttpServletResponse res){

            try{

                res.setContentType("text/html;charset=UTF-8");

                PrintWriter pw = res.getWriter();

                 //从客户端得到所有cookie信息

                Cookie[] cookie =  req.getCookies();

                int i=0;

                if(cookie!=null){//如果cookie不为空,从中读取cookie

                        for(i=0;i<cookie.length;i++){

                                Cookie tem = cookie[i];

                                if(tem.getName().equals("color1")){

                                            String val = tem.getValue();

                                            pw.println("color1="+val);

                                            break;

                                }

                        }

                        if(cookie.length==i)

                         {

                                 pw.println("cookie过期" );

                             }

                }else{

                    pw.println("不存在color这个cookie/或是已经过期了");

                }

            }catch(Exception e){

                e.printStackTrace();

            }

     }

        public void doPost(HttpServletRequest req,HttpServletResponse res){

         this.doGet(req,res);

     }

}

----------------------------------------------------------------------------------------------------------------------

/**

 * 删除cookie

 */

package com.weiya;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class Cookie3 extends HttpServlet{

     public void doGet(HttpServletRequest req,HttpServletResponse res){

            try{

                res.setContentType("text/html;charset=UTF-8");

                PrintWriter pw = res.getWriter();

                 //从客户端得到所有cookie信息

                Cookie[] cookie =  req.getCookies();

                int i=0;

                if(cookie!=null){//如果cookie不为空,从中读取cookie

                        for(i=0;i<cookie.length;i++){

                                Cookie tem = cookie[i];

                                if(tem.getName().equals("color1")){

                                            tem.setMaxAge(0);    //将该coolie删除

                                            pw.println("已经删除了color1这个cookie");

                                            break;

                                }

                        }

                        if(cookie.length==i)

                         {

                                 pw.println("cookie过期" );

                             }

                }else{

                    pw.println("不存在color这个cookie/或是已经过期了");

                }

            }catch(Exception e){

                e.printStackTrace();

            }

     }

        public void doPost(HttpServletRequest req,HttpServletResponse res){

         this.doGet(req,res);

     }

}

----------------------------------------------------------------------------------------------------------------------

部署文件如下:

<!--cookie开始-->

    <servlet>

        <servlet-name>Cookie1</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Cookie1</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Cookie1</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/cookie1</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

    <servlet>

        <servlet-name>Cookie2</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Cookie2</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Cookie2</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/cookie2</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

    <servlet>

        <servlet-name>Cookie3</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Cookie3</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Cookie3</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/cookie3</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

<!--cookie结束-->

----------------------------------------------------------------------------------------------------------------------

结果就是:

在网站中输入:http://localhost:8080/myWebSite/cookie1,可以看到浏览器输出:

已经创建了cookie

在网站中输入:   http://localhost:8080/myWebSite/cookie3,可以看到浏览器输出:
color1=red(如果在30秒后刷新该页面,会显示:不存在color这个cookie/或是已经过期了)

在网站中输入:   http://localhost:8080/myWebSite/cookie3,可以看到浏览器输出:
已经删除了color1这个cookie 

  
2、HttpServletResponse类型对象的sendRedirect(String location)方法


 只能传递字符串,不能传递对象,但是速度快;

用的时候需要注意:比如说 response.sendRedirect("welcome?uname=weiya");

(1)welcome代表你要跳转的那个Servlet的URL

(2)Servlet URL名 和 变量之间需要有 ?

(3)如果需要传递两个以上的值,他们之间需要用地址符 & 分开,比如:

response.sendRedirect("welcome?uname=weiya&passw=12");

(4)如果传递的是中文,可能是乱码,需要处理

例子:

———————————————————————————————————————

/**

 *   登录界面

 */

package com.weiya;

import javax.servlet.http.*;

import java.io.*;

//解决乱码问题,只要把编码方式改一下就行

public class Login extends HttpServlet{

      public void doGet(HttpServletRequest req,HttpServletResponse res)

      {

          try{

              //解决中文乱码,解决方法一

              res.setContentType("text/html;charset=UTF-8");

              PrintWriter pw = res.getWriter();

              //返回登录界面

              pw.print("<html>");

              pw.print("<body>");

            pw.print("<h1>登录界面</h1>");

              pw.print("<form action=loginc  method=post>");//action后边写URL

              pw.print("用户名:<input type=text name=uname><br>");

              pw.print("  </input ><br>");

              pw.print("密码:<input type=password name=pword><br>");

              pw.print("  </input ><br>");

              pw.print("  <input type=submit  value= 提交><br>");

              pw.print("  </input ><br>");

              pw.print("</form>");

              pw.print("</body>");

              pw.print("</html>");

          }catch(Exception e){

              e.printStackTrace();

          }

      }

      public void doPost(HttpServletRequest req,HttpServletResponse res)

      {

          this.doGet(req,res);

      }

}

————————————————————————————————————————

/**

 * 用户验证Servlet

 */

package    com.weiya;

import javax.servlet.http.*;

import java.io.*;

import java.sql.*;

public class LoginC     extends HttpServlet{

    public void    doGet(HttpServletRequest req,  HttpServletResponse res){

        this.doPost(req,res);

    }

    public void    doPost(HttpServletRequest req,    HttpServletResponse    res){

     

        try{

            //解决中文乱码,解决方法一

            res.setContentType("text/html;charset=UTF-8");

             //得到用户提交的用户名和密码,用req

             //接收用户名和密码

             String    u =    req.getParameter("uname");

             String    p =    req.getParameter("pword");

 

          if(u.equals("admin") && p.equals("123")){

                  res.sendRedirect("wel?uname="+u+"&upass="+p) ;

                }

            }else{      //不合法。跳转到登录界面

                     res.sendRedirect("login") ;

            }

         }

        catch(Exception e){

            e.printStackTrace();

        }

    }

}

——————————————————————————————————————————

/**

 * 欢迎界面

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Wel extends HttpServlet{

     public void doGet(HttpServletRequest req,HttpServletResponse res){

        //得到从LoginC中传过来的信息

        String u = req.getParameter("uname"); 

    

       String p = req.getParameter("upass");

//这里的名字不能写错,要与loginC中传递参数一致

         try{

             res.setContentType("text/html;charset=UTF-8");

             PrintWriter pw = res.getWriter();

             pw.print("欢迎 " +u+" pass="+p);

         }catch(Exception e){

             e.printStackTrace();

         }

     }

        public void doPost(HttpServletRequest req,HttpServletResponse res){

         this.doGet(req,res);

     }

}

结果就是:

在网站中访问:http://localhost:8080/myWebSite/login,可以看到浏览器输出:

登录界面

用户名:

密码:

提交

输入正确的用户名和密码,点击提交,浏览器显示:(欢迎界面)

 欢迎,admin,pass=123

如果输入不正确的用户名和密码,点击提交,浏览器显示:(login界面)

登录界面

用户名:

密码:

提交

3、session

session的用法,即HttpSession类型的用法

(1)得到一个会话对象:HttpSession hs = request.getSession(true);

(2)给会话对象添加属性:hs.setAttribute(String name,Object val);

(3)得到某个属性:String name = hs.getAttribute(String name);

(4)删除某个属性:hs.removeAttribute(String name);

(5)得到服务器分配给该会话的ID:String id = hs.getId();


(6)删除全部的会话属性:hs.setMaxInactiveInterval(0);这个方法可以用来安全注销,是最安全的


[b]实现会话跟踪但是只能实现一次请求
[/b]
先看一个例子:

session1:提交信息给session2,这是第一次请求,form中的method=post

session2:提交信息给session3,这是第二次请求,请求方式为get(超链接)

程序如下:

——————————————————————————————————————————

 * 1、提交信息给session2

 *2、第一次请求

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Session1  extends HttpServlet{

    public void doGet(HttpServletRequest req,HttpServletResponse res)

      {

          try{

              //解决中文乱码,解决方法一

              res.setContentType("text/html;charset=UTF-8");

              PrintWriter pw = res.getWriter();

              //返回登录界面

              pw.print("<html>");

              pw.print("<body>");

              pw.print("<form action=session2  method=post>");//action后边写URL

              pw.print("想说的话:<input type=text name=msg><br>");

              pw.print("  </input ><br>");

              pw.print("  <input type=submit  value= 提交><br>");

              pw.print("  </input ><br>");

              pw.print("</form>");

              pw.print("</body>");

              pw.print("</html>");

          }catch(Exception e){

              e.printStackTrace();

          }

      }

      public void doPost(HttpServletRequest req,HttpServletResponse res)

      {

          this.doGet(req,res);

      }

}

————————————————————————————————————————

 * 1、提交信息给session3

 *2、第二次请求

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Session2 extends HttpServlet{

   public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                     //得到想说的话

                    String msg = req.getParameter("msg");

                    pw.println("想说的话:"+msg);

                    HttpSession hs = req.getSession(true);////输出ID,看每个页面的ID是否一样,判断是否为一个用户

                    String sessionId = hs.getId();

                    pw.println("会话ID:"+sessionId);

                    //转到session3

                    pw.println("<a href=\"session3\">连接到session3</a>");

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}

—————————————————————————————————————————

 * 1、获得与当前请求相关联的会话

 *2、显示ID

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Session3 extends HttpServlet{

   public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                     //得到想说的话

                    String msg = req.getParameter("msg");

                    pw.println("想说的话:"+msg);

                    HttpSession hs = req.getSession(true);////输出ID,看每个页面的ID是否一样,判断是否为一个用户

                    String sessionId = hs.getId();

                    pw.println("会话ID:"+sessionId);

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}

————————————————————————————————————————

部署文件如下:

<!--session1开始-->

    <servlet>

        <servlet-name>Session1</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Session1</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Session1</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/session1</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

<!--结束-->

<!--开始-->

    <servlet>

        <servlet-name>Session2</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Session2</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Session2</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/session2</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

<!--结束-->

<!--开始-->

    <servlet>

        <servlet-name>Session3</servlet-name>    <!--给你的servlet取名字,名字是任意的,且不是必须的-->

        <servlet-class>com.weiya.Session3</servlet-class>  <!-- 指明servlet路径,即包名+类名-->

    </servlet>

    <servlet-mapping>

        <servlet-name>Session3</servlet-name>   <!-- 与上边的映射,复制下来-->

         <url-pattern>/session3</url-pattern>    <!-- 这是在浏览器中输入的访问该servlet的URL-->

    </servlet-mapping>

<!--session3结束-->

在网站中访问:http://localhost:8080/myWebSite/session1,可以看到浏览器输出:

想说的话:

填写要写的话,点击提交,浏览器显示:

想说的话:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到session3

点击链接到session3,浏览器显示:

想说的话:null 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA

由此可以得出:

两次输出的ID相同,证明是同一客户,HttpSession对象顺利实现会话跟踪任务;(不论请求是post还是get,都可以实现会话跟踪)

但是两次取得并输出客户提交的信息过程中,第一次顺利取出,第二次却为null,验证了Http协议是一个“无状态”的协议,无法跨过多个请求。

现在考虑如何实现多个请求
index1: 输出一个画面,提交信息给index2,

index2:1、往会话对象中存入信息;2、提交信息给index3,
index3:   1、读取会话对象中已经存入的信息;2、提交信息给index4
index4:1、移除会话对象中已经存入的信息,并检验

程序如下:
———————————————————————————————————————

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Index1 extends HttpServlet{

      public void doGet(HttpServletRequest req,HttpServletResponse res)

      {

          try{

              //解决中文乱码,解决方法一

              res.setContentType("text/html;charset=UTF-8");

              PrintWriter pw = res.getWriter();

              //返回登录界面

              pw.print("<html>");

              pw.print("<body>");

              pw.print("<form action=index2  method=post>");//action后边写URL

              pw.print("想说的话:<input type=text name=msg><br>");

              pw.print("  </input ><br>");

              pw.print("  <input type=submit  value= 提交><br>");

              pw.print("  </input ><br>");

              pw.print("</form>");

              pw.print("</body>");

              pw.print("</html>");

          }catch(Exception e){

              e.printStackTrace();

          }

      }

      public void doPost(HttpServletRequest req,HttpServletResponse res)

      {

          this.doGet(req,res);

      }

}
———————————————————————————————————————

 * 1、将index1提交的信息传给index2,

 *2、在index2中练习如何使用在会话对象中存入信息

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Index2 extends HttpServlet{

public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                    //得到想说的话

                    String msg = req.getParameter("msg");

                    pw.println("想说的话:"+msg);

                    //在会话对象中存入信息

                    HttpSession hs = req.getSession(true);//得到session

                    hs.setAttribute("msg",msg);//将得到的信息存入会话对象中

                    //输出ID,看每个页面的ID是否一样,判断是否为一个用户

                    String sessionId = hs.getId();

                    pw.println("会话ID:"+sessionId);

                    //转到index3

                        pw.println("<a href=\"index3\">连接到index3</a>");

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}
———————————————————————————————————————

/**

 * 1、index2将信息提交给index3

 *2、在index3中练习如何去除会话对象中存入的信息

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Index3 extends HttpServlet{

public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                    //从会话对象中读取信息,并输出

                    HttpSession hs = req.getSession(true);//得到session

                    String msg = (String)hs.getAttribute("msg");//读取信息

                    pw.println("想说:"+msg);

                    //输出ID,看每个页面的ID是否一样,判断是否为一个用户

                    String sessionId = hs.getId();

                    pw.println("会话ID:"+sessionId);

                    //转到index4

                    pw.println("<a href=\"index4\">连接到index4</a>");

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}
————————————————————————————————————————

/**

 * 1、index3将信息提交给index4

 *2、在index4中练习如何移除会话对象中存入的信息

 */

package  com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class Index4  extends HttpServlet{

   public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                    //从会话对象中移除信息,并输出查看是否移除

                    HttpSession hs = req.getSession(true);//得到session

                    hs.removeAttribute("msg");//移除信息

                    String msg = (String)hs.getAttribute("msg");//读取信息

                    pw.println("想说:"+msg);

                    //输出ID,看每个页面的ID是否一样,判断是否为一个用户

                    String sessionId = hs.getId();

                    pw.println("会话ID:"+sessionId);

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}
在网站中访问:http://localhost:8080/myWebSite/index1,可以看到浏览器输出:

想说的话:

填写要写的话,点击提交,浏览器显示:

想说的话:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到index3

点击链接到index3,浏览器显示:

想说:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到index4

点击链接到index4,浏览器显示:

想说:null
会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA

由此可以得出:

1、三次输出的ID相同,证明是同一客户,是同一个HttpSession对象。

2、HttpSession对象的  setAttribute(String name ,Object value); 方法可以在会话对象中存入数据;

3、HttpSession对象的  getAttribute(String name); 方法可以在会话对象中读出数据;

4、HttpSession对象的  removeAttribute(String name); 方法可以在会话对象中移除数据;

5、HttpSession对象可以跨越多个请求,在会话对象被销毁之前,只要信息没有被移除,那么存放在会话对象中的数据就可以被同一客户的多个请求所共享。

cookie 和 servlet 的区别:

(1)存在的位置

cookie保存在客户端,session保存在服务器端


(2)安全性

比较而言,cookie的安全性比session要弱一点


(3)网络传输量

cookie通过网络在客户端与服务器端传输;

而session保存在服务器端,不需要传输。

(4)生命周期(以20分钟为例)

cookie 的生命周期是累计的,从创建开始计时,20mins后cookie的生命周期结束,cookie就无效了;

session的生命周期是间隔的,从创建开始计时,如果在20mins内,没有访问过session,则session信息无效;

但是如果在20mins内,访问过session ,那么他的生命周期就重新计算。

除此之外,关机会造成session生命周期结束,但是对cookie没有任何影响。

        


4、隐藏表单提交

<form action=...>

<input type=hidden name=a value=b></input>

</form>

例子:

HiddenForm1: 输出一个画面,提交信息给hiddenform2,  

HiddenForm2:在hiddenform2页面 显示hiddenform1页面提交的信息

——————————————————————————————————————————————————————————

/**

 * 隐藏表单的提交页面

 */

package com.weiya;

import javax.servlet.http.*;

import java.io.*;

public class HiddenForm1 extends HttpServlet{

        public void doGet(HttpServletRequest req,HttpServletResponse res)

      {

          try{

              res.setContentType("text/html;charset=UTF-8");

              PrintWriter pw = res.getWriter();

              String test = "abc";

              //返回登录界面

              pw.print("<html>");

              pw.print("<body>");

            pw.print("<h1>登录界面</h1>");

              pw.print("<form action=hiddenform2  method=post>");//action后边写URL

              pw.print("用户名:<input type=text name=uname><br>");

              pw.print("  </input ><br>");

              pw.print("密码:<input type=password name=pword><br>");

              pw.print("  </input ><br>");

          //    pw.print(" <input type=hidden name=sex value=test><br>");

          pw.print(" <input type=hidden name=sex value="+test+"><br>");

              pw.print("  </input ><br>");

              pw.print("  <input type=submit  value= 提交><br>");

              pw.print("  </input ><br>");

              pw.print("</form>");

              pw.print("</body>");

              pw.print("</html>");

          }catch(Exception e){

              e.printStackTrace();

          }

      }

      public void doPost(HttpServletRequest req,HttpServletResponse res)

      {

          this.doGet(req,res);

      }

}

——————————————————————————————————————————————————————————
/**

 * 隐藏表单的接收页面

 */

package com.weiya;

import javax.servlet.http.*;

import javax.servlet.*;

import java.io.*;

public class HiddenForm2 extends HttpServlet{

     public void doGet(HttpServletRequest req,HttpServletResponse res){

         this.doPost(req,res);

     }

     public void doPost(HttpServletRequest req,HttpServletResponse res){

         try{

                     req.setCharacterEncoding("UTF-8");

                    res.setContentType("text/html;charset=UTF-8");

                    PrintWriter pw = res.getWriter();

                    //得到用户名、密码和隐藏的性别

                    String u = req.getParameter("uname");

                    String  p = req.getParameter("pword");

                    String sex = req.getParameter("sex");

                    pw.println("用户名:"+u);

                    pw.println("密码:"+p);

                    pw.println("性别:"+sex);

         }catch(Exception e){

             e.printStackTrace();

         }

     }

}

在网站中访问:http://localhost:8080/myWebSite/hiddenform1,可以看到浏览器输出:

 

登录界面

用户名:

密码:

填写之后,点击提交,浏览器显示:

用户名:weiya 密码:1234 性别:abc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: