Student.java
package com.zking.j2ee.entity;
import java.io.Serializable;
public class Student implements Serializable{
private Integer sid;
private String sname;
private String sex;
private String address;
private Integer age;
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", sex=" + sex + ", address=" + address + ", age=" + age
+ "]";
}
}
BaseDao.java
package com.zking.j2ee.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import com.zking.j2ee.util.DBHelper;
import com.zking.j2ee.util.PageBean;
public class BaseDao<T> {
public static interface CallBack<E>{
public List<E> forEach(ResultSet rs) throws SQLException;
}
public List<T> executeQuery(String sql,PageBean pageBean,CallBack<T> callBack){
//1.绗竴娆℃煡璇㈣繑鍥炴�昏褰曟暟
//2.绗簩娆℃煡璇㈣繑鍥炴寚瀹氶〉鐮佹暟骞舵弧瓒虫潯浠剁殑璁板綍闆�
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;
try {
conn=DBHelper.getConnection();
//鍒ゆ柇鏄惁鍒嗛〉
if(null!=pageBean&&pageBean.isPagination()) {
//绗竴娆℃煡璇㈣繑鍥炴�昏褰曟暟
String countSql=this.getCountSql(sql);
stmt=conn.prepareStatement(countSql);
rs=stmt.executeQuery();
if(rs.next()) {
Object obj=rs.getObject(1);
pageBean.setTotal(Integer.parseInt(obj.toString()));
}
//绗簩娆℃煡璇㈣繑鍥炴寚瀹氶〉鐮佹暟骞舵弧瓒虫潯浠剁殑鍒嗛〉缁撴灉闆�
sql=this.getPagerSql(sql, pageBean);
}
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
//閬嶅巻缁撴灉闆�
return callBack.forEach(rs);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.close(conn, stmt, rs);
}
return null;
}
public int executeUpdate(String sql) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
int n=-1;
try {
conn=DBHelper.getConnection();
ps=conn.prepareStatement(sql);
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}finally {
DBHelper.close(conn, ps, rs);
}
return n;
}
/**
* 灏嗘櫘閫歋QL璇彞杞崲鎴愭煡璇㈡�昏褰曟暟鐨凷QL璇彞
* @param sql
* @return
*/
private String getCountSql(String sql) {
return "select count(1) from ("+sql+") t1";
}
/**
* 灏嗘櫘閫歋QL璇彞杞崲鎴愭煡璇㈠垎椤佃褰曢泦鐨凷QL璇彞
* @param sql
* @param pageBean
* @return
*/
private String getPagerSql(String sql,PageBean pageBean) {
return sql+" Limit "+pageBean.getStartIndex()+","+pageBean.getRows();
}
}
StudentDaoimpl.java
package com.zking.j2ee.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.zking.j2ee.dao.BaseDao;
import com.zking.j2ee.dao.IStudentDao;
import com.zking.j2ee.entity.Student;
import com.zking.j2ee.util.StringUtils;
public class StudentDaoImpl extends BaseDao<Student> implements IStudentDao {
@Override
public int save(Student student) {
String sql="insert into student(sname,sex,address,age) values('"+student.getSname()+"','"+student.getSex()+"','"+student.getAddress()+"',"+student.getAge()+")";
return this.executeUpdate(sql);
}
@Override
public int update(Student student) {
String sql="update student set sname='"+student.getSname()+"',sex='"+student.getSex()+"',address='"+student.getAddress()+"',age="+student.getAge()+" where sid="+student.getSid();
return this.executeUpdate(sql);
}
@Override
public int delete(Student student) {
String sql="delete from student where sid="+student.getSid();
return this.executeUpdate(sql);
}
@Override
public List<Student> list(Student student) throws Exception {
String sql="select * from student where 1=1";
if(StringUtils.isNotBlank(student.getSname())) {
sql+=" and sname like '%"+student.getSname()+"%'";
}
sql+=" order by sid desc";
return this.executeQuery(sql, null, new CallBack<Student>() {
@Override
public List<Student> forEach(ResultSet rs) throws SQLException {
List<Student> students=new ArrayList<Student>();
Student s=null;
while(rs.next()) {
s=new Student();
s.setSid(rs.getInt("sid"));
s.setSname(rs.getString("sname"));
s.setSex(rs.getString("sex"));
s.setAddress(rs.getString("address"));
s.setAge(rs.getInt("age"));
students.add(s);
}
return students;
}
});
}
@Override
public Student singleSelect(Student student) throws Exception {
String sql="select * from student where sid="+student.getSid();
List<Student> studentList = this.executeQuery(sql, null, new CallBack<Student>() {
@Override
public List<Student> forEach(ResultSet rs) throws SQLException {
List<Student> students=new ArrayList<Student>();
Student s=null;
while(rs.next()) {
s=new Student();
s.setSid(rs.getInt("sid"));
s.setSname(rs.getString("sname"));
s.setSex(rs.getString("sex"));
s.setAddress(rs.getString("address"));
s.setAge(rs.getInt("age"));
students.add(s);
}
return students;
}
});
if(null!=studentList&&studentList.size()>0) {
return studentList.get(0);
}else {
return null;
}
}
}
StudentAction.java
package com.zking.j2ee.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zking.j2ee.dao.IStudentDao;
import com.zking.j2ee.dao.impl.StudentDaoImpl;
import com.zking.j2ee.entity.Student;
import com.zking.mvc.framework.DispatcherServlet;
import com.zking.mvc.framework.DriverModel;
public class StudentAction extends DispatcherServlet implements DriverModel<Student>{
private IStudentDao stuDao=new StudentDaoImpl();
private Student student =new Student();
@Override
public Student getModel() {
// TODO Auto-generated method stub
return student;
}
public String merge(HttpServletRequest req,HttpServletResponse resp) {
int n=-1;
if(null!=student.getSid()&&student.getSid()!=0) {
// 如果有id那就是修改
n = stuDao.update(student);
}else {
// 如果没有id那就是新增
n=stuDao.save(student);
}
if(n>0) {
// 成功
req.getSession().setAttribute("s",null);
return "list";
}else {
// 失败
return "edit";
}
}
public String list(HttpServletRequest req,HttpServletResponse resp){
try {
List<Student> students = stuDao.list(student);
req.getSession().setAttribute("students", students);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "index";
}
public String del(HttpServletRequest req,HttpServletResponse resp){
int n = stuDao.delete(student);
if(n<=0) {
try {
PrintWriter out = resp.getWriter();
out.write("<script>alert('删除失败!')</script>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "index";
}else {
return "list";
}
}
public String singleSelect(HttpServletRequest req,HttpServletResponse resp){
try {
Student s = stuDao.singleSelect(student);
req.getSession().setAttribute("s", s);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "single";
}
public String goUpdate(HttpServletRequest req,HttpServletResponse resp) {
try {
Student s = stuDao.singleSelect(student);
req.getSession().setAttribute("s", s);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "edit";
}
}
mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ELEMENT forward EMPTY>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (true|false) "true"
>
]>
<config>
<action type="com.zking.j2ee.action.StudentAction" path="/studentAction">
<forward name="index" path="/index.jsp"/>
<forward name="edit" path="/edit.jsp"/>
<forward name="single" path="/single.jsp"/>
<forward name="list" path="/studentAction.action?methodName=list"/>
</action>
</config>
edit.java
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<form action="studentAction.action" method="post">
<input type="hidden" name="methodName" value="merge"/>
<input type="hidden" name="sid" value="${s.sid }"/>
学生姓名:<input type="text" name="sname" value="${s.sname }"/><br/>
学生性别:<input type="text" name="sex" value="${s.sex }"/><br/>
学生地址:<input type="text" name="address" value="${s.address }"/><br/>
学生年龄:<input type="text" name="age" value="${s.age }"/><br/>
<input type="submit"/>
</form>
</body>
</html>
index.java
<%@ 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>
<h1 align="center">
Y1-J2EE阶段机试,当前时间:<%=System.currentTimeMillis()%></h1>
<form action="studentAction.action" method="post">
<input type="hidden" name="methodName" value="list" /> <input
name="sname" /><input type="submit" />
</form>
<a href="edit.jsp">新增</a>
<table border="1" align="center" width="80%">
<tr>
<td>学生编号</td>
<td>学生姓名</td>
<td>学生性别</td>
<td>学生地址</td>
<td>学生年龄</td>
<td>操作</td>
</tr>
<c:forEach items="${students }" var="i">
<tr>
<td>${i.sid }</td>
<td>${i.sname }</td>
<td>${i.sex }</td>
<td>${i.address }</td>
<td>${i.age }</td>
<td><a href="studentAction.action?methodName=goUpdate&sid=${i.sid }">修改</a>
<a href="JavaScript:mya(${i.sid })">删除</a>
<a href="studentAction.action?methodName=singleSelect&sid=${i.sid }">详情</a></td>
</tr>
</c:forEach>
</table>
<script type="text/javascript">
function mya(sid){
var f=confirm("是否确认删除");
if(f){
location.href="studentAction.action?methodName=del&sid="+sid;
}
}
</script>
</body>
</html>
single.java
<%@ 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>
<form action="">
<input type="text" name="ser"/><input type="submit" value="查询"/><a href="addStu.jsp">新增</a>
</form>
<table border="1" width="100%">
<tr>
<td>学生编号</td>
<td>学生姓名</td>
<td>学生性别</td>
<td>学生地址</td>
<td>学生年龄</td>
<td>操作</td>
</tr>
<tr>
<td>${s.sid }</td>
<td>${s.sname }</td>
<td>${s.sex }</td>
<td>${s.address }</td>
<td>${s.age }</td>
</tr>
</table>
</body>
</html>