注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 高级技术 >> 多线程 >> Java正文

使用技巧:Java程序开发中如何应用线程

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-5-25 3:47:59 【 】 【加入收藏

    Servlet的会话管理技术主要有4种:URL重写,Cookie,隐藏表单域以及HttpSession。下面的例子通过一个动态验证码的实例详细说明了这4种技术的具体应用方式。为了简单起见,动态验证码没有采用图片生成技术,其原理和效果与本例中相同。另外,为了代码结构的清晰性,在登录表单生成和登录验证部分都没有采用统一的代码。对这些代码稍作修改,就可以实现单一的表单生成Servlet和验证Servlet,感兴趣的朋友可以与我联系(qingbt@126.com)。
    //**************************************   index.jsp代码:
    <%@ page contentType="text/html;charset=gb2312" %>
    <html>
      <head>
        <title>Servlet会话管理实例</title>
      </head>

      <body>
        <h2>Servlet会话管理实例</h2><hr>
        本实例通过实现用户登录过程中的动态验证码校验功能,说明4种Session管理方法的特点。<br>

        <ul>
        <li><a href="UrlRedirect">URL重写方法</a></li>
        <li><a href="HiddenField">隐藏表单域方法</a></li>
        <li><a href="Cookie">Cookie方法</a></li>
        <li><a href="HttpSessionManagement">HttpSession方法</a></li>
        </ul>
      </body>
    </html>

    //**************************************   web.xml内容:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app >
      <servlet>
        <servlet-name>UrlRedirect</servlet-name>
        <servlet-class>UrlRedirect</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>LoginWithUrlRedirect</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>HiddenField</servlet-name>
        <servlet-class>HiddenField</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>Cookie</servlet-name>
        <servlet-class>CookieManagement</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>LoginWithCookie</servlet-name>
        <servlet-class>LoginWithCookie</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>HttpSessionManagement</servlet-name>
        <servlet-class>HttpSessionManagement</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>LoginWithSession</servlet-name>
        <servlet-class>LoginWithSession</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>UrlRedirect</servlet-name>
        <url-pattern>/UrlRedirect</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>HiddenField</servlet-name>
        <url-pattern>/HiddenField</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Cookie</servlet-name>
        <url-pattern>/Cookie</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>LoginWithCookie</servlet-name>
        <url-pattern>/LoginWithCookie</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>HttpSessionManagement</servlet-name>
        <url-pattern>/HttpSessionManagement</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>LoginWithSession</servlet-name>
        <url-pattern>/LoginWithSession</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    //**************************************   URL重写技术的登录表单生成Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class UrlRedirect extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      int validationCode=(int)(Math.random()*1000);
      out.println("<HTML>");
      out.println("<HEAD><TITLE>URL重写</TITLE></HEAD>");
      out.println("<BODY><h2>通过URL重写实现会话管理</h2><hr>");
      out.println("<form action='Login?code="+validationCode+"' method=post>");
      out.println("用户名:<input type=text width=10 name='username' value='abc'><br>");
      out.println("密码: <input type=password width=10 name='password' value='123'><br>");
      out.println("验证码:<input type=text width=10 name='inputedcode'>"+validationCode);
      out.println("<input type=submit value='登录'><br>");
      out.println("</form>");
      out.println("</BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
     }
    }


    //**************************************   隐藏域技术的登录表单生成Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class HiddenField extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      int validationCode=(int)(Math.random()*1000);
      out.println("<HTML>");
      out.println("<HEAD><TITLE>隐藏域</TITLE></HEAD>");
      out.println("<BODY><h2>通过隐藏域实现会话管理</h2><hr>");
      out.println("<form action='Login' method=post>");
      out.println("用户名:<input type=text width=10 name='username' value='abc'><br>");
      out.println("密码: <input type=password width=10 name='password' value='123'><br>");
      out.println("验证码:<input type=text width=10 name='inputedcode'>"+validationCode);
      out.println("<input type=hidden width=10 name='code' value='"+validationCode+"'>");
      out.println("<input type=submit value='登录'><br>");
      out.println("</form>");
      out.println("</BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
     }
    }

    //**************************************   URL重写和隐藏域技术的登录验证Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class LoginWithUrlRedirect extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      out.println("<BODY><h2>通过URL重写实现会话管理</h2><hr>");
      out.println("用户名:"+request.getParameter("username")+"<br>");
      out.println("密码: "+request.getParameter("password")+"<br>");
      out.println("系统验证码:"+request.getParameter("code")+"<br>");
      out.println("输入验证码:"+request.getParameter("inputedcode")+"<br>");
      out.println("</BODY>");
      out.flush();
      out.close();
     }

    }
    //**************************************   Cookie技术的登录表单生成Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Cookie;

    public class CookieManagement extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      int validationCode=(int)(Math.random()*1000);
      Cookie myCookie=new Cookie("code",""+validationCode);
      myCookie.setMaxAge(60*60);   //一小时
      response.addCookie(myCookie);
      out.println("<HTML>");
      out.println("<HEAD><TITLE>Cookie</TITLE></HEAD>");
      out.println("<BODY><h2>通过Cookie实现会话管理</h2><hr>");
      out.println("<form action='LoginWithCookie' method=post>");
      out.println("用户名:<input type=text width=10 name='username' value='abc'><br>");
      out.println("密码: <input type=password width=10 name='password' value='123'><br>");
      out.println("验证码:<input type=text width=10 name='inputedcode'>"+validationCode);
      out.println("<input type=submit value='登录'><br>");
      out.println("</form>");
      out.println("</BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
     }
    }
    //**************************************   Cookie技术的登录验证Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Cookie;


    public class LoginWithCookie extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      Cookie cookies[] = request.getCookies(); // 获取所有Cookie
      String code="";
      if (cookies != null){
       for(int i = 0; i < cookies.length; ++i)   // 遍历所有Cookie
        if (cookies[i].getName().equals("code")){ //找到
         code=cookies[i].getValue();
         break;
        }
      }
      out.println("<BODY><h2>通过Cookie实现会话管理</h2><hr>");
      out.println("用户名:"+request.getParameter("username")+"<br>");
      out.println("密码: "+request.getParameter("password")+"<br>");
      out.println("系统验证码:"+code+"<br>");
      out.println("输入验证码:"+request.getParameter("inputedcode")+"<br>");
      out.println("</BODY>");
      out.flush();
      out.close();
     }

    }

    //**************************************   HttpSession技术的登录表单生成Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class HttpSessionManagement extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      int validationCode=(int)(Math.random()*1000);
      HttpSession session=request.getSession();
      session.setAttribute("code",validationCode);
      out.println("<HTML>");
      out.println("<HEAD><TITLE>HttpSession</TITLE></HEAD>");
      out.println("<BODY><h2>通过HttpSession实现会话管理</h2><hr>");
      out.println("<form action='LoginWithSession' method=post>");
      out.println("用户名:<input type=text width=10 name='username' value='abc'><br>");
      out.println("密码: <input type=password width=10 name='password' value='123'><br>");
      out.println("验证码:<input type=text width=10 name='inputedcode'>"+validationCode);
      out.println("<input type=submit value='登录'><br>");
      out.println("</form>");
      out.println("</BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
     }
    }

    //**************************************   HttpSession技术的登录验证Servlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class LoginWithSession extends HttpServlet {

     public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      HttpSession session=request.getSession();
      out.println("<BODY><h2>通过HttpSession实现会话管理</h2><hr>");
      out.println("用户名:"+request.getParameter("username")+"<br>");
      out.println("密码: "+request.getParameter("password")+"<br>");
      out.println("系统验证码:"+session.getAttribute("code")+"<br>");
      out.println("输入验证码:"+request.getParameter("inputedcode")+"<br>");
      out.println("</BODY>");
      out.flush();
      out.close();
     }
    }

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     J2SE实现windows读取网卡的物理地址
     Eclipse使用及配置
     谈自定义Exception进行错误处理
     介绍下Eclipse中如何debug程序?
     Eclipse下开发struts完整解决乱码问题
     Eclipse快速上手指南之使用JUnit
     Eclipse中建立自己的JUnit测试
     Java编程—Spring AOP本质(6)
     Scala—Java的避难所之main(String[])
     Spring数据源的灵活配置巧应用
    最 新 推 荐
     关于线程池的简单构建
     使用技巧:Java程序开发中如何应用线程
     Java多线程Socket操作猜数游戏样例
     100行Java代码构建一个线程池。
     Java多线程同步设计中使用Metux
     多线程编程的设计模式 临界区模式
     Java语言深入 多线程程序模型研究
     多线程在JAVA ME应用程序中的使用
     扫描整个网段的多线程程序
     线程运行栈信息的获取
    相 关 文 章

    Eclipse使用及配置
    Eclipse快速上手指南之使用JUnit
    Struts--使用validate方法验证数据。
    Struts--使用validate方法验证数据
    J2ME中使用缓存将屏幕内容存储为Image
    使用EJB 3.0简化Java开发(一)
    jsp生成html(方法简单,只用使用一个serlvet…
    使用synchronized和Lock对象获取对象锁
    Tapestry组件使用总结
    Java开发工具Eclipse使用中报错的详细分

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用