Javaweb项目-快递e站前置1-学生管理(半重点)

写再前面的话

    1,本文为Java学习五部分第二部分所有项目回顾(前端练习系列-对应Java体系第二部分第三阶段内容)这些再前面的博客里没有。因为感觉把练习作业单独写出来会更好一些。
    2,Java知识体系(第五部分第一阶段包括整体快递e站系列,数据库练习系列,程序创新大会报名表系列,Javaweb系列(用户登录,快递e站),SSM系列,微服务系列,实战系列,等)还是应该刚写完作业就写博客的。
    3,Javaweb项目是我们学习过程中遇到的第一个比较完整的项目,是一个分水岭。本项目是Javaweb项目的前置项目。

任务目的

    业务上:实现学生管理模块中学员信息的增删改查
    技能目标巩固 JAVAWEB,MYSQL前端,JAVASE 的知识体系

任务需求

    通过一个上线项目中提取出的一个模块,让大家熟悉项目开发过程中的开发流
程以及代码结构

过程简单描述:

1.熟悉项目需求和项目结构
2.根据需求创建数据库
3. 实现用户的登录与退出
4. 实现学生信息的增删改查
5. 功能完善: 1. 学号的非重复性验证 2.用户权限判断,非登录情况下不允许访问用户操作

具体思路及整体代码实现

大体思路:(抄的资料)

1.分析静态页面,根据html或需求创建数据库
2.填写测试数据
3.创建项目,包结构(bean,dao.impl,servlet,service.impl,util),修改html页面为jsp
    html->jsp
       (1)在HTML中添加page指令
       (2) 将html的后缀改成jsp
4.填写内容(注意填写顺序)
    bean:属性,封装方法,无参构造,全参构造 表名=类名 ,列名=属性名
    dao包:操作方法的接口,命名:实体类名+Dao,
   ​ Dbutils(属性文件,*.properties)
   impl包:命名: 接口名+Impl
      实现接口,继承Dbutils
       service.impl
       service定义的是接口,接口中的方法和dao层接口中的方法一致
      impl : 这层的实现类主要负责调取dao层方法
   servlet:
       //1.接受参数
      //2.调取service层的方法,service又在调取dao层的方法
      //3.根据结果跳转页面
    核心:jsp页面负责发送请求和展示数据

代码实现:

    真的应该写完项目就写博客,现在忘了。

前端页面创建

    根据需求新建html页面,后面网盘给定资料都是Html类型的,这是不对的,我画线的要改成jsp类型才能使用。
在这里插入图片描述

数据库分析

看一下我们要实现的模块:
在这里插入图片描述
在这里插入图片描述
    可以很明显的看出,我们需要创建一个学生信息表,一个年级信息表。总要有人操作学生信息对吧,那再创建用户信息表。资料给的表格设计文件。在这里插入图片描述
我具体写的数据表
    年级表
在这里插入图片描述
    学生表
在这里插入图片描述

    用户表
在这里插入图片描述
然后按照第三步,把代码结构简单创建一下。

bean层

根据所创建的sql创建对应的类,类名=表名,属性名=列名。数据库都创建好了,那这里没有什么好说的。
    1.定义属性。
    2.用setter和getter设置和获取值。
    3.如果为了测试方便,记得生成toString方法。
    4无参和全参构造方法没有用到,可以不用写

Grade
package com.yhp.bean;

import java.util.List;

//表名=类名 列名=属性名
public class Grade {
   
    private Integer gradeId;

    @Override
    public String toString() {
   
        return "Grade{" +
                "gradeId=" + gradeId +
                ", gradeName='" + gradeName + '\'' +
                ", studentList=" + studentList +
                '}';
    }

    private String gradeName;
    private List<Student> studentList;

    public Integer getGradeId() {
   
        return gradeId;
    }

    public void setGradeId(Integer gradeId) {
   
        this.gradeId = gradeId;
    }

    public String getGradeName() {
   
        return gradeName;
    }

    public void setGradeName(String gradeName) {
   
        this.gradeName = gradeName;
    }

    public List<Student> getStudentList() {
   
        return studentList;
    }

    public void setStudentList(List<Student> studentList) {
   
        this.studentList = studentList;
    }
}
Student
package com.yhp.bean;

import java.util.Date;

public class Student {
   
    private Integer stuId;
    private String stuName;
    private String stuNo;
    private Integer sex;
    private String phone;
    private String email;
    private String registered;
    private String address;
    private String profession;

    @Override
    public String toString() {
   
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuNo='" + stuNo + '\'' +
                ", sex=" + sex +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", registered='" + registered + '\'' +
                ", address='" + address + '\'' +
                ", profession='" + profession + '\'' +
                ", idNumber='" + idNumber + '\'' +
                ", politics='" + politics + '\'' +
                ", regDate=" + regDate +
                ", state=" + state +
                ", introdction='" + introdction + '\'' +
                ", gid=" + gid +
                ", grade=" + grade +
                '}';
    }

    private String idNumber;
    private String politics;
    private Date regDate;
    private Integer state;
    private String introdction;
    private Integer gid;
    private Grade grade;

    public Integer getStuId() {
   
        return stuId;
    }

    public void setStuId(Integer stuId) {
   
        this.stuId = stuId;
    }

    public String getStuName() {
   
        return stuName;
    }

    public void setStuName(String stuName) {
   
        this.stuName = stuName;
    }

    public String getStuNo() {
   
        return stuNo;
    }

    public void setStuNo(String stuNo) {
   
        this.stuNo = stuNo;
    }

    public Integer getSex() {
   
        return sex;
    }

    public void setSex(Integer sex) {
   
        this.sex = sex;
    }

    public String getPhone() {
   
        return phone;
    }

    public void setPhone(String phone) {
   
        this.phone = phone;
    }

    public String getEmail() {
   
        return email;
    }

    public void setEmail(String email) {
   
        this.email = email;
    }

    public String getRegistered() {
   
        return registered;
    }

    public void setRegistered(String registered) {
   
        this.registered = registered;
    }

    public String getAddress() {
   
        return address;
    }

    public void setAddress(String address) {
   
        this.address = address;
    }

    public String getProfession() {
   
        return profession;
    }

    public void setProfession(String profession) {
   
        this.profession = profession;
    }

    public String getIdNumber() {
   
        return idNumber;
    }

    public void setIdNumber(String idNumber) {
   
        this.idNumber = idNumber;
    }

    public String getPolitics() {
   
        return politics;
    }

    public void setPolitics(String politics) {
   
        this.politics = politics;
    }

    public Date getRegDate() {
   
        return regDate;
    }

    public void setRegDate(Date regDate) {
   
        this.regDate = regDate;
    }

    public Integer getState() {
   
        return state;
    }

    public void setState(Integer state) {
   
        this.state = state;
    }

    public String getIntrodction() {
   
        return introdction;
    }

    public void setIntrodction(String introdction) {
   
        this.introdction = introdction;
    }

    public Integer getGid() {
   
        return gid;
    }

    public void setGid(Integer gid) {
   
        this.gid = gid;
    }

    public Grade getGrade() {
   
        return grade;
    }

    public void setGrade(Grade grade) {
   
        this.grade = grade;
    }
}
Users
package com.yhp.bean;

/**
 * 用户表
 */
public class Users {
   
    private Integer userId;
    private String loginName;
    private String passWord;
    private String realName;
    private Integer sex;
    private String email;
    private String address;
    private String phone;
    private String cardId;
    private String desc;
    // 角色id
    private Integer roleId;
    // 一个用户对应一个角色
    private Role role;

    public Integer getUserId() {
   
        return userId;
    }

    public void setUserId(Integer userId) {
   
        this.userId = userId;
    }

    public String getLoginName() {
   
        return loginName;
    }

    public void setLoginName(String loginName) {
   
        this.loginName = loginName;
    }

    public String getPassWord() {
   
        return passWord;
    }

    public void setPassWord(String passWord) {
   
        this.passWord = passWord;
    }

    public String getRealName() {
   
        return realName;
    }

    public void setRealName(String realName) {
   
        this.realName = realName;
    }

    public Integer getSex() {
   
        return sex;
    }

    public void setSex(Integer sex) {
   
        this.sex = sex;
    }

    public String getEmail() {
   
        return email;
    }

    public void setEmail(String email) {
   
        this.email = email;
    }

    public String getAddress() {
   
        return address;
    }

    public void setAddress(String address) {
   
        this.address = address;
    }

    public String getPhone() {
   
        return phone;
    }

    public void setPhone(String phone) {
   
        this.phone = phone;
    }

    public String getCardId() {
   
        return cardId;
    }

    public void setCardId(String cardId) {
   
        this.cardId = cardId;
    }

    public String getDesc() {
   
        return desc;
    }

    @Override
    public String toString() {
   
        return "Users{" +
                "userId=" + userId +
                ", loginName='" + loginName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", realName='" + realName + '\'' +
                ", sex=" + sex +
                ", email='" + email + '\'' +
                ", address='" + address + '\'' +
                ", phone='" + phone + '\'' +
                ", cardId='" + cardId + '\'' +
                ", desc='" + desc + '\'' +
                ", roleId=" + roleId +
                ", role=" + role +
                '}';
    }

    public void setDesc(String desc) {
   
        this.desc = desc;
    }

    public Integer getRoleId() {
   
        return roleId;
    }

    public void setRoleId(Integer roleId) {
   
        this.roleId = roleId;
    }

    public Role getRole() {
   
        return role;
    }

    public void setRole(Role role) {
   
        this.role = role;
    }
}

工具类

   创建一个utils包,新建类DBUtils,新建配置文件db.properties

properties配置文件

   使用ResourceBundle访问本地资源,从里面读取我们需要的值

url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
username=cms
password=cms
driverClassName=com.mysql.cj.jdbc.Driver
DBUtils.java

1.定义变量

private Connection connection;
public PreparedStatement pps;
protected ResultSet resultSet;
private int count;//存储收影响的行数

private static String userName;
private static String userPass;
private static String url;
private static String dirverName;
 //德鲁伊
private static DruidDataSource dataSource=new DruidDataSource();

2.加载驱动

static {
   
    //德鲁伊
    ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
    dirverName = bundle.getString("driverClassName");
    url = bundle.getString("url");
    userName = bundle.getString("username");
    userPass = bundle.getString("password");

    dataSource.setUsername(userName);
    dataSource.setPassword(userPass);
    dataSource.setUrl(url);
    dataSource.setDriverClassName(dirverName);
   // dataSource.setInitialSize(20);

}

3.获得连接

 protected  Connection getConnection(){
   
        try {
   
            connection=dataSource.getConnection();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
        return connection;
    }

4.获得预状态通道

  protected  PreparedStatement getPps(String sql){
   
        try {
   // Statement.RETURN_GENERATED_KEYS 我要获得新增数据的id值
            pps= getConnection().prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
        return pps;
    }

5.绑定参数 LIST保存的是给占位符所赋的值

 protected  void param(List list){
   
             if(list!=null&&list.size()>0){
   
                 for (int i=0;i<list.size();i++) {
   
                     try {
   
                         pps.setObject(i+1,list.get(i));
                     } catch (SQLException throwables) {
   
                         throwables.printStackTrace();
                     }
                 }
             }
    }

6.执行操作(增删改+查)

 protected  int  update(String sql,List list){
   
        getPps(sql);
        param(list);
        try {
   
            count= pps.executeUpdate();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
        return count;
    }

7.查询

 protected  ResultSet query(String sql,List list){
   
        getPps(sql);
        param(list);
        try {
   
            resultSet= pps.executeQuery();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
        return resultSet;
    }

8.关闭资源

protected  void closeAll(){
   
    try {
   
        if (connection != null) {
   
            connection.close();
        }
        if (pps != null) {
   
            pps.close();
        }

        if (resultSet != null) {
   
            resultSet.close();
        }
    } catch (SQLException throwables) {
   
        throwables.printStackTrace();
    }
}

dao与service层定义

以学生类举例,年级类和用户类同理。
service
抽象类

public interface StudentService {
   
}

实现类

public class StudentServiceImpl implements StudentService {
   
}

dao
抽象类

public interface StudentDao {
   
}

实现类,dao层实现类是直接操作数据库的部分需要继承工具类

public class StudentDaoImpl extends DBUtils implements StudentDao {
   
}

至此,大体框架算是搭建完毕了。然后我们该根据具体的功能来跑代码了。

具体功能及详细代码实现

先放一个整体的流程图
在这里插入图片描述

登录功能

这个没什么难度,之前写过四次了。这次换一种表达方式吧
参考链接:看第五部分-用户登录
在这里插入图片描述
login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登录</title>

<link href="css/login.css" type="text/css" rel="stylesheet" />

</head>
<body id="userlogin_body">
post方式提交,跳转到login路径,记得复制的时候加注解
<form action="login" method="post">
<div id="user_login">
	<dl>
		<dd id="user_top">
			<ul>
				<li class="user_top_l"></li>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值