最近在练习java程序,总结一下从数据库查询信息并输出到jsp页面的过程。主要数据处理在src.cn.javatest包下面
项目预览
1,配置项目根目录src目录下的druid.properties数据库信息(相当于一个数据库配置文件)
里面的信息可以在下载druid中获得,只需要连接到数据库并填写数据库表,
username=账号;password=密码
2,在相应的包中,新建utils/JDBCUtils.java文件,该文件是加载数据库信息,并连接数据库。
public class JDBCUtils {
//定义成员变量
private static DataSource ds;
static {
try {
//1.加载配置文件
Properties pro = new Properties();
//使用ClassLoader加载配置文件,获取字节输入流
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//2.初始化连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 获取连接池的方法
*/
public static DataSource getDataSource() {
return ds;
}
}
3,以上基础已做好,再新增页面就无需再重复1,2步骤,以下目录都和utils目录同级
4,在domain/Doctor.java下创建表的信息,包括表字段,set,get方法。
public class Doctor {
private int id;//数据库javatest 中doctor表字段id
private String name;//数据库javatest 中doctor表字段name
private String hospital;//数据库javatest 中doctor表字段hospital
private String phone;//数据库javatest 中doctor表字段phone
private String salary;//数据库javatest 中doctor表字段salary
private String province;//数据库javatest 中doctor表字段province
public int getId() { //get方法
return id;
}
public void setId(int id) { //set方法
this.id = id;
}
...... //其他字段也要做get/set方法
5,在dao/DoctorDao.java页面创建接口,并创建实现方法。
public interface DoctorDao { //创建接口
public List findAll(); //方法
}
在dao/impl/DoctorDaoImpl.java页面实现DoctorDao.java中的方法。
public class DoctorDaoImpl implements DoctorDao{
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List findAll() { //重写接口中的方法
// 使用JDBC操作数据库
String sqlString = "select * from doctor";
List doctors = template.query(sqlString, new BeanPropertyRowMapper(Doctor.class));
return doctors;
}
}
6,在service/DoctorService.java创建接口,并创建获取所有用户列表的方法
public interface DoctorService { //DoctorService接口
//获取所有用户列表
public List findAll(); //DoctorService方法
}
在service/impl/DoctorServiceImpl.java中实现DoctorService.java中的方法
public class DoctorServiceImpl implements DoctorService {
private DoctorDao dao = new DoctorDaoImpl();
@Override
public List findAll() { //实现接口类
// 调用Dao层获取数据
List doctorServiceImpl = dao.findAll();
return doctorServiceImpl;
}
}
7,在web/servlet/DoctorListServlet.java中获取doctor信息,并保存到request中。并使用request.getRequestDispatcher("/javatest/list.jsp").forward(request, response);转发到页面
@WebServlet("/doctorListServlet")
public class DoctorListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DoctorListServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DoctorService service = new DoctorServiceImpl();
List doctors = service.findAll();//获取doctor信息
request.setAttribute("doctors", doctors);//将结果写到request域中
//转发到list.jsp页面
request.getRequestDispatcher("/javatest/list.jsp").forward(request, response);
}
}
8,创建/WebContent/javatest/index.jsp页面,做个点击跳转
href="${pageContext.request.contextPath}/doctorListServlet" style="text-decoration:none;font-size:33px">查询所有用户信息
创建/WebContent/javatest/list.jsp页面,并将想要的信息输出到页面
用户信息列表
编号 | 姓名 | 服务医院 | 电话号码 | 薪水 | 省份 | 操作 |
---|---|---|---|---|---|---|
${s.count} | ${doctor.name} | ${doctor.hospital} | ${doctor.phone} | ${doctor.salary} | ${doctor.province} | 修改 删除 |
所有的代码均完成,在浏览器中访问,就可以获取到doctor表中数据并展示在页面。