大三暑假在实习,第二周已经结束了,现在可以自己动手写一些比较小的工程。就是写出来调试真的好费人。
简单介绍一下,有一个简单的学生信息表,数据库设计如下:
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821131945214-385853375.png)
然后,根据MVC进行分层处理:
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821132219855-351912235.png)
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821132810511-2108171913.png)
程序运行结果:
1、查询数据库的结果。
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821134739292-1324251131.png)
2、点击新增
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821134754480-381692482.png)
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821134803792-1195458443.png)
3、点击编辑,会获取到Id,进行对应的编辑
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821134811370-313129125.png)
![](https://images2015.cnblogs.com/blog/899690/201608/899690-20160821134818839-1434672686.png)
4、点击删除,直接删除。
package com.mm.bean;
public class Student {
int id;//学号
String name;//姓名
int age;//年龄
String classes;//班级
public Student(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
package com.mm.Dao;
import java.util.List;
import com.mm.bean.Student;
public interface IStuDao {
/**
* 新增一个学生
* @param stu
*/
public void addstu(Student stu);
/**
* 修改一个学生
* @param stu
*/
public void updatestu(Student stu);
/**
* 通过ID删除一个学生
* @param id
*/
public void delstu(int id);
/**
* 找到所有的学生
* @return 返回一个集合
*/
public List<Student> findall();
/**
* 通过id找到一个学生
* @param id
* @return
*/
public Student findStubyId(int id);
}
package com.mm.Dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mm.Dao.IStuDao;
import com.mm.bean.Student;
import com.mm.db.JDBCUtils;
public class StuDaoImpl implements IStuDao {
public void addstu(Student stu) {
// TODO Auto-generated method stub
String s1 = "INSERT INTO student (id,name,age,class) VALUES(?,?,?,?)";
try {
Connection con = JDBCUtils.getconnection();
PreparedStatement prep = con.prepareStatement(s1);
prep.setInt(1, stu.getId());
prep.setString(2, stu.getName());
prep.setInt(3, stu.getAge());
prep.setString(4, stu.getClasses());
prep.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtils.release();
}
}
public void updatestu(Student stu) {
String s1 = "update student set name=?,age=?,class=? where id=?";
try {
Connection con = JDBCUtils.getconnection();
PreparedStatement prep = con.prepareStatement(s1);
prep.setInt(4, stu.getId()); //第4个问号的值
prep.setString(1, stu.getName());
prep.setInt(2, stu.getAge());
prep.setString(3, stu.getClasses());
prep.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtils.release();
}
}
public void delstu(int id){
String s5 = "delete from student where id =?" ;
Connection con = null;
try {
con = JDBCUtils.getconnection();
PreparedStatement prep = con.prepareStatement(s5);
prep.setInt(1,id);
prep.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtils.release();
}
}
public List<Student> findall() {
String s2 = "select * from student";
Connection con = null;
List<Student> list = new ArrayList();
try {
con = com.mm.db.JDBCUtils.getconnection();
PreparedStatement ps = con.prepareStatement(s2);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
list.add(toStu(rs));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtils.release();
}
return list;
}
//将一行数据封装成一个对象
private Student toStu(ResultSet rs) throws SQLException {
Student s = new Student();
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
s.setAge(rs.getInt("age"));
s.setClasses(rs.getString("class"));
return s;
}
public Student findStubyId(int id) {
String s3 = "select * from student where id =" + id;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Student> li = new ArrayList();
try {
con = com.mm.db.JDBCUtils.getconnection();
ps = con.prepareStatement(s3);
rs = ps.executeQuery();
while (rs.next()) {
return toStu(rs);
} } catch (SQLException e) { // TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtils.release();
}
return null;
}
package com.mm.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { /** * @param args * @throws SQLException */ public static Connection getconnection() throws SQLException { try { Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "mxning", "mxning"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void release(ResultSet rs,PreparedStatement ps,Connection con){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(ps!=null){ try { ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(con!=null){ try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.mm.sevlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mm.Dao.IStuDao;
import com.mm.Dao.impl.StuDaoImpl;
import com.mm.bean.Student;
public class studentServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
IStuDao sd = new StuDaoImpl();
String op = request.getParameter("op");
if(op==null) op = "list";
if("list".equals(op)){
//接收 显示所有的请求信息
List<Student> list = sd.findall();
request.setAttribute("list", list);
response.sendRedirect("studentlist.jsp");
return ;
}else if("add".equals(op)){
//若是新增,则跳转到新增界面处理
response.sendRedirect("studentadd.jsp");
return ;
}else if("edit".equals(op)){
//取到要编辑的数据,然后 若command=view 则转向view.jsp;否则跳转到编辑页面
String id = request.getParameter("id");
//System.out.println(id);
Student s = sd.findStubyId(Integer.parseInt(id));
request.setAttribute("stu", s);
String command = request.getParameter("command");
if("view".equals(command)){
request.getRequestDispatcher("studentedit.jsp").forward(request, response);
//response.sendRedirect("studentedit.jsp");
return ;
}else{
response.sendRedirect("studentview.jsp?id="+id);
return ;
}
}else if("delete".equals(op)){
//删除数据,然后跳转到列表页面
//1.获取参数值
String id =request.getParameter("id");
//2.调用dao删除指定的数据
sd.delstu(Integer.parseInt(id));
//3.通过response返回到列表页面
response.sendRedirect("studentServlet?op=list");
return ;
}else if("store".equals(op)){
//若是新增,则add;若是编辑,则调用update;然后跳转到列表页面
//1.获取参数值
String id =request.getParameter("id");
String name = request.getParameter("name");
String age = request.getParameter("age");
String classes = request.getParameter("class");
System.out.println(id+name+age);
System.out.println(classes+"sssssssssssssss");
//2.封装成对象
Student obj =new Student();
obj.setName(name);
obj.setAge(Integer.parseInt(age));
obj.setClasses(classes);
if(id==null||"".equals(id)){
//新增
sd.addstu(obj);
//System.out.println("sssssssssssssssssss");
}else{
//编辑
obj.setId(Integer.parseInt(id));
sd.updatestu(obj);
}
response.sendRedirect("studentServlet?op=list");
return ;
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
<%@ page language="java"
import="java.util.*,com.mm.Dao.*,com.mm.Dao.impl.*,com.mm.bean.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
IStuDao is = new StuDaoImpl();
List<Student> list = is.findall();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>学生列表显示界面</title>
</head>
<body>
<table align="center" border="1" cellspacing="0">
<tr>
<td colspan="5"><button
οnclick="javascript:document.location.href='studentServlet?op=add';">新增</button>
</td>
</tr>
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>班级</th>
<th>操作</th>
</tr>
<%
int i = 1;
for (Student st : list) {
%>
<tr>
<td><%=i%></td>
<td>
<a href="studentview.jsp?op=edit&id=<%=st.getId()%>"><%=st.getName()%></a>
</td>
<td><%=st.getAge()%></td>
<td><%=st.getClasses()%></td>
<td><a href="studentServlet?op=edit&command=view&id=<%=st.getId()%>">编辑</a>
<a href="studentServlet?op=delete&id=<%=st.getId()%>">删除</a>
</td>
</tr>
<%
i++;
}
%>
</table>
</body>
</html>
<%@ page language="java" import="java.util.*,com.mm.Dao.*,com.mm.Dao.impl.*,com.mm.bean.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String id = request.getParameter("id");
IStuDao is = new StuDaoImpl();
Student s = is.findStubyId(Integer.parseInt(id));
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>每个学生查看界面</title>
</head>
<body>
<h3 align="center">学生查看</h3>
<table align="center" width="60%" border="1" cellspacing="0">
<tr><td colspan="2"><button οnclick="javascript:history.back(-1);">返回</button></td></tr>
<tr>
<td>姓名</td>
<td><%=s.getName()%></td>
</tr>
<tr>
<td>年龄</td>
<td><%=s.getAge()%></td>
</tr>
<tr>
<td>班级</td>
<td><%=s.getClasses() %></td>
</tr>
</table>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'studentadd.jsp' starting page</title>
</head>
<body>
<form action="studentServlet?1=1&op=store" method="post">
<table border = "1" cellspacing = "0" align = "center">
<tr>
<th colspan="2" align="left"><button type="submit">提交</button></button>
</th>
</tr>
<tr><td>姓名</td><td><input type = "text" name = "name" /></td></tr>
<tr><td>年龄</td><td><input type = "text" name = "age" /></td></tr>
<tr><td>班级</td><td><input type = "text" name = "class" /></td></tr>
</table>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*,com.mm.bean.*,com.mm.sevlet.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>修改学生界面</title>
</head>
<body>
<%
Student s = (Student) request.getAttribute("stu");
%>
<form action="studentServlet?op=store" method = "post">
<input type="hidden" name="id" value="<%=s.getId()%>" />
<table border="1" align="center" cellspacing="0">
<tr>
<td colspan="2"><button type="submit">提交</button>
<button type="button" οnclick="javascript:history.back(-1);">返回</button>
</td>
</tr>
<tr>
<td>姓名</td>
<td><input type="text" name="name" value="<%=s.getName()%>" />
</td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" name="age" value="<%=s.getAge()%>" />
</td>
</tr>
<tr>
<td>班级</td>
<td><input type="text" name="class" value="<%=s.getClasses()%>" />
</td>
</tr>
</table>
</form>
</body>
</html>