給出一個n-tier(層)架構(gòu)實例,HelloWord例子

n-tier(層)架構(gòu)實例
馬克- to-win:馬克 java社區(qū):防盜版實名手機(jī)尾號: 73203。
馬克-to-win:我們把上節(jié)的例1.2.1改成一個n-tier的例子。雖然例子很粗糙,但說明理論n-tier理論足夠了。在公司還要考慮一些其他問題,比如序列化,事務(wù)等等。

例2.1:

add.jsp:

<%@ page contentType="text/html; charset=GBK" %>
<html>
<body>
<center><h3>學(xué)生登記系統(tǒng)(for 教務(wù)處)</h3></center>
<form action="MarkToWinServlet" method="post">
姓名<INPUT TYPE="TEXT" NAME="name">
年齡<INPUT TYPE="TEXT" NAME="age">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>







package com;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletHello1 extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("GBK");
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        RegisterVO rVO=new RegisterVO();
        rVO.setName(name);
        rVO.setAge(age);
        UserServiceMark_to_win us=new UserServiceMark_to_win();
        try {
            us.register(rVO);
        } catch (Exception e) {
            e.printStackTrace();
        }
        response.sendRedirect("add.jsp");
    }
}



package com;
import java.sql.*;
public class UserServiceMark_to_win {
    public void register(RegisterVO rVO) throws Exception {
        RegisterDTO regiDTO=new RegisterDTO();
        regiDTO.setName(rVO.getName());
        regiDTO.setAge(rVO.getAge());
        UserFrontBO ufb= new UserFrontBO();
        ufb.register(regiDTO);
    }
}


package com;
public class UserFrontBO {
    public void register(RegisterDTO regiDTO) throws Exception {
        RegisterDO regiDO=new RegisterDO();
        regiDO.register(regiDTO);
    }
}





package com;
public class RegisterDO {
    public void register(RegisterDTO regiDTO) throws Exception {
        RegisterPO regiPO= new RegisterPO();
        regiPO.setName(regiDTO.getName());
        regiPO.setAge(regiDTO.getAge());
        RegisterDao regiDao=new RegisterDao();
        regiDao.register(regiPO);
    }
}




package com;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class RegisterDao {
    public synchronized void register(RegisterPO regiPO) throws Exception {
    String name=regiPO.getName();
        String age=regiPO.getAge();
        Connection con;
        con = DatabaseConn.getConnection();
        Statement stmt = con.createStatement();
/*即使表為空,rs.getInt(1)返回值為0,我們的程序邏輯也對*/      
        ResultSet rs = stmt.executeQuery("select max(id) from register");
        rs.next();
        System.out.println(rs.getInt(1));
        int id;
        id=rs.getInt(1);id++;  
        String insertString="insert into register Values("+id+",\""+name+"\","+Integer.valueOf(age)+")";
        System.out.println(insertString);
        stmt.executeUpdate(insertString);
        stmt.close();
        con.close();
    }
}





package com;
import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;
import java.sql.*;
import javax.sql.*;
public class DatabaseConn {
    static private MysqlConnectionPoolDataSource ds;
    private Connection con;
    private DatabaseConn() {
        ds = new MysqlConnectionPoolDataSource();
        ds.setURL("jdbc:mysql://localhost:3306/test");
        ds.setUser("root");
        ds.setPassword("1234");
    }
    public static Connection getConnection() throws Exception {
        if (ds == null) {
/*DatabaseConn的目的是讓ds有值,和con無關(guān)*/         
            new DatabaseConn();
        }
        Connection con = null;
        con = ds.getConnection();
        return con;
    }
}



package com;
public class RegisterVO{
    String name;
    String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}





package com;

public class RegisterDTO {
   String name;
    String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}



package com;

public class RegisterPO {
    String name;
    String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}