//steps:
// 1.创建web项目(用之前的增删改查)
// 2.搭tomcat服务器
// 3.在jsp里面写jsp脚本
//4.用tomcat 运行
Web项目:查询功能
//student类:
package com.jdbc.entity;
import java.io.Serializable;
public class Student implements Serializable {
private int studentNo;
private String studentName;
private int sex;
private String studentDesc;
public int getStudentNo() {
return studentNo;
}
public void setStudentNo(int studentNo) {
this.studentNo = studentNo;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getStudentDesc() {
return studentDesc;
}
public void setStudentDesc(String studentDesc) {
this.studentDesc = studentDesc;
}
public Student(int studentNo, String studentName, int sex,
String studentDesc) {
super();
this.studentNo = studentNo;
this.studentName = studentName;
this.sex = sex;
this.studentDesc = studentDesc;
}
public Student(){};
}
//读取配置文件
package com.jdbc.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//单例模式
public class ConfigManager {
private static ConfigManager configManager;
private static Properties properties;
//私有构造器
private ConfigManager(){
properties=new Properties();
//通过类加载文件,返回流的信息
InputStream is=ConfigManager.class.getClassLoader().getResourceAsStream("database.properties");
try {
properties.load(is);//配置文件加载
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (is !=null) {
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//简单单例设置模式(饿汉模式):会出现bug
/*public static ConfigManager getInstance(){
if (configManager !=null) {
configManager=new ConfigManager();
}
return configManager;
}*/
//简单单例设置模式(懒汉模式):适用于单线程,效率高
/*public static synchronized ConfigManager getInstance(){
if (configManager !=null) {
configManager=new ConfigManager();
}
return configManager;
}*/
//简单单例设置模式(双重模式):多线程,常用。
public static synchronized ConfigManager getInstance(){
if (configManager ==null) {
synchronized(ConfigManager.class){
if (configManager ==null) {
configManager=new ConfigManager();
}
}
}
return configManager;
}
public String getValue(String key){
return properties.getProperty(key);
}
}
//父类
package com.jdbc.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import com.jdbc.entity.Student;
import com.jdbc.utils.ConfigManager;
import com.jdbc.utils.Constant;
public class BaseStudent {
private static Connection conn=null;
/**
* 获取数据库连接
* 单例模式
* @return
*/
public static Connection getConnection(){
//Connection conn = null;
String driver =ConfigManager.getInstance().getValue("driver");
String url = ConfigManager.getInstance().getValue("url");
String user = ConfigManager.getInstance().getValue("user");
String password = ConfigManager.getInstance().getValue("password");
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/*//连接数据库
public static Connection getConnection(){
//通过反射加载驱动
try {
Class.forName(Constant.driver);
//连接
conn=DriverManager.getConnection(Constant.url, Constant.user, Constant.password);
System.out.println("连接成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}*/
//关闭资源
public static void close(Connection conn,Statement st, ResultSet rs){
try {
if (rs!=null) {
rs.close();
}
if (st!=null) {
st.close();
}
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查询方法
public static ResultSet getResultSet(String sql, Object[] objects){
ResultSet rs=null;
PreparedStatement ps=null;
try {
conn=getConnection();
ps=conn.prepareStatement(sql);
if (objects !=null && objects.length>0) {
for (int i = 0; i < objects.length; i++) {
ps.setObject((i+1), objects[i]);
}
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
}
//接口
package com.jdbc.dao;
import java.util.List;
import com.jdbc.entity.Student;
public interface Studentinter {
//查询
List<Student> selectAllStudents();
}
//实现类
package com.jdbc.dao.imp;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.jdbc.dao.BaseStudent;
import com.jdbc.dao.Studentinter;
import com.jdbc.entity.Student;
public class Studentimp extends BaseStudent implements Studentinter {
@Override
public List<Student> selectAllStudents() {
String sql="select * from student";
List<Student> list=null;
try {
ResultSet rs=this.getResultSet(sql, null);
list=new ArrayList<Student>();
while (rs.next()) {
Student student=new Student();
int studentNo=rs.getInt("studentNo");
String studentName=rs.getString("studentName");
int sex=rs.getInt("sex");
String studentDesc=rs.getString("studentDesc");
student.setStudentNo(studentNo);
student.setStudentName(studentName);
student.setSex(sex);
student.setStudentDesc(studentDesc);
list.add(student);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
//新增server层接口
package com.jdbc.server;
import java.util.List;
import com.jdbc.entity.Student;
public interface Serverinf {
List<Student> selectAllStudents();
}
//新增server层实现类:
package com.jdbc.server.imp;
import java.util.List;
import com.jdbc.dao.imp.Studentimp;
import com.jdbc.entity.Student;
import com.jdbc.server.Serverinf;
public class ServerImp implements Serverinf {
@Override
public List<Student> selectAllStudents() {
Studentimp stu=new Studentimp();
List<Student> list=stu.selectAllStudents();
return list;
}
}
//jsp
<body>
<%
Serverinf server=new ServerImp();
List<Student> list=server.selectAllStudents();
%>
<table border="1">
<tr>
<td>No</td>
<td>Name</td>
<td>sex</td>
<td>Desc</td>
</tr>
<% for(Student student : list) { %>
<tr>
<td><%=student.getStudentNo() %></td>
<td><%=student.getStudentName() %></td>
<td><%=student.getSex() %></td>
<td><%=student.getStudentDesc() %></td>
</tr>
<% }%>
</table>
</body>