Java Web应用优化 认识软件设计分层架构
分层资料的整理
先准备值类和连接数据库的工具类
package week17.entity;public class User {private int id;private String uname;private String pwd;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public User(int id, String uname, String pwd) {super();this.id = id;this.uname = uname;this.pwd = pwd;}public User() {id=0;uname="";pwd="";}@Overridepublic String toString() {return "User [id=" + id + ", uname=" + uname + ", pwd=" + pwd + ", toString()=" + super.toString() + "]";}}
package week17.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {private final static String driver = "com.mysql.cj.jdbc.Driver"; // 数据库驱动private final static String url = "jdbc:mysql://mysql.sqlpub.com:3306/huangjin"; // urlprivate final static String dbName = "laocooon"; // 数据库用户名private final static String dbPass = "fc12f7a5215e8e0a"; // 数据库密码private static Connection conn = null;private static PreparedStatement pstmt = null; private static ResultSet rs = null;public static Connection getConn() throws Exception{Class.forName(driver); //注册驱动return DriverManager .getConnection(url,dbName,dbPass); //获得数据库连接并返回}public static void closeAll( Connection conn, PreparedStatement pstmt, ResultSet rs ) throws Exception { if(rs != null) rs.close();if(pstmt != null) pstmt.close();if(conn != null) conn.close();}public static void closeAll( Connection conn, PreparedStatement pstmt) throws Exception {if(pstmt != null) pstmt.close();if(conn != null) conn.close();}//直接关静态成员的资源public static void closeAll() throws Exception { closeAll(conn,pstmt,rs);// 关 17 18 19行的资源的}//增删改 返回多少条发生了变化,如果0表示没变化public static int executeUpdataSQL(String sql,String[] param)throws Exception {Connection conn = null;PreparedStatement pstmt = null; conn = getConn(); pstmt = conn.prepareStatement(sql); for( int i = 0; i < param.length; i++ ) pstmt.setString(i+1, param[i]);int num = pstmt.executeUpdate();closeAll(conn,pstmt);return num;}//调用此代码,使用完 记录集的内容之后,通过 closeAll();public static ResultSet executeQuerySQL(String sql,String[] param)throws Exception {closeAll();conn = getConn(); pstmt = conn.prepareStatement(sql); for( int i = 0; i < param.length; i++ ) pstmt.setString(i+1, param[i]); rs = pstmt.executeQuery(); return rs;}}
数据访问层的类
package week17.dao;import java.util.List;import week17.entity.User;//打算有哪些业务
public interface UserDao {public User findUser(String uname) throws Exception;public List<User> allUser() throws Exception;public int addUser(User user) throws Exception;
}
package week17.dao.impl;import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import week17.dao.UserDao;
import week17.entity.User;
import week17.util.BaseDao;public class UserDaoImpl implements UserDao {@Overridepublic User findUser(String uname) throws Exception {// TODO Auto-generated method stubString sql="SELECT * FROM adminuser WHERE uname= ?";String[] param = {uname}; ResultSet rs=BaseDao.executeQuerySQL(sql, param);User user= new User();while(rs.next()) {user.setId(rs.getInt(1));user.setUname(rs.getString(2));user.setPwd(rs.getString(3));}BaseDao.closeAll();rs=null;return user;}@Overridepublic List<User> allUser() throws Exception {String sql="SELECT * FROM adminuser";String[] param = {}; ResultSet rs=BaseDao.executeQuerySQL(sql, param); List<User> list=new ArrayList<User>();while(rs.next()) {User user= new User();user.setId(rs.getInt(1));user.setUname(rs.getString(2));user.setPwd(rs.getString(3));list.add(user);}BaseDao.closeAll();return list;}@Overridepublic int addUser(User user) throws Exception {String sql="INSERT INTO adminuser (uname,pwd) value(?,?)";String[] param = {user.getUname(),user.getPwd()};int row = BaseDao.executeUpdataSQL(sql, param);BaseDao.closeAll();return row;}
}
业务逻辑层的类
package week17.biz;import java.util.List;import week17.entity.User;public interface UserBiz {public boolean login(User user) throws Exception;public List<User> getAll() throws Exception;public int addUser(User user) throws Exception;
}
package week17.biz.impl;import java.util.List;import week17.biz.UserBiz;
import week17.dao.UserDao;
import week17.dao.impl.UserDaoImpl;
import week17.entity.User;public class UserBizImpl implements UserBiz {@Overridepublic boolean login(User user) throws Exception {UserDao userDao=new UserDaoImpl();System.out.println("login");User u=userDao.findUser(user.getUname());return u.getPwd().equals(user.getPwd());}@Overridepublic List<User> getAll() throws Exception {// TODO Auto-generated method stubUserDao ud=new UserDaoImpl();return ud.allUser();}@Overridepublic int addUser(User user) throws Exception {UserDao ud=new UserDaoImpl();String uname=user.getUname();User u=ud.findUser(uname);return u.getUname().equals(uname)?0:ud.addUser(user);}}
表示层
<%-- dologin.jsp --%>
<%@page import="week17.biz.impl.UserBizImpl"%>
<%@page import="week17.biz.UserBiz"%>
<%@page import="week17.entity.User"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%request.setCharacterEncoding("UTF-8");String uname=request.getParameter("username");String pwd=request.getParameter("password");if(uname==null||pwd==null)return ;User u=new User();u.setUname(uname);u.setPwd(pwd);UserBiz userBiz=new UserBizImpl();if(userBiz.login(u)){session.setAttribute("user", u);//去管理页out.println("登录成功~!");response.sendRedirect("./listall.jsp");}else{//去登录页response.sendRedirect("./login.jsp");}%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>验证检测</title>
</head>
<body></body>
</html>
<%-- listall.jsp --%>
<%@page import="week17.biz.impl.UserBizImpl"%>
<%@page import="week17.biz.UserBiz"%>
<%@page import="week17.entity.User"%>
<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%UserBiz ub=new UserBizImpl(); List<User> list=ub.getAll();for(User user:list){out.println(user+"<br>");}%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body></body>
</html>
<%-- doadd.jsp --%>
<%@page import="week17.biz.impl.UserBizImpl"%>
<%@page import="week17.biz.UserBiz"%>
<%@page import="week17.entity.User"%>
<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%
User user=new User(0,"sss1","pwds");
UserBiz ub=new UserBizImpl();if(ub.addUser(user)>0){out.println("添加成功");
}else{out.println("已经注册过了");return ;
}%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body></body>
</html>