Servlet

    考虑一个银行的业务处理,用户应该能够登录到自己的账户、查看账户余额、取款等。除了这些活动外,还有许多其他的业务规则需要说明,例如,用户不能察看别人的账户或从别人的账户上取款等。

    一个简化的银行事务例子应包含以下组件;

    login.html 、 error.html 、 LoginServlet 、 AccountServlet

    用户首先通过login.html页面登录,然后使用LoginServlet来验证用户名和口令,如果合法则将请求转发到AccountServlet,否则转发到error.html页面。AccountServlet让用户查看账户信息。

    1.登录页面login.html

<html>
  <head>
    <title>Login.html</title>
  </head>
  <body>
    <center>请输入用户名和口令查看账户信息<br/></center>
    <form action="login.do" method="get">
          用户名:
    <input type="text" name="username" size="15"/><br/>
         密&nbsp;&nbsp;码:
    <input type="password" name="password" size="15"/><br/>
    <input type="submit" value="登录"/>&nbsp;<input type="reset" value="取消"/>
    </form>
  </body>
</html>

    2.验证页面LoginServlet.java

package com.demo;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.HashMap;;

 

public class LoginServlet extends HttpServlet

{  

    ServletContext context;  

    HashMap<String,String> users=new HashMap<String,String>();    

    public void init() throws ServletException  

    {  

       context=getServletContext();   

       users.put("ann","aaa");   

       users.put("john","jjj");   

       users.put("mark","mmm");  

    }  

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

    {   

       doPost(request,response);    

    }

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

    {   

       String username=request.getParameter("username");   

       String password=request.getParameter("password");   

       if(username!=null&&password!=null&&password.equals(users.get(username)))   

       {    

           request.setAttribute("username",username);    

           RequestDispatcher view=context.getRequestDispatcher("/account.do");    

           view.forward(request,response);    

           return;   

       }   

       else   

       {    

           RequestDispatcher view=context.getRequestDispatcher("/error.html");    

           view.forward(request,response);    

           return;   

        }  

    }

}

    3.账户信息页面AccountServlet.java

package com.demo;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.HashMap;;

public class AccountServlet extends HttpServlet

{  

    ServletContext context;  

    HashMap<String,String[]> data=new HashMap<String,String[]>();  

    public void init() throws ServletException  

    {   

        context=getServletContext();   

        data.put("ann",new String[]{"01/01/2009:1000.00","01/02/2009:1300.00","01/03/2009:900/00"});   

        data.put("john",new String[]{"01/01/2009:4500.00","01/02/2009:2100.00","01/03/2009:2600/00"});   

        data.put("mark",new String[]{"01/01/2009:7800.00","01/02/2009:5200.00","01/03/2009:1900/00"});  

    }  

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

    {   

        doPost(request,response);    

    }

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

    {   

        String username=(String)request.getAttribute("username");   

        if(username!=null)   

        {    

            String [] records=(String[])data.get(username);    

            response.setContentType("text/html;charset=gb2312");    

            PrintWriter out=response.getWriter();    

            out.println("<HTML>");     

            out.println("  <BODY>");    

            out.println("您好!"+username+",您的账户信息如下:<p>");    

            for(int i=0;i<records.length;i++)    

            {     

                out.println(records[i]+"<br>");    

             }    

             out.println("<HTML>");     

             out.println("  <BODY>");   

         }   

         else   

         {    

             RequestDispatcher view=context.getRequestDispatcher("/login.html");    

             view.forward(request,response);   

          }  

    }

}

    4.在DD文件中添加Servlet定义

 <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/login.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>AccountServlet</servlet-name>
  <url-pattern>/account.do</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file/>
  <welcome-file>/Login.html</welcome-file>
 </welcome-file-list>

从Tomcat中打开Login页面登录:

 

posted @ 2013-05-04 16:44  木木兮  阅读(322)  评论(0编辑  收藏  举报