自定义mvc项目

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值