关闭

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

1895人阅读 评论(0) 收藏 举报
分类:


同一用户的不同页面共享数据的四种方法

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);这个方法可以用来安全注销,是最安全的

实现会话跟踪但是只能实现一次请求

先看一个例子:

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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41809次
    • 积分:1256
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:20篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论