引言

这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 操作。关于三层组成云云,这里就不再叙述。

实例

效果图

先来看一下主页,将student表中的数据列出来,这里隐藏了地址信息(saddress)。

这是添加学生信息的页面

这是修改学生信息的页面(学号不可修改)

由于删除学生信息不需要跳转,所以没有删除学生信息的页面。这几个功能的操作结果都会在主页的左上角显示。

项目结构


如图,自上到下,
StudentDao.java 是直接对数据库进行增删改查操作的,属于原子性的操作,没有逻辑性,只是简单的增删改查.比如,它并不会在删除某条信息之前先判断这条信息是否存在.
Student.java 是"学生"类,此类拥有诸如学号、姓名、年龄、地址等信息以及对应的getter和setter方法。
StudentService.java 这个类,名子含义有点模糊,属于service层,同样是对数据库进行增删改查操作,与上面的Dao类不同的是,service层的操作具有逻辑性,就拿添加学生信息来说,service会先调用Dao类的查询方法,先判断这个学生是否存在,根据结果进行信息插入操作。
Servlet包 易发现,这个包中存放的都是Servlet类,属于视图层的后端,每一个类每一个类对应一个视图层前端的功能(增删改查);

代码

Student.java

package com.ajy.entity;public class Student {private int stuNo;private String stuName;private int stuAge;private String stuAddress;public Student(int stuNo,String stuName,int stuAge,String stuAddress){this.stuNo = stuNo;this.stuName = stuName;this.stuAge = stuAge;this.stuAddress = stuAddress;}public Student(String stuName,int stuAge,String stuAddress){this.stuNo = stuNo;this.stuName = stuName;this.stuAge = stuAge;this.stuAddress = stuAddress;}public int getStuNo() {return stuNo;}public void setStuNo(int stuNo) {this.stuNo = stuNo;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public int getStuAge() {return stuAge;}public void setStuAge(int stuAge) {this.stuAge = stuAge;}public String getStuAddress() {return stuAddress;}public void setStuAddress(String stuAddress) {this.stuAddress = stuAddress;}@Overridepublic String toString() {return getStuNo()+"--"+getStuName()+"--"+getStuAge()+"--"+getStuAddress();}}

StudentDao.java

package com.ajy.dao;import com.ajy.entity.Student;import java.sql.*;import java.util.ArrayList;import java.util.List;public class StudentDao {private final String URL="jdbc:mysql://localhost:3306/anjiyubase?&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";private final String DRIVER="com.mysql.cj.jdbc.Driver";private final String NAME="root";private final String PWD="121181";//增加学生信息public boolean addStudent(Student stu){Connection con = null;PreparedStatement pstmt = null;int count = 0;try {Class.forName(DRIVER);con = DriverManager.getConnection(URL,NAME,PWD);String sql = "insert into student values(?,?,?,?)";pstmt = con.prepareStatement(sql);pstmt.setInt(1,stu.getStuNo());pstmt.setString(2,stu.getStuName());pstmt.setInt(3,stu.getStuAge());pstmt.setString(4,stu.getStuAddress());count = pstmt.executeUpdate();} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;}finally {try {if (pstmt!=null)pstmt.close();if (con!=null)con.close();} catch (SQLException e) {e.printStackTrace();return false;}}if(count==0){return false;}else{return true;}}//查询学生是否存在public boolean isExits(int stuNo){return queryStudent(stuNo)==null?false:true;}//查询学生public Student queryStudent(int stuNo){Connection con = null;PreparedStatement pstmt = null;ResultSet rs = null;Student stu = null;int count = 0;try {Class.forName(DRIVER);con = DriverManager.getConnection(URL,NAME,PWD);String sql = "select * from student where sno=?";pstmt = con.prepareStatement(sql);pstmt.setInt(1,stuNo);rs = pstmt.executeQuery();if (rs.next()){stu = new Student(rs.getInt("sno"),rs.getString("sname"),rs.getInt("sage"),rs.getString("saddress"));}} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;}finally {try {if (rs!=null)rs.close();if (pstmt!=null)pstmt.close();if (con!=null)con.close();} catch (SQLException e) {e.printStackTrace();return null;}}return stu;}//查询全部学生public List<Student> queryAll(){Connection con = null;Statement stmt = null;ResultSet rs = null;List<Student> list = new ArrayList<>();try {Class.forName(DRIVER);con = DriverManager.getConnection(URL,NAME,PWD);String sql = "select *from student";stmt = con.createStatement();rs = stmt.executeQuery(sql);while (rs.next()){int sno = rs.getInt("sno");String sname = rs.getString("sname");int sage = rs.getInt("sage");String saddress = rs.getString("saddress");list.add(new Student(sno,sname,sage,saddress));}} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;}finally {try {if (rs!=null)rs.close();if (stmt!=null)stmt.close();if (con!=null)con.close();return list;} catch (SQLException e) {e.printStackTrace();return null;}}}//根据学号删除学生public boolean deleteStudentBySno(int Sno){Connection con = null;PreparedStatement pstmt = null;int count = 0;try {Class.forName(DRIVER);con = DriverManager.getConnection(URL,NAME,PWD);String sql = "delete from student where sno=?";pstmt = con.prepareStatement(sql);pstmt.setInt(1,Sno);count = pstmt.executeUpdate();} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;}finally {try {if (pstmt!=null)pstmt.close();if (con!=null)con.close();} catch (SQLException e) {e.printStackTrace();return false;}}if(count==0){return false;}else{return true;}}//根据学号修改学号对应的学生信息public boolean updateStudentBySno(int sno,Student stu){Connection con = null;PreparedStatement pstmt = null;int count = 0;try {Class.forName(DRIVER);con = DriverManager.getConnection(URL,NAME,PWD);String sql = "update student set sname=?,sage=?,saddress=? where sno=?";pstmt = con.prepareStatement(sql);//要修改的人pstmt.setInt(4,sno);//修改该后的内容pstmt.setString(1,stu.getStuName());pstmt.setInt(2,stu.getStuAge());pstmt.setString(3,stu.getStuAddress());count = pstmt.executeUpdate();} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;}finally {try {if (pstmt!=null)pstmt.close();if (con!=null)con.close();} catch (SQLException e) {e.printStackTrace();return false;}}if(count==0){return false;}else{return true;}}}

StudentService

package com.ajy.service;import com.ajy.dao.StudentDao;import com.ajy.entity.Student;import java.util.List;public class StudentService {StudentDao studentDao = new StudentDao();//增加学生public boolean addStudent(Student stu){if (!studentDao.isExits(stu.getStuNo())){return studentDao.addStudent(stu);}else{return false;}}//根据学号删除学生public boolean deleteStudentBySno(int sno){//先判断学生是否存在if(!studentDao.isExits(sno)){return false;}else{return studentDao.deleteStudentBySno(sno);}}//根据学号查询学生public Student queryStudentBySno(int sno){return studentDao.queryStudent(sno);}//根据学号,更新对应的学生public boolean updateStudentBySno(int sno,Student stu){//先判断此学号对应的学生是否存在if(!studentDao.isExits(sno)){return false;}else{return studentDao.updateStudentBySno(sno,stu);}}//查询全部学生public List<Student> queryStudentAll(){return studentDao.queryAll();}}

QueryAllStudents.java

package com.ajy.servlet;import com.ajy.entity.Student;import com.ajy.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;import java.util.List;@WebServlet(name = "QueryAllStudents",value = "/QueryAllStudents")public class QueryAllStudents extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");StudentService studentService = new StudentService();List<Student> studentList = studentService.queryStudentAll();request.setAttribute("students",studentList);request.getRequestDispatcher("studentlist.jsp").forward(request,response);}}

AddStudentServlet.java

package com.ajy.servlet;import com.ajy.entity.Student;import com.ajy.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(name = "AddStudentServlet",value = "/AddStudentServlet")public class AddStudentServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");int stuNo = Integer.parseInt(request.getParameter("stuNo"));String stuName = request.getParameter("stuName");int stuAge = Integer.parseInt(request.getParameter("stuAge"));String stuAddress = request.getParameter("stuAddress");Student stu = new Student(stuNo,stuName,stuAge,stuAddress);StudentService addStudentService = new StudentService();boolean res = addStudentService.addStudent(stu);if (res){request.setAttribute("res","添加成功");}else{request.setAttribute("res","添加失败");}request.getRequestDispatcher("QueryAllStudents").forward(request,response);}}

DeleteStudentServlet.java

package com.ajy.servlet;import com.ajy.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;@WebServlet(name = "DeleteStudentServlet",value = "/DeleteStudentServlet")public class DeleteStudentServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//根据学号删除学生int sno = Integer.parseInt(request.getParameter("sno"));StudentService studentService = new StudentService();boolean res = studentService.deleteStudentBySno(sno);response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();if (res){request.setAttribute("res","删除成功");}else{request.setAttribute("res","删除失败");}request.getRequestDispatcher("QueryAllStudents").forward(request,response);}}

UpdateStudentBySnoServlet.java

package com.ajy.servlet;import com.ajy.entity.Student;import com.ajy.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(name = "UpdateStudentBySnoServlet",value = "/UpdateStudentBySnoServlet")public class UpdateStudentBySnoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");StudentService studentService = new StudentService();int sno = Integer.parseInt(request.getParameter("sno"));String sname = request.getParameter("sname");int sage = Integer.parseInt(request.getParameter("sage"));String saddress = request.getParameter("saddress");Student student = new Student(sname,sage,saddress);boolean res = studentService.updateStudentBySno(sno,student);if (res){request.setAttribute("res","修改成功");}else{request.setAttribute("res","修改失败");}request.getRequestDispatcher("QueryAllStudents").forward(request,response);}}

QueryStudentBySno.java

package com.ajy.servlet;import com.ajy.entity.Student;import com.ajy.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(name = "QueryStudentBySno",value = "/QueryStudentBySno")public class QueryStudentBySno extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");StudentService studentService = new StudentService();int sno = Integer.parseInt(request.getParameter("sno"));Student stu = studentService.queryStudentBySno(sno);request.setAttribute("student",stu);request.getRequestDispatcher("updateinfo.jsp").forward(request,response);}}

addstudent.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>添加学生</title></head><body><form action="AddStudentServlet" method="post">学号:<input type="number" name="stuNo"><br>姓名:<input type="text" name="stuName"><br>年龄:<input type="number" name="stuAge"><br>地址:<input type="text" name="stuAddress"><br><input type="submit" value="提交"><br></form><a href="QueryAllStudents">返回首页</a></body></html>

studentlist.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>学生信息列表</title></head><body><%String operateResult = (String) request.getAttribute("res");if (operateResult!=null){out.print(operateResult);}else{out.print("<br>");}%><table border="1px"><tr><th>学号</th><th>姓名</th><th>年龄</th><th>操作</th></tr><%List<Student> studentList = (List<Student>) request.getAttribute("students");for (Student student:studentList){%><tr><td><%=student.getStuNo()%></td><td><%=student.getStuName()%></td><td><%=student.getStuAge()%></td><td><a href="QueryStudentBySno?sno=<%=student.getStuNo()%>">修改</a></td><td><a href="DeleteStudentServlet?sno=<%=student.getStuNo()%>">删除</a></td></tr><%}%></table><a href="addstudent.jsp">增加</a></body></html>

updateinfo.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>学生个人信息</title></head><body><%Student stu = (Student) request.getAttribute("student");%><form action="UpdateStudentBySnoServlet" method="post">学号:<input type="number" name="sno" value="<%=stu.getStuNo()%>"><br>姓名:<input type="text" name="sname" value="<%=stu.getStuName()%>"><br>年龄:<input type="number" name="sage" value="<%=stu.getStuAge()%>"><br>地址:<input type="text" name="saddress" value="<%=stu.getStuAddress()%>"><br><input type="submit" value="提交"><br></form><a href="QueryAllStudents">返回首页</a></body></html>

转载于:https://www.cnblogs.com/HenuAJY/p/10781157.html

JavaWeb学习之三层架构实例(二)相关推荐

  1. C#学习之三层架构实例

    如有雷同,不胜荣欣,如转载,请注明 一.三层架构实例 首先学习三层架构模式­--三层架构实现的留言和查看留言 下面是本人学习三层架构的一点感想和理解,肯定有许多不足的地方,欢迎大家斧正,谢谢,废话到此 ...

  2. JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门

    JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资源仅用于javaweb网 ...

  3. JavaWeb——MVC与三层架构

    文章目录 JavaWeb--MVC与三层架构 1.三层架构 2.MVC 3.MVC与三层架构的对应联系 4.MVC与三层架构的区别 JavaWeb--MVC与三层架构 1.三层架构 三层架构 (3-t ...

  4. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  5. java三层架构项目事例_三层架构实例

    一.概要 在我的上一篇博客中,我们谈了谈分层,到底为什么分层(http://blog.csdn.net/shan9liang/article/details/6836300) 这篇博客,准备用一个小D ...

  6. springboot+mybatis plus学习记录+三层架构理解

    仅作为本人学习的一个记录,可能有的说法或者用法不准确 三层架构 三层架构就是为了符合"高内聚,低耦合"思想,把各个功能模块划分为表示层(UI).业务逻辑层(BLL)和数据访问层(D ...

  7. java三层架构实例

    三层架构 分层 层次 特点 界面层(View) 呈现给用户. 业务逻辑层(Service BLL) 实现具体的业务逻辑,加工数据. 持久层(Dao) 与数据库的增删改查相关的代码实现. 好处 1.为了 ...

  8. SpringMVC学习之三层架构

    Spring MVC关于三层架构   在我们进行学习之前要先了解什么开发的三层架构以及MVC模式是啥. 概述   我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B ...

  9. javaweb学习总结(八)——HttpServletResponse对象(二)

    一.HttpServletResponse常见应用--生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类, 生成随机图片范例: 1 package gacl ...

  10. 第六章节 三层架构(二. 模型层与数据访问层)

    一.模型层 1.由于三层之间存在数据交互,所以需要中间介质那就是"模型层",模型层包括与数据库表相对应的实体类,"实体类就相当于数据库中的数据表,实体类里的属性就相当于数 ...

最新文章

  1. linux创建redis容器,docker-compose实现redis部署及键值添加
  2. fpga如何约束走线_FPGA中的CLOCK REGION和SLR是什么含义
  3. c++ vector 存放指针_STL-C++ vector部分
  4. 基于完成端口的文件传输设计
  5. NDK 原生代码处理图形
  6. 怎样把项目上传服务器,怎样将项目上传云服务器
  7. js修改地址栏url_不同寻常的地址栏过渡
  8. RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
  9. P3733 [HAOI2017]八纵八横(线性基/线段树分治)
  10. 十、关于MySQL 标识列,你该了解这些!
  11. Centos6.6安装Nginx
  12. SpringSecurity应用(一)
  13. 利用logrotate系统工具切割tomcat日志
  14. RTR4 拾遗(一)-- 图形学的B面
  15. 教育公司邮箱申请哪个好?
  16. (附源码)springboot社区养老医疗服务平台 毕业设计 041148
  17. 重装系统后必装的5大软件,让你大幅度提升工作效率
  18. img 图片加载设置超时
  19. 二维图形平移变换c语言程序,[转载]计算机图形学Opengl实现二维图形的平移、旋转、缩放复合变换...
  20. 美通企业日报 | 嘉士伯打造全球首个纸质啤酒瓶;网球名将费德勒与辛芷蕾融情邂逅...

热门文章

  1. 来我们公司面试必问的41道 SpringBoot 面试题,不看亏大了!
  2. “我很迷茫很焦虑,需要你的建议”|她在百度内网发了个求助帖
  3. 中国公有云 Top10
  4. 用工厂流水线的方式来理解 RxJava 的概念
  5. python 百度ai json解析_百度AI识别调用的简单例子
  6. break 和 continue
  7. java 实现多重继承
  8. Spark源码分析之一:Job提交运行总流程概述
  9. 进击的UI---------------- UITextFieldUIButton
  10. [DELPHI]数据类型