JDBC+Servlet+JSP的学生案例增删改查
数据库信息传输到页面实现。
先进行学生信息页面展示:
接口IStudentDao
public interface IStudentDao {
    /**
     * 保存操作
     * @param stu 学生对象,封装了需要保存的对象
     */
    void save(Student stu);
    /**
     * 删除操作
     * @param id 被删除学生的主键操作
     */
    void delete(Long id);
    /**
     *
     * @param id    被更改学生的主键值
     * @param newStu    学生新的信息
     */
    void update(Student newStu);
    /**
     * 查询指定id的学生对象
     * @param id    被查询学生的主键值
     * @return         如果id存在,返回学生对象,否则为null
     */
    Student get(Long id);
    /**
     * 查询并返回所有学生对象
     * @return 如果结果集为空,返回一个空的list对象
     */
    List<Student> listall();
}
IStudentDaoImpl
public class IStudentDaoImpl implements IStudentDao{
    public void save(Student stu) {
        String sql ="insert into t_student (name,age) values (?,?)";
        PreparedStatement ps = null;
        //贾琏
        Connection conn = null;
        try {
            conn = JDBCUtil.getConn();
            ps = conn.prepareStatement(sql);//欲
            ps.setString(1, stu.getName());
            ps.setInt(2, stu.getAge());
            ps.executeUpdate();//执行
        } catch (SQLException e) {
            e.printStackTrace();
        }
        JDBCUtil.close(conn, ps, null);//事务
    }
    @Override
    public void delete(Long id) {
        String sql ="delete from t_student where id = ?";
        PreparedStatement ps =null;
        //贾琏
        Connection conn = null;
        try {
            conn = JDBCUtil.getConn();
            ps =conn.prepareStatement(sql);
            ps.setLong(1, id);
            ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        JDBCUtil.close(conn, ps, null);
    }
    //update t_student set name='xx',age=17 where id=12
    @Override
    public void update(Student stu) {
        String sql="update t_student set name =? ,age=? where id=?";
        PreparedStatement ps =null;
        //贾琏
        Connection conn =null;
        try {
            conn = JDBCUtil.getConn();
            ps=conn.prepareStatement(sql);
            ps.setString(1, stu.getName());
            ps.setInt(2, stu.getAge());
            ps.setLong(3, stu.getId());
            ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        JDBCUtil.close(conn, ps, null);
    }
    public Student get(Long id) {
        String sql ="select * from t_student where id=?";
        PreparedStatement ps =null;
        //贾琏
        Connection conn =null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConn();
            ps = conn.prepareStatement(sql);
            ps.setLong(1, id);
            rs= ps.executeQuery();
            if (rs.next()) {
                Student stu = new Student();
                stu.setId(rs.getLong("id"));
                stu.setName(rs.getString("name"));
                stu.setAge(rs.getInt("age"));
                return stu;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        JDBCUtil.close(conn, ps, rs);
        return null;
    }
    @Override
    public List<Student> listall() {
        List<Student> list = new ArrayList<>();
        String sql ="select * from t_student";
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs =null;
        try {
            conn = JDBCUtil.getConn();
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                Student stu = new Student();
                stu.setId(rs.getLong("id"));
                stu.setName(rs.getString("name"));
                stu.setAge(rs.getInt("age"));
                list.add(stu);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.close(conn, ps, rs);
        }
        return list;
    }
domain类
public class Student {
    private Long id;
    private String name;
    private Integer age;
    public Student(){}
    public Student(String name,Integer age){
        this.age=age;
        this.name=name;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}
设计个util类,方便维护
public class JDBCUtil {
    private static DataSource ds =null;
    static{
        //当JDBCUtil执行后,直接加载至JVM就立即执行
        try {
            Properties p = new Properties();
            p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
            ds = DruidDataSourceFactory.createDataSource(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConn(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void close(Connection conn,Statement st,ResultSet rs){
        try {
            if (rs!=null) {
                rs.close();
            }
        } catch (Exception e) {
        }finally {
            try {
                if (st!=null) {
                    st.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if (conn!=null) {
                        conn.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
在网页展示全部信息,将数据用student传输过去,在前台获取。
@WebServlet("/student/list")
public class ListStudentServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;
    private IStudentDao dao;
    @Override
    public void init() throws ServletException {
        dao = new IStudentDaoImpl();
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求参数封装成对象
        //2.调用业务方法处理请求
        List<Student> list = dao.listall();
        req.setAttribute("students", list);
        //3.控制界面跳转
        req.getRequestDispatcher("/WEB-INF/view/student/list.jsp").forward(req, resp);
    }
}
${student}获取后端传输过来的数据。然后c:forEach展示。
<h2 align="center"> 学生列表</h2>
<a href="/student/edit">添加学生</a>
<table border="1" width="50%" cellpadding="0" cellspacing="0" align="center">
<tr style="background-color: orange;">
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr> <c:forEach items="${students}" var="s" varStatus="vs">
<tr style='background-color: ${vs.count %2==0 ?"LavenderBlush":"gray"};'>
<td>${s.id }</td>
<td>${s.name }</td>
<td>${s.age }</td>
<td>
<a href="/student/delete?id=${s.id}">删除</a> |
<a href="/student/edit?id=${s.id}">编辑</a>
</td>
</tr>
</c:forEach>
</table>
删除操作传输一个id值,/student/delete?id=${s.id}删除指定的一条数据。然后返回到原来的界面
@WebServlet("/student/delete")
public class DeleteStudentServlet extends HttpServlet{
    private static final long serialVersionUID= 1L;
    private IStudentDao dao;
    @Override
    public void init() throws ServletException {
        dao=new IStudentDaoImpl();
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求参数封装成对象
        Long id = Long.valueOf(req.getParameter("id"));
        //2.调用业务方法处理请求
        dao.delete(id);
        //3.控制界面跳转
        resp.sendRedirect("/student/list");
    }
}
增加和删除操作的区别在于传输的数据是否有id值,需要进行判断,当传输的数据没有id的时候,就进行增加操作
@WebServlet("/student/edit")
public class EditStudentServlet extends HttpServlet{
    private static final long serialVersionUID=1L;
    private IStudentDao dao;
    @Override
    public void init() throws ServletException {
        dao=new IStudentDaoImpl();
    }
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求参数封装成对象
        String sid = req.getParameter("id");
        //2.调用业务方法处理请求
        if (hasLength(sid)) {
            Student stu = dao.get(Long.valueOf(sid));
            req.setAttribute("student", stu);//传递给edit.jsp,用于回显被编辑的学生。
        }
        //3.控制界面跳转
        req.getRequestDispatcher("/WEB-INF/view/student/edit.jsp").forward(req, resp);
    }
    private boolean hasLength(String str){
        return str!=null &&!"".equals(str.trim());
    }
}
edit.jsp
<form action="/student/save" method="post">
<input type="hidden" name="id" value="${student.id }">
姓名<input type="text" name="name" required value="${student.name }"/><br/>
年纪<input type="number" name="age" required value="${student.age }"><br/> <input type="submit" value="${student==null ?"保存学生信息":"修改学生信息"}">
</form>
根据id值有无判断进行什么操作
@WebServlet("/student/save")
//保存学生信息
public class SaveStudentServlet extends HttpServlet{
    private static final long serialVersionUID =1L;
    private IStudentDao dao;
    @Override
    public void init() throws ServletException {
        dao = new IStudentDaoImpl();
    }
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收请求参数封装成对象
        req.setCharacterEncoding("UTF-8");
        String name = req.getParameter("name");
        Integer age = Integer.valueOf(req.getParameter("age"));
        Student stu = new Student(name, Integer.valueOf(age));
        //2.调用业务方法处理请求
        String id = req.getParameter("id");
        if (hasLength(id)) {//更新保存
            stu.setId(Long.valueOf(id));
            dao.update(stu);
        }else {            //新增
            dao.save(stu);
        }
        //3.控制界面跳转
        resp.sendRedirect("/student/list");
    }
    private boolean hasLength(String str){
        return str!=null &&!"".equals(str.trim());
    }
}
以上就可以进行简单的增删改查操作
JDBC+Servlet+JSP的学生案例增删改查的更多相关文章
- JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)
		前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ... 
- mysql+servlet+jsp实现数据库的增删改查
		首先,了解数据库目前我们仅仅用来存放数据,在这里我们在数据库中生成一个表,包含id,classname,teacher,location.Tomcat用来配置eclipse,只有这样我们才能使用JSP ... 
- JavaBean+servlet+jsp——>对数据进行增删改查
		1.开始页面(查询数据) <%@page import="com.zdsofe.work.Student"%> <%@page import="java ... 
- java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
		1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ... 
- web项目总结——通过jsp+servlet实现对oracle的增删改查功能
		1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ... 
- JSP+Servlet+JavaBean实现数据库的增删改查
		基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果. ... 
- ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查
		三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ... 
- Spring Boot实现学生信息增删改查
		上一篇博客写了如何初始化一个简单的Spring Boot项目,这次详细记录一下如何连接数据库并实现增删改查基本操作. 我使用的是MySQL 5.5+Navicat,MySQL量级比较轻,当然微软的SQ ... 
- JDBC【1】-- 入门之增删改查
		目录 1.jdbc是什么 2.使用IDEA开发 2.1 创建数据库,数据表 2.2 使用IDEA创建项目 1.jdbc是什么 JDBC(Java DataBase Connectivity,java数 ... 
随机推荐
- 14.UA池和代理池
			今日概要 scrapy下载中间件 UA池 代理池 今日详情 一.下载中间件 先祭出框架图: 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - ... 
- orcFile split和读数据原理总结(hive0.13)
			http://blog.csdn.net/zhaorongsheng/article/details/72903431 官网关于orcfile的介绍 背景 Hive的rcfile格式已经使用多年,但是 ... 
- MyBatis知识点总结(一)
			前言:本篇主要记录在MyBatis学习过程中的主要知识点. 1.mybatis环境的搭建,通过maven可以快速的进行环境的搭建. <!--文件版本--> <properties&g ... 
- UVA1442-Cav(扫描法)
			Problem UVA1442-Cav Accept: 185 Submit: 679Time Limit: 3000 mSec Problem Description Input The inpu ... 
- [CQOI2018]九连环
			嘟嘟嘟 对于这种找规律的题,我向来是不会的. 通过大佬们的各种打表找规律.神奇dp等方法,我们得到了答案就是\(\lfloor \frac{2 ^ {n + 1}}{3} \rfloor\). 高精是 ... 
- OpenCV遍历彩色图像、灰度图像的像素值方法
			https://blog.csdn.net/mooneve/article/details/53001677 应用:将彩色图像转为灰度图像输出 方法一 使用ptr函数和指针 (高效) void mai ... 
- Linux如何查看端口状态
			netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的 ... 
- JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数
			JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数 示例如下 至少需要九个元素:"A","B","C",&q ... 
- 为什么大公司一定要使用DevOps?
			0 DevOps的意图 究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间,建立良好 ... 
- c++_work
			while((ch=getopt(argc, argv, "X:Y:C:")) != EOF) { switch((char)ch) { case 'X': strcpy(strS ... 
