MVC模式的学生信息增删改查
准备:建一个名为 userdb的数据库。建一个student表,有stuid,stuname,gender三个字段。其中stuid为主键。j加入相应的驱动包,相应的JSTL标签
先看目录结构
代码:
DDUtil.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @author sawyer 2014下午1:20:16 * */ public class DBUtil { private Connection conn = null ; private PreparedStatement stmt = null ; private ResultSet rs = null ; private static String driver = "com.mysql.jdbc.Driver" ; private String url = "jdbc:mysql://localhost:3306/userdb" ; private String user = "root" ; private String password = "orcl" ; /** * Get the driver */ static { } /** * Connect the database */ public Connection getCon() { try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { conn = (Connection) DriverManager .getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * @param sql * @param obj * Update */ /* public int update(String sql, Object... obj) { int count = 0; conn = getCon(); try { stmt = conn.prepareStatement(sql); if (obj != null) { for (int i = 0; i < obj.length; i++) { stmt.setObject(i + 1, obj[i]); } } count = stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { close(); } return count; } */ /** * @param sql * @param obj * Query */ /* public ResultSet Query(String sql, Object... obj) { conn = getCon(); try { stmt = conn.prepareStatement(sql); while (obj != null) { for (int i = 0; i < obj.length; i++) { stmt.setObject(i + 1, obj[i]); } } rs = stmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } finally { close(); } return rs; }*/ /** * CLose the resource */ public void close() { try { if (rs != null ) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (stmt != null ) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null ) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } } |
Student.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package entity; public class Student { private int stuid; private String stuname; private String gender; public int getStuid() { return stuid; } public void setStuid( int stuid) { this .stuid = stuid; } public String getStuname() { return stuname; } public void setStuname(String stuname) { this .stuname = stuname; } public String getGender() { return gender; } public void setGender(String gender) { this .gender = gender; } public Student() { } public Student( int stuid, String stuname, String gender) { super (); stuid = this .stuid; stuname = this .stuname; gender = this .gender; } } |
Model.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | package model; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import entity.Student; import util.DBUtil; public class Model { private Statement sta; private ResultSet rs; PreparedStatement ps; DBUtil u= new DBUtil(); public int Insert( int stuid,String stuname,String gender) throws SQLException{ Connection conn=u.getCon(); String sql= "insert student values(?,?,?)" ; ps=conn.prepareStatement(sql); ps.setInt( 1 ,stuid); ps.setString( 2 ,stuname); ps.setString( 3 ,gender); int a=ps.executeUpdate(); return a; } public int delete( int stuid) throws SQLException{ Connection conn=u.getCon(); String sql= "delete from student where stuid=?" ; ps=conn.prepareStatement(sql); ps.setInt( 1 ,stuid); int a=ps.executeUpdate(); return a; } public int update( int stuid,String stuname,String gender) throws SQLException{ Connection conn=u.getCon(); String sql= "update student set stuname=?,gender=? where stuid=?" ; ps=conn.prepareStatement(sql); ps.setInt( 3 ,stuid); ps.setString( 1 ,stuname); ps.setString( 2 ,gender); int a=ps.executeUpdate(); return a; } public List<Student> queryAll() throws SQLException{ List<Student> students= new ArrayList<Student>(); Connection conn=u.getCon(); String sql= "select * from student" ; sta=conn.createStatement(); rs=sta.executeQuery(sql); while (rs.next()){ Student student= new Student(); student.setStuid(rs.getInt( "stuid" )); student.setStuname(rs.getString( "stuname" )); student.setGender(rs.getString( "gender" )); students.add(student); } return students; } public Student queryById( int stuid) throws SQLException{ Student student= new Student(); Connection conn=u.getCon(); String sql= "select * from student where stuid=?" ; ps=conn.prepareStatement(sql); ps.setInt( 1 ,stuid); rs=ps.executeQuery(); if (rs.next()){ student.setStuid(rs.getInt( "stuid" )); student.setStuname(rs.getString( "stuname" )); student.setGender(rs.getString( "gender" )); } return student; } } |
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>servlet.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>QueryAll</servlet-name> <servlet-class>servlet.QueryAll</servlet-class> </servlet> <servlet-mapping> <servlet-name>QueryAll</servlet-name> <url-pattern>/QueryAll.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>Insert</servlet-name> <servlet-class>servlet.Insert</servlet-class> </servlet> <servlet-mapping> <servlet-name>Insert</servlet-name> <url-pattern>/Insert.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>SelectUpdate</servlet-name> <servlet-class>servlet.SelectUpdate</servlet-class> </servlet> <servlet-mapping> <servlet-name>SelectUpdate</servlet-name> <url-pattern>/SelectUpdate.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>Update</servlet-name> <servlet-class>servlet.Update</servlet-class> </servlet> <servlet-mapping> <servlet-name>Update</servlet-name> <url-pattern>/Update.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>Delete</servlet-name> <servlet-class>servlet.Delete</servlet-class> </servlet> <servlet-mapping> <servlet-name>Delete</servlet-name> <url-pattern>/Delete.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
QueryAll.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Student; import model.Model; @SuppressWarnings ( "serial" ) public class QueryAll extends HttpServlet{ public QueryAll(){ super (); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ Model model= new Model(); try { List<Student> list=model.queryAll(); request.getSession().setAttribute( "list" , list); } catch (Exception e){ e.printStackTrace(); } response.sendRedirect( "index.jsp" ); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ this .doGet(request, response); } } |
Insert.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.Model; @SuppressWarnings ( "serial" ) public class Insert extends HttpServlet{ public Insert(){ super (); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ Model model = new Model(); int stuid = Integer.parseInt(request.getParameter( "stuid" )); String stuname = request.getParameter( "stuname" ); String gender = request.getParameter( "gender" ); try { model.Insert(stuid, stuname, gender); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( "QueryAll.do" ); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ this .doGet(request, response); } } |
Delete.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.Model; @SuppressWarnings ( "serial" ) public class Delete extends HttpServlet{ public Delete(){ super (); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ Model model= new Model(); int stuid=Integer.parseInt(request.getParameter( "stuid" )); /*String stuname=request.getParameter("stuname"); String gender=request.getParameter("gender");*/ try { model.delete(stuid); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( "QueryAll.do" ); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ this .doGet(request, response); } } |
SelectUpdate.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Student; import model.Model; @SuppressWarnings ( "serial" ) public class SelectUpdate extends HttpServlet{ public SelectUpdate(){ super (); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ int stuid=Integer.parseInt(request.getParameter( "stuid" )); Model model= new Model(); try { Student student=model.queryById(stuid); request.setAttribute( "student" , student); int id=Integer.parseInt(request.getParameter( "id" )); if (id== 1 ){ request.getRequestDispatcher( "update.jsp" ).forward(request, response); } else if (id== 2 ){ request.getRequestDispatcher( "delete.jsp" ).forward(request, response); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ this .doGet(request, response); } } |
Update.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.Model; @SuppressWarnings ( "serial" ) public class Update extends HttpServlet{ public Update(){ super (); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ Model model= new Model(); int stuid=Integer.parseInt(request.getParameter( "stuid" )); String stuname=request.getParameter( "stuname" ); String gender=request.getParameter( "gender" ); try { model.update(stuid, stuname, gender); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.sendRedirect( "QueryAll.do" ); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ this .doGet(request, response); } } |
EncodingFilter.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package servlet; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { private String encoding = null ; public void init(FilterConfig config) throws ServletException { this .encoding = config.getInitParameter( "encoding" ); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding( this .encoding); response.setCharacterEncoding( this .encoding); chain.doFilter(request, response); } public void destroy() { this .encoding = null ; } } |
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page language="java" import="model.*,entity.*,servlet.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %> <% 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 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>学生信息列表</h1> <a href="insert.jsp">新增</a><br><hr> <pg:pager maxPageItems="10" url="index.jsp"> <table border="1"> <tr><td>学号</td><td>姓名</td><td>性别</td><td>修改</td><td>删除</td></tr> <c:forEach items="${sessionScope.list}" var="student"> <pg:item> <tr> <td>${student.stuid}</td> <td>${student.stuname}</td> <td>${student.gender}</td> <td><a href="SelectUpdate.do?id=1&stuid=${student.stuid}">修改</a></td> <td><a href="SelectUpdate.do?id=2&stuid=${student.stuid}">删除</a></td> </tr> </pg:item> </c:forEach> <tr> <td> <pg:index> <pg:first><a href="${pageUrl}">第一页</a></pg:first> <pg:prev><a href="${pageUrl}">上一页</a></pg:prev> <pg:pages><a href="${pageUrl}">${pageNumber}</a></pg:pages> <pg:next><a href="${pageUrl}">下一页</a></pg:next> <pg:last><a href="${pageUrl}">最后一页</a></pg:last> </pg:index> </td> </tr> </table> </pg:pager> </body> </html>
delete.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <%@ 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 'delete.jsp' starting page</title> <meta http-equiv= "pragma" content= "no-cache" > <meta http-equiv= "cache-control" content= "no-cache" > <meta http-equiv= "expires" content= "0" > <meta http-equiv= "keywords" content= "keyword1,keyword2,keyword3" > <meta http-equiv= "description" content= "This is my page" > <!-- <link rel= "stylesheet" type= "text/css" href= "styles.css" > --> </head> <body> <h1>删除数据</h1> <form action= "Delete.do" method= "post" > <table> <tr> <td>请输入数据:</td> <td>学号:<input type= "text" name= "stuid" id= "stuid" value= "${student.stuid}" > </td> <td>姓名:<input type= "text" name= "stuname" id= "stuname" value= "${student.stuname}" > </td> <td>性别:<input type= "text" name= "gender" id= "gender" value= "${student.gender}" > </td> </tr> <tr><td><input type= "submit" value= "删除" ></td> </table> </form> </body> </html> |
insert.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <%@ 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 'insert.jsp' starting page</title> <meta http-equiv= "pragma" content= "no-cache" > <meta http-equiv= "cache-control" content= "no-cache" > <meta http-equiv= "expires" content= "0" > <meta http-equiv= "keywords" content= "keyword1,keyword2,keyword3" > <meta http-equiv= "description" content= "This is my page" > <!-- <link rel= "stylesheet" type= "text/css" href= "styles.css" > --> </head> <body> <h1>增加数据</h1> <form action= "Insert.do" method= "post" > <table> <tr> <td>请插入数据:</td> <td>学号:<input type= "text" name= "stuid" id= "stuid" > </td> <td>姓名:<input type= "text" name= "stuname" id= "stuname" > </td> <td>性别:<input type= "text" name= "gender" id= "gender" > </td> <td><input type= "submit" value= "插入" id= "submit" > </td> </tr> </table> </form> </body> </html> |
update.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <%@ 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 'update.jsp' starting page</title> <meta http-equiv= "pragma" content= "no-cache" > <meta http-equiv= "cache-control" content= "no-cache" > <meta http-equiv= "expires" content= "0" > <meta http-equiv= "keywords" content= "keyword1,keyword2,keyword3" > <meta http-equiv= "description" content= "This is my page" > <!-- <link rel= "stylesheet" type= "text/css" href= "styles.css" > --> </head> <body> <h1>更新数据</h1> <form action= "Update.do" method= "post" > <table> <tr> <td>请输入数据:</td> <td>学号:<input type= "text" name= "stuid" id= "stuid" value= "${student.stuid}" > </td> <td>姓名:<input type= "text" name= "stuname" id= "stuname" value= "${student.stuname}" > </td> <td>性别:<input type= "text" name= "gender" id= "gender" value= "${student.gender}" > </td> </tr> <tr><td><input type= "submit" value= "修改" ></td> <td><input type= "reset" value= "重置" ></td></tr> </table> </form> </body> </html> |
代码完美运行!!!
作者: lost blog
出处: http://www.cnblogs.com/JAYIT/
关于作者:专注服务器端开发
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接 如有问题, 可邮件(sawyershaw@qq.com)咨询.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现