将要用到的增加,修改,删除,查询语句提前写好(这里的删除的语句跟sql和oracle的代码不一样了要加上一个from)
(主要要建的是web的动态项目 Dynamic Web Project)
(我这里是分包建类 action指的是处理请求的处理层 dao指的是对数据库进行增删改查的方法类 entity指的是实体类 用来存放数据 uitl指的是数据库连接类)
这里是直接调用的连接类
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* 提供了一组获得或关闭数据库对象的方法
*
*/
public class DBAccess {
private static String driver;
private static String url;
private static String user;
private static String password;
static {// 静态块执行一次,加载 驱动一次
try {
InputStream is = DBAccess.class
.getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(is);
driver = properties.getProperty("driver");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("pwd");
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 获得数据连接对象
*
* @return
*/
public static Connection getConnection() {
try {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static void close(ResultSet rs) {
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
public static void close(Statement stmt) {
if (null != stmt) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
public static void close(Connection conn) {
if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
public static void close(Connection conn, Statement stmt, ResultSet rs) {
close(rs);
close(stmt);
close(conn);
}
public static boolean isOracle() {
return "oracle.jdbc.driver.OracleDriver".equals(driver);
}
public static boolean isSQLServer() {
return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver);
}
public static boolean isMysql() {
return "com.mysql.jdbc.Driver".equals(driver);
}
public static void main(String[] args) {
Connection conn = DBAccess.getConnection();
DBAccess.close(conn);
System.out.println("isOracle:" + isOracle());
System.out.println("isSQLServer:" + isSQLServer());
System.out.println("isMysql:" + isMysql());
System.out.println("数据库连接(关闭)成功");
}
}
注意url是否与主机数据库名一致 ,user跟pwd是否正确 (我安装mysql的时候没有设置密码所以直接为空)
#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/tanle?useUnicode=true&characterEncoding=UTF-8
user=root
pwd=
实体类数据类型要与数据库一致,属性名最好一致(我的数据库字段仅供参考)
仅供参考,具体与自身的为主(实体类主要用来实例化存取数据 有set和get方法 还有两个构造方法 一个无参一个有参)
import java.io.Serializable;
public class Student implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;
private String job;
private String company;
private String address;
private String salary;
private String url;
private String limit;
private String time;
private String desc;
private String jobHandle;
private String addressHandle;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getLimit() {
return limit;
}
public void setLimit(String limit) {
this.limit = limit;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getJobHandle() {
return jobHandle;
}
public void setJobHandle(String jobHandle) {
this.jobHandle = jobHandle;
}
public String getAddressHandle() {
return addressHandle;
}
public void setAddressHandle(String addressHandle) {
this.addressHandle = addressHandle;
}
public Student() {
}
public Student(String id, String job, String company, String address, String salary, String url, String limit,
String time, String desc, String jobHandle, String addressHandle) {
this.id = id;
this.job = job;
this.company = company;
this.address = address;
this.salary = salary;
this.url = url;
this.limit = limit;
this.time = time;
this.desc = desc;
this.jobHandle = jobHandle;
this.addressHandle = addressHandle;
}
}
连接数据库操作类对数据库的数据进行增加删除修改
//模糊查询
public List<Student> list(String sname,PageBean pageBean){
List<Student> list=new ArrayList<Student>();
//模糊查询的条件
String sql="select * from t_solr_job";
if(sname!=null) {
sql="select * from t_solr_job where company like '%"+sname+"%'";
}
return this.query(sql, pageBean, new Callback<Student>() {
@Override
public List<Student> foreach(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
Student stu=null;
while(rs.next()) {
stu=new Student();
stu.setId(rs.getString("id"));
stu.setJob(rs.getString("job"));
stu.setCompany(rs.getString("company"));
stu.setAddress(rs.getString("address"));
stu.setSalary(rs.getString("salary"));
stu.setUrl(rs.getString("url"));
stu.setLimit(rs.getString("limito"));
stu.setTime(rs.getString("time"));
stu.setDesc(rs.getString("descc"));
stu.setJobHandle(rs.getString("jobHandle"));
stu.setAddressHandle(rs.getString("addressHandle"));
list.add(stu);
}
return list;
}
});
}
public int delete(String id){
int n=0;
Connection con=null;
PreparedStatement ps=null;
try {
con=DBAccess.getConnection();
String sql="delete from t_solr_job where id="+id;
ps=con.prepareStatement(sql);
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBAccess.close(con, ps, null);
}
return n;
}
//单个查询
public List<Student> list(String id){
List<Student> ls=new ArrayList<Student>();
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con=DBAccess.getConnection();
String sql="select * from t_solr_job where id="+id;
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()) {
Student stu=new Student();
stu.setId(rs.getString("id"));
stu.setJob(rs.getString("job"));
stu.setCompany(rs.getString("company"));
stu.setAddress(rs.getString("address"));
stu.setSalary(rs.getString("salary"));
stu.setUrl(rs.getString("url"));
stu.setLimit(rs.getString("limito"));
stu.setTime(rs.getString("time"));
stu.setDesc(rs.getString("descc"));
stu.setJobHandle(rs.getString("jobHandle"));
stu.setAddressHandle(rs.getString("addressHandle"));
ls.add(stu);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBAccess.close(con, ps, rs);
}
return ls;
}
//修改
public int update(String id,Student stu){
int n=0;
Connection con=null;
PreparedStatement ps=null;
try {
con=DBAccess.getConnection();
String sql="update t_solr_job set job=?,company=?,address=?,salary=?,url=?,limito=? where id="+id;
ps=con.prepareStatement(sql);
ps.setString(1, stu.getJob());
ps.setString(2, stu.getCompany());
ps.setString(3, stu.getAddress());
ps.setString(4, stu.getSalary());
ps.setString(5, stu.getUrl());
ps.setString(6, stu.getLimit());
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBAccess.close(con, ps, null);
}
return n;
}
//增加
public int insert(Student stu){
int n=0;
Connection con=null;
PreparedStatement ps=null;
try {
con=DBAccess.getConnection();
String sql="insert into t_solr_job(id,job,company,address,salary,url,limito,time,descc,jobHandle,addressHandle)values(?,?,?,?,?,?,?,?,?,?,?)";
ps=con.prepareStatement(sql);
ps.setString(1, stu.getId());
ps.setString(2, stu.getJob());
ps.setString(3, stu.getCompany());
ps.setString(4, stu.getAddress());
ps.setString(5, stu.getSalary());
ps.setString(6, stu.getUrl());
ps.setString(7, stu.getLimit());
ps.setString(8, stu.getTime());
ps.setString(9, stu.getDesc());
ps.setString(10, stu.getJobHandle());
ps.setString(11, stu.getAddressHandle());
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBAccess.close(con, ps, null);
}
return n;
}
我这里写了分页(pagebean)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao<E> {
public List<E> query(String sql,PageBean pageBean,Callback<E> callback){
List<E> ls=new ArrayList<E>();
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
//第一次查询 查总记录数
if(null!=pageBean&&pageBean.isPagination()) {
try {
con=DBAccess.getConnection();
String countsql=this.getCountSql(sql);
ps=con.prepareStatement(countsql);
rs=ps.executeQuery();
if(rs.next()) {
pageBean.setTotal(rs.getInt(1));
}
} catch (SQLException e) {
// TODO: handle exception
throw new RuntimeException();
}finally {
DBAccess.close(null, ps, rs);
}
}
//第二次查询 查询满足条件的记录数
if(null!=pageBean&&pageBean.isPagination()) {
sql=this.getPageSql(sql, pageBean);
}
try {
con=DBAccess.getConnection();
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
return callback.foreach(rs);
} catch (SQLException e) {
// TODO: handle exception
throw new RuntimeException();
}finally {
DBAccess.close(null, ps, rs);
}
}
/**
* 把普通sql转成查总记录数sql
* @param sql
* @return
*/
public String getCountSql(String sql) {
String countSql="select count(*) from ("+sql+") t";
return countSql;
}
/**
* 查满足分页的sql
* @param sql
* @return
*/
public String getPageSql(String sql,PageBean pageBean) {
String pageSql=sql+" limit "+pageBean.getStartIndex()+","+pageBean.getRows()+"";
return pageSql;
}
}
这里我写了6个Servlect
StudentServlet查询所有的赋值到界面
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class StudentServlet
*/
@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
StudentDao studentDao=new StudentDao();
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
/*//获取项目名
String contextPath = request.getContextPath();
//获取请求路径
String servletPath = request.getServletPath();*/
//Student stu=new Student();
//根据参数名获取一组参数
String name=request.getParameter("name");
// String[] likes = request.getParameterValues("likes");
//获取请求的所有数据
/*Map parameterMap=request.getParameterMap();
Set> entrySet = parameterMap.entrySet();
for(Entry entry:entrySet) {
System.out.println(entry.getKey());
System.out.println(Arrays.toString(entry.getValue()));
}*/
if("".equals(name)) {
name=null;
}
PageBean pageBean=new PageBean();
pageBean.initPageBean(request, pageBean);
List<Student> list = studentDao.list(name, pageBean);
request.setAttribute("list", list);
request.setAttribute("pageBean", pageBean);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
StudentServletDelete删除数据
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class StudentServletDelete
*/
@WebServlet("/StudentServletDelete")
public class StudentServletDelete extends HttpServlet {
private static final long serialVersionUID = 1L;
StudentDao studentDao=new StudentDao();
/**
* @see HttpServlet#HttpServlet()
*/
public StudentServletDelete() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
String id = request.getParameter("id");
PageBean pageBean=new PageBean();
pageBean.initPageBean(request, pageBean);
int n = studentDao.delete(id);
if(n<0) {
response.getWriter().print("");
}else {
response.getWriter().print("");
}
}
}
StudentServletInsert新增数据
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class StudentServletInsert
*/
@WebServlet("/StudentServletInsert")
public class StudentServletInsert extends HttpServlet {
private static final long serialVersionUID = 1L;
StudentDao studentDao=new StudentDao();
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
String id=request.getParameter("id");
String job=request.getParameter("job");
String company=request.getParameter("company");
String address=request.getParameter("address");
String salary=request.getParameter("salary");
String url=request.getParameter("url");
String limito=request.getParameter("limito");
String time=request.getParameter("time");
String descc=request.getParameter("descc");
String jobHandle=request.getParameter("jobhandle");
String addressHandle=request.getParameter("addresshandel");
Student stu=new Student(id, job, company, address, salary, url, limito, time, descc, jobHandle, addressHandle);
int n = studentDao.insert(stu);
if(n<0) {
response.getWriter().print("");
}else {
response.getWriter().print("");
}
}
}
StudentServletUpcx修改之前的查询赋值
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class StudentServletUpcx
*/
@WebServlet("/StudentServletUpcx")
public class StudentServletUpcx extends HttpServlet {
private static final long serialVersionUID = 1L;
StudentDao studentDao=new StudentDao();
/**
* @see HttpServlet#HttpServlet()
*/
public StudentServletUpcx() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id=request.getParameter("id");
List<Student> list = studentDao.list(id);
request.setAttribute("list", list);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
}
StudentServletUpdate修改
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class StudentServletUpdate
*/
@WebServlet("/StudentServletUpdate")
public class StudentServletUpdate extends HttpServlet {
private static final long serialVersionUID = 1L;
StudentDao studentDao=new StudentDao();
/**
* @see HttpServlet#HttpServlet()
*/
public StudentServletUpdate() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
String id=request.getParameter("id");
String job=request.getParameter("job");
String company=request.getParameter("company");
String address=request.getParameter("address");
String salary=request.getParameter("salary");
String url=request.getParameter("url");
String limito=request.getParameter("limito");
Student stu=new Student(id, job, company, address, salary, url, limito, null, null, null, null);
int n = studentDao.update(id, stu);
if(n<0) {
response.getWriter().print("");
}else {
response.getWriter().print("");
}
}
}
主界面(数据显示界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test="${empty list }">
<jsp:forward page="StudentServlet"></jsp:forward>
</c:if>
<form action="StudentServlet" method="post">
公司名称:<input type="text" name="name"/>
<input type="submit" value-"查询"/>
</form>
<table border="2px" style="width: 99%">
<tr>
<td>编号</td>
<td>类型</td>
<td>公司名称</td>
<td>公司地址</td>
<td>工资</td>
<td>网址</td>
<td>学历要求</td>
<td>时间</td>
<td>操作</td>
</tr>
<c:forEach items="${list }" var="i">
<tr>
<td>${i.id }</td>
<td>${i.job }</td>
<td>${i.company }</td>
<td>${i.address }</td>
<td>${i.salary }</td>
<td>${i.url }</td>
<td>${i.limit }</td>
<td>${i.time }</td>
<td>
<a href="StudentServletDelete?id=${i.id }" onclick="return confirm('您确定要删除吗?')">删除</a>
<a href="StudentServletUpcx?id=${i.id }">修改</a>
<a href="StudentServletDetails?id=${i.id }">查看详情</a>
</td>
</tr>
</c:forEach>
</table>
当前第${pageBean.page }页 共${pageBean.maxPage }页 共${pageBean.total }
<a href='javascript:doForward(1)'>首页</a>
<a href='javascript:doForward("${pageBean.frontPage }")'>上一页</a>
<a href='javascript:doForward("${pageBean.nextPage }")'>下一页<a>
<a href='javascript:doForward("${pageBean.maxPage }")'>尾页<a>
<form id="form" action="${pageBean.url }" method="post">
<input type="text" name="page" id="page"/>
</form>
<script type="text/javascript">
function doForward(page){
console.log(page);
document.getElementById("page").value=page;
document.getElementById("form").submit();
}
</script>
<br/>
<button><a href="add.jsp">增加</a></button>
</body>
</html>
写代码之前要理清自己的思路,按照自己的步骤一步一步来,就会很清晰。写一片区域运行测试一下。要细心不能太粗心。
谢谢观看昂!