开发模式
1.C/S
客户端/服务器,需要安装客户端软件,称为胖客户端
2.B/S
浏览器/服务器,只要有浏览器即可,称为瘦客户端
MVC设计模式
即Model+View+Controller,在JavaWeb中分别对应:JavaBean/JSP/Servlet
注:
JavaBean:一个带有无参构造方法、属性私有,并带有公共的getter和setter方法的类
常用目录分层
1.Bean:用于存放JavaBean对象
2.DAO:Data Access Object,定义数据访问接口
3.DAO.IMPL:DAO接口的实现类
4.Service:定义业务逻辑操作接口
5.Service.IMPL:Service接口的实现类
6.Servlet:用于处理网络业务
7.Util:用于存放数据库等配置,配置信息一般从.properties
文件中读取
MVC示例
1.xxx.properties
主要存放一些数据库的配置信息
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/database
username=xxx
password=xxx
2.Util
主要读取资源文件和进行数据库参数配置,并向外提供连接和关闭数据库方法
public class DBUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
ResourceBundle rb = ResourceBundle.getBundle("xxx"); //读取资源文件,不用加后缀
driver = rb.getString("driverClass"); //设置基本配置信息
url = rb.getString("url");
username = rb.getString("username");
password = rb.getString("password");
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection open() { //提供连接数据库方法
return DriverManager.getConnection(url, username, password);
}
public static void close(ResultSet rs, Statement stmt, Connection conn) { //提供关闭连接方法
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
stmt = null;
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
conn = null;
}
}
3.Bean
主要定义一些JavaBean对象
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.DAO
定义一些数据操作的接口
public interface UserDao {
public void addUser(User user); //添加用户接口
public void selectUser(String name, String password);
}
5.DAO.IMPL
实现数据操作接口的类
public class UserDaoImpl implements UserDao {
public void addUser(Stu stu) {
Connection conn = null;
PreparedStatement p = null;
ResultSet rs = null;
try {
conn = DBUtil.open();
p = conn.prepareStatement("xxx");
rs = p.executeQuery();
...
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, p, conn);
}
}
public void selectUser(String name, String password) {
sql操作...
}
}
6.Service
定义具体的逻辑操作接口
public interface UserService {
public void regist(String name, String password); //注册功能接口
public void login(String name, String password);
}
7.Service.IMPL
实现逻辑操作接口类
public class UserServiceImpl implements UserService{
UserDao userDao = new UserDaoImpl();
public void regist(String name, String password) { //具体注册功能操作
User user = new User();
user.setName(name);
user.setPassword(password);
userDao.addUser(user);
...
}
public void login(String name, String password) {
userDao.selectUser(name, password);
...
}
}
8.Servlet
实现一些网络请求处理
public class UserServlet extends HttpServlet { //处理注册请求Servlet
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
Stu stu = new Stu();
String name = (String) request.getParameter("name");
String password = (String) request.getParameter("password");
UserServiceImpl usi = new UserServiceImpl();
usi.regist(name, password);
...
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}