jsp/servlet/javaBean三层架构小示例(1)

   在java代码中写文档(html),这是servlet;在文档中写java代码,这是jsp;而如何将两者分开,这就是MVC模式了。虽然是java的一小步,却是程序员们生活的一大步哦。
   下面给出一个简单的用户登陆功能,采用jsp/servelt/javaBean来实现MVC模式(即经典的模式2)。

模型层:
package com.vitamin.DataAccess;


import java.sql.*;

public class DBbase {
        String sDBDriver 
= "sun.jdbc.odbc.JdbcOdbcDriver";
        String sConnstr 
= "jdbc:odbc:myDB";
        Connection connect 
= null;
        ResultSet rs 
= null;
        Statement stmt 
= null;


        
public DBbase()
        
{

                
try
                
{

                        Class.forName(sDBDriver);

                }

                
catch(ClassNotFoundException ex)
                
{
                        System.err.println(ex.getMessage());

                }

        }

        
public ResultSet executeQuery(String sql)
        
{

                
try
                
{
                        
this.connect = DriverManager.getConnection(sConnstr);
                        
this.stmt = this.connect.createStatement();
                        rs 
= stmt.executeQuery(sql);
                }

                
catch(SQLException ex)
                
{
                        System.err.println(ex.getMessage());
                }

                
return rs;
        }

        
public int executeUpdate(String sql)
        
{
                
int result = 0;
                
try
                
{
                        
this.connect = DriverManager.getConnection(sConnstr);
                        
this.stmt = this.connect.createStatement();
                        result 
= stmt.executeUpdate(sql);
                }

                
catch(SQLException ex)
                
{
                        System.err.println(ex.getMessage());
                }

                
return result;
        }


}



控制层:
package com.vitamin.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 com.vitamin.DataAccess.*;
import java.sql.*;

public class Hello extends HttpServlet {

    
/**
     * Constructor of the object.
     
*/

    
public Hello() {
        
super();
    }


    
/**
     * Destruction of the servlet. <br>
     
*/

    
public void destroy() {
        
super.destroy(); // Just puts "destroy" string in log
        
// Put your code here
    }


    
/**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * 
@param request the request send by the client to the server
     * 
@param response the response send by the server to the client
     * 
@throws ServletException if an error occurred
     * 
@throws IOException if an error occurred
     
*/

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

        response.setContentType(
"text/html");
        
        PrintWriter out 
= response.getWriter();
        out.println(
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println(
"  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println(
"  <BODY>");
        out.print(
"    This is ");
        out.print(
this.getClass());
        out.println(
", using the GET method");
        out.println(
"  </BODY>");
        out.println(
"</HTML>");
        out.flush();
        out.close();
    }


    
/**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * 
@param request the request send by the client to the server
     * 
@param response the response send by the server to the client
     * 
@throws ServletException if an error occurred
     * 
@throws IOException if an error occurred
     
*/

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

        response.setContentType(
"text/html");
        response.setCharacterEncoding(
"GBK");
        PrintWriter out 
= response.getWriter();
        
        request.setCharacterEncoding(
"GBK");
        String name 
= request.getParameter("name");
        String pwd 
= request.getParameter("password");
        DBbase myDb 
= new DBbase();
        ResultSet rs 
= null;
        
int result = 0;
        
        String sql 
= "select count(*) as count from users where username = '"+name+"' and password = '"+pwd+"'";
        
        
try
        
{
             rs 
= myDb.executeQuery(sql);
             
if(rs.next())
            
{
                result 
= rs.getInt("count");
            }

        }

        
catch(SQLException ex)
        
{
            ex.printStackTrace();
            
        }

        
        
if(result>0)
        
{
            out.println(
"合法用户");
        }

        
else
        
{
            out.println(
"非法用户");
        }

        
    }


    
/**
     * Initialization of the servlet. <br>
     *
     * 
@throws ServletException if an error occure
     
*/

    
public void init() throws ServletException {
        
// Put your code here
    }


}


Web表示层:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%
String path 
= request.getContextPath();
String basePath 
= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<base href="<%=basePath%>">
    
    
<title>My JSP 'index.jsp' starting page</title>
    
    
<meta http-equiv="pragma" content="no-cache">
    
<meta http-equiv="cache-control" content="no-cache">
    
<meta http-equiv="expires" content="0">
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="This is my page">
    
    
<!--
    
<link rel="stylesheet" type="text/css" href="styles.css">
    
-->
  
</head>
  
  
<body>
        
<FORM name="form1" method="POST" action="/servletTest/servlet/Hello">
            
<P>  &nbsp; 用户名:&nbsp;  &nbsp; <INPUT type="text" name="name" maxlength="20" /></P>
            
<P>     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密码      &nbsp;<INPUT type="password" name="password" maxlength="20" /> </P>
            
<P>
                 
&nbsp;
            
</P>
            
<P>              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;<INPUT type="Submit" name="button4" value="确定" /> &nbsp; &nbsp;<INPUT type="Reset" name="button5" value="重置"></P>
            
<P>
                 
&nbsp;
            
</P>
            
<P>
                 
&nbsp;
            
</P>
        
</FORM>
    
</body>
</html>

看过一篇资料说,servlet能够与多个客户机连接,接受多个客户的输入,并将结果广播到多个客户机上,例如可以作为一个多人参与的游戏服务器,这点倒是让我挺吃惊的,不知道如何能够实现哪?如果是真的,那servlet是如何得知客户的详细信息的?难道可以象socket那样?不解。。。

posted on 2006-06-25 00:36  Phinecos(洞庭散人)  阅读(6988)  评论(8编辑  收藏  举报

导航