JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

表示层:MVC中的视图层和控制器层,前端通常为html css js jsp文件,后端例如Servlet文件,调用业务逻辑层业务逻辑层(Service):接受表示层的请求,先进行逻辑处理,后调用数据逻辑层,(增:查+增)

数据访问层(Dao):直接访问数据库的操作

JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

通过三层架构,将表示层请求传递到数据访问层,数据访问层将结果返回至表示层

具体流程

JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

开发环境:IDEA Mysql  8.0.19   mysql driver:8.0.15  servlet:3.0以上版本
代码结构(正规来说的话service 和 dao 需要接口,为了代码看着方便省略了)

JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

add.jsp

JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add</title>
</head>
<body>
<form action="addStudentServlet" >
学号:<input type="number" name="sno"><br/>
name: <input type="text" name="sname"/><br/>
age: <input type="text" name="sage"/><br/>
address: <input type="text" name="saddress"/><br/>
<input type="submit" value="add"/><br/>
</form>
</body>
</html>

写后端代码前,先将数据封装Java bean(entity包中)

package com.Student.entity;

public class Student {
private int sno;
private String sname;
private int sage;
private String saddress;

public Student(int sno, String sname, int sage, String saddress) {
this.sno = sno;
this.sname = sname;
this.sage = sage;
this.saddress = saddress;
}

public Student(String sname, int sage, String saddress) {
this.sname = sname;
this.sage = sage;
this.saddress = saddress;
}

@Override
public String toString() {
return "Student{" +
"sno=" + sno +
", sname='" + sname + '\'' +
", sage=" + sage +
", saddress='" + saddress + '\'' +
'}';
}

public int getSno() {
return sno;
}

public void setSno(int sno) {
this.sno = sno;
}

public String getSname() {
return sname;
}

public void setSname(String sname) {
this.sname = sname;
}

public int getSage() {
return sage;
}

public void setSage(int sage) {
this.sage = sage;
}

public String getSaddress() {
return saddress;
}

public void setSaddress(String saddress) {
this.saddress = saddress;
}

}

addStudentServlet.java(com.student.servlet包中)

package com.Student.Servlet;

import com.Student.entity.Student;
import com.Student.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("/addStudentServlet")
public class addStudentServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// response.setCharacterEncoding("utf-8"); // 指定输出到客户端的是编码格式
response.setContentType("text/html;charset=UTF-8"); // 指定浏览器解析数据的时候,使用的编码格式

int no = Integer.parseInt(request.getParameter("sno"));
String name = request.getParameter("sname");
int age = Integer.parseInt(request.getParameter("sage"));
String address = request.getParameter("saddress");
Student student = new Student(no, name, age, address);
StudentService studentService = new StudentService();
boolean result = studentService.addStudent(student);
PrintWriter out = response.getWriter();
if(result){
out.println("add successfully");
}else{
out.println("fail to add");
}
/*if (!result) { //如果增加失败,给request放入一条数据error
request.setAttribute("error", "error");
}
request.getRequestDispatcher("queryAllStudentServlet").forward(request, response);*/
}
}

addStudentService.java(自行匹配放包中)

package com.Student.service;

import com.Student.Dao.StudentDao;
import com.Student.entity.Student;

import java.util.List;

//业务逻辑层:逻辑性的增删改查(增:查+增), 对Dao层进行组装
public class StudentService {
StudentDao studentDao = new StudentDao();
public boolean addStudent(Student student){
if(!studentDao.isExist(student.getSno())){ //此人不存在
studentDao.addStudent(student);
return true;
}else{
System.out.println("此人已存在");
return false;
}
}

public boolean deleteStudent(int sno){
if(studentDao.isExist(sno)){
return studentDao.deleteStudentBySno(sno);
}else{
return false;
}
}

public boolean updateStudentBySno(int sno,Student student){
if(studentDao.isExist(sno)){
return studentDao.updateStudentBySno(sno, student);
}else{
return false;
}
}

//根据学号查询一个学生
public Student queryStudentBySno(int sno){
return studentDao.queryStudentBySno(sno);
}

public List<Student> queryAllStudent(){
return studentDao.queryAllStudent();
}
}

StudentDao.java

package com.Student.Dao;

import com.Student.entity.Student;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
//数据访问层,原子性的增删改查,不可拆,
public class StudentDao {
private final String url = "jdbc:mysql://localhost/Student";
private final String User = "root";
private final String pwd = "123456";

public boolean isExist(int sno) { //true :此人存在 false : 此人不存在
return queryStudentBySno(sno)==null? false:true;
}

public boolean addStudent(Student student){
Connection connection = null;
PreparedStatement pstmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, User, pwd);
System.out.println("The database was connected successfully");
String sql = "insert into student values(?,?,?,?)";
pstmt = connection.prepareStatement(sql);
pstmt.setInt(1,student.getSno());
pstmt.setString(2,student.getSname());
pstmt.setInt(3,student.getSage());
pstmt.setString(4,student.getSaddress());
int count = pstmt.executeUpdate();
System.out.println("count = "+count);
if(count>0){
return true;
}
else
return false;
}catch (ClassNotFoundException e){
e.printStackTrace();
return false;
}catch (SQLException e){
e.printStackTrace();
return false;
} catch (Exception e){
e.printStackTrace();
return false;
}finally {
try{
if(pstmt!=null)pstmt.close();
if(connection!=null)connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}

}
}

JSP三层架构开发学生管理系统源码-dao、entity、service、servlet JSP三层架构开发学生管理系统源码-dao、entity、service、servlet

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/9551.html

(0)
江山如画的头像江山如画管理团队
教学工作定期检查制度-期初检查,期中检查,期末检查
上一篇 2021年5月1日 下午5:12
WordPress更换域名的操作方法
下一篇 2021年5月1日 下午5:39

99%的人还看了以下文章

  • MVC(JSP+JavaBean+Servlet)+MYSQL入门实例:实现用户登陆

    MVC(JSP+JavaBean+Servlet)+MYSQL入门实例:实现用户登陆MVC(JSP+JavaBean+Servlet)+MYSQL入门实例:实现用户登陆MVC(JSP+JavaBean+Servlet)+MYSQL入门实例:实现用户登陆MVC(JSP+JavaBean+Servlet)+MYSQL入门实例:实现用户登陆

    MVC(JSP+JavaBean+Servlet)+MYSQL实现用户登陆模块,具体功能: 客户在登陆页面Login.html输入用户名和密码,提交表单,由Servlet(LoginValidate.java)调用JavaBean(LoginDBO.java)验证用户名和密码,最后调用视图returnMessage.jsp显示,如果成功显示成功信息,不成功显…

    2018年11月27日 编程开发
    22.7K0
  • 超清晰!HTML5 实现手机拍照上传功能原理讲解

    这篇文章主要为大家详细介绍如何使用HTML5利用摄像头拍照实现上传功能,原理讲解非常清晰,具有较大的参考价值。 上传页面代码: 上传图片用的HTML5的file文件上传功能<input type=”file” accept=”image/*”> 因为原生file样式不满足要求,在input上面放置我们想要…

    2022年8月11日
    16.5K0
  • 推荐!Django 新手入门图文教程

    推荐!Django 新手入门图文教程推荐!Django 新手入门图文教程推荐!Django 新手入门图文教程推荐!Django 新手入门图文教程

    一、Django简介 百度百科:一个开放源代码的Web框架,由Python语言编写…… 重点:一个大而全的框架,啥都替你考虑好了。 1. web框架介绍 具体介绍Django之前,必须先介绍Web框架的概念。 Web框架: 别人已经设定好的一个Web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。 一般Web框架的…

    2023年1月24日 编程开发
    6.9K0
  • jsp写mysql数据库出现中文乱码

    今天用jsp做个图片书管理系统,向mysql数据库中存中文的时候显示乱码,如图书名: web???? 修改页面是http://localhost:8080/library/book?action=bookModifyQuery&ID=14 根据中文乱码的处理方法: 表单method方式为post或get中文乱码的解决方法 jsp:include包含h…

    2020年8月22日
    5.4K0
  • Windows10+IIS+PHP7+MySQL5.7环境搭建

    Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建

    IIS配置 本次搭建使用的系统是Windows7,Windows8,10与此类似。 开启IIS 开始–>控制面板–>程序和功能,点击左边栏的开启或关闭Windows功能,如图: 选择Internet信息服务并选择里面的CGI。打开浏览器,输入localhost或127.0.0.1,可以正常打开网页则说明开启成功。 新建站点…

    2021年8月14日 编程开发
    10.0K0
  • JSP实现用户登录总次数及用户最后一次登录时间功能(附代码)

    实现原理: 数据库表中,设置两个字段total_login_count(登录总次数,int型)和 last_login_time(最后登录时间,datetime型) 1. 记录用户的登录总次数 用户每登录一次,将数据库中的相应字段值加 1,代码如下: String sql =”update testuser set total_login_count = t…

    编程开发 2018年7月3日
    9.8K0

发表回复

登录后才能评论