当前位置:   article > 正文

javaweb项目总结思路_web项目设计思路 模板

web项目设计思路 模板

本次项目所用技术

前端使用:HTML,CSS和JQuery技术。页面数据校验使用jQuery框架的validate。
后端使用:javaBean,Servlet和JSP和mysql数据库。
服务器:TomCat 9.0.10
开发工具:idea

第一章:需求

系统用户模块

  1. 用户可以使用用户名和密码登录该系统。
  2. 系统登录页面需要对用户名和密码进行校验,用户名不能为空,密码非空,且长度在3-10位之间。
  3. 密码在数据库中储存的形式是以加密的方式进行储存的。加密算法采用MD5加密方式。
  4. 如果系统用户登录失败时,就给出系统提示。
  5. 用户点击退出管理按钮,跳转户用户登录页面,完成用户登出功能。
  6. 注册需要进行查重,如果查重则提示用户名重复请并跳转重新注册。若未有查重则注册成功。

员工管理模块

  1. 员工查询功能,要求把所以数据全部显示到页面上,并提供分页。
  2. 员工新增功能,需要对数据进行校验,保存成功后跳转到用户的列表界面。
  3. 修改员工,对数据进行校验,保存成功后跳转到用户的列表页面。
  4. 删除员工,对员工删除时需要先询问是否删除,用户点击确定才会删除,删除成功后跳转到用户界面列表。

系统权限功能

  1. 系统中的功能必须是在用户登录的情况下才能使用的。如果没有登录,如果没有登录会跳转到登录页面。

第二章:数据库设计

创建数据库

//使用如下脚本语句创建数据库
create database lyweb;
use lyweb;
  • 1
  • 2
  • 3

用户表

//用户表用来储存用户数据,主要做用户登录的功能,表结构如下
create table l_user(
	id int primary key auto_increment
	username varchar(30),
	password varchar(50),
	nickname varchar(30)
);
insert into l_user values(1,'admin','21232f297a57a5a743894a0e4a801fc3','管理员');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

员工表

//员工表用来储存员工的数据,表结构如下
create table l_emp(
	id int primary key auto_increment,
	ename varchar(30),
	age int(3),
	sex char(1),
	sal double,
	birthday varchar(15),
	edate varchar(15)
);
insert into l_emp values (1,'heiqisang',20,'男',20000,'2000-1-1','2030-1-1');
insert into l_emp values (2,'小封',20,'男',20000,'2000-1-1','2030-1-1');
insert into l_emp values (3,'小樊',20,'女',20000,'2000-1-1','2030-1-1');
insert into l_emp values (4,'小奚',20,'女',20000,'2020-1-1','2030-1-1');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

第三章:架构选择

  • 本项目采用M(model) V(view) C(controller)设计模式思路,使用JavaBean(实体类),Servlet和JSP做MVC的组件进行开发。
  • M:model模型 – 实体类 JAVABean,例如:User类,作用:封装数据。
  • V: view 视图 – 前端页面jsp,作用: 用来展示数据。
  • C:controller控制台 – 处理请求,Servlet作用:和前端页面进行数据交互
  • 服务器采用三层架构的方式,分成表现层,业务层,和持久层。
    • 表现层使用JSP和Servlet程序,与浏览器客户端进行数据的交互。
    • 业务层进行使用Service程序,进行业务逻辑处理和事务处理。
    • 持久层使用Dao程序,进行数据库的持久化操作。
  • 数据库使用MySQL数据库。
  • 系统前端使用HTML,CSS和JQuery技术。页面数据校验使用JQuery框架的validate校验插件。
  • 日期选择插件使用是My97DatePicker插件。

第四章:搭建系统开发

搭建系统开发环境

  • 使用idea开发工具
  • 创建Javaweb项目,将制作好的静态页面整合到项目中
  • 给工程引入开发jar包(此web项目不依赖maven)
  • 把系统资源的所有文件整合到项目中。

编写实体类

编写user实体类(系统用户实体类)
package ly.main;

import java.io.Serializable;

/**
 * 用户实现类
 */
public class user implements Serializable {
	// 主键
    private Integer id;
    // 用户名
    private String username;
    // 密码 (数据库中的密码是加密的,加密算法MD5加密)
    private String password;
    // 昵称
    private String nickname;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
}
  • 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

上述解析:implements Serializable (实现Serializable接口 )

  • 实现Serializable接口作用:
    • 对象序列化;
  • 实现对象序列化做什么:
    • 为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来;
  • 什么情况下需要序列化:
    • 想把的内存中的对象保存到一个文件中或者数据库中时候;
    • 想用套接字在网络上传送对象的时候;
    • 想通过RMI传输对象的时候;
编写User ServiceImpl服务层
package ly.service;
import ly.dao.UserDao;
import ly.dao.UserDaoImpl;
import ly.domain.User;
import ly.utils.MD5Utils;

/**
 * 用户业务层模块实现类
 */
public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl();

    /**
     * 用户登录的功能
     *
     * @param username
     * @param password
     * @return
     */
    @Override
    public User login(String username, String password) {
        //先对密码做加密处理,加密的算法使用MD5加密方式
        String newPwd = MD5Utils.encrypt(password);
        //调用持久层,查询数据库
        return   userDao.login(username,newPwd);
    }
}


  • 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
编写UserDaoImpl持久层
package ly.dao;

import ly.main.User;
import ly.utils.JdbcUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDaoImpl implements UserDao {
    /**
     * 登录(**)
     *
     * @param username
     * @param password
     * @return
     */
    @Override
    public User login(String username, String password) {
        // 思路:通过用户名和密码查询数据库
        // 定义连接
        Connection conn = null;
        // 预编译对象
        PreparedStatement stmt = null;
        // 结果集
        ResultSet rs = null;
        // 定义user对象
        User user = null;

        try {
            // 获取连接
            conn = JdbcUtils.getConnection();
            // 编写登录的SQL语句
            String sql = "SELECT * FROM l_user WHERE username = ? AND PASSWORD = ?";
            // 预编译SQL语句
            stmt = conn.prepareStatement(sql);
            // 设置值
            stmt.setString(1, username);
            stmt.setString(2, password);
            // 执行查询
            rs = stmt.executeQuery();
            //从结果集中查询数据,封装到User中对象中,返回User对象中,返回
            if (rs.next()) {
                // 封装数据
                user = new User();
                // 设置值
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setNickname(rs.getString("nickname"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 释放关闭资源
            JdbcUtils.close(conn, stmt, rs);
        }
        return user;
    }
}

  • 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

此上是登录功能的写法,由于功能太多不能个个列出,但是编写逻辑相似。

功能流程图

登录功能流程图

请求
admin:admin
admin:加密密码
写入
读取
值返回
值返回
响应
登录功能
表现层-UserLoginServlet
业务层-UserServiceImpl
持久层-UserDaoImpl
数据库mysql

浏览器/客户端

  • 请求
  • 响应

java服务器三层开发

  • 登录的UserLoginServlet程序
    • 接收登录提交数据,获取到admin(账号)和admin(密码)。
    • 调用业务层,处理登录的业务逻辑。
    • 判断方法返回值是否为null,如果不是null,说明查询到了,说明用户名和密码正确。认为登录成功,跳转到系统首页。如果返回是null,跳转回登录首页,给用户一个提示。
  • . 调用UserServiceImpl业务层
    • 需要使用用户名和密码,查询数据库。先对密码进行加密,再去查询数据库。返回user或者null。
  • . UserDaoImpl持久层
    • 编写JDBC的程序,通过用户名和密码查询数据库。如果查询到数据,返回。如果没有查询到数据,返回null。
  • 完成登录页面数据校验(使用JQuery的Valiate校验框架)

数据库(mysql)

  • 信息的写入和读取

员工分页功能流程图

请求
调用
调用
写入
读取
值返回
值返回
响应
员工管理
表现层-EmpListServlet程序
业务层-EmpServiceImpl类
持久层-EmpDaoImpl
数据库mysql

浏览器/客户端

  • 请求
  • 响应

java服务器三层开发

  • 表现层-EmpListServlet程序
    • 传来当前页数(变量) 默认规定:每页显示10条数据
    • 调用EmpServiceImpl,处理业务逻辑。
  • 调用EmpServiceImpl业务层
    • 调用 EmpDaoImpl持久层 ,查询分页相关的数据返回数据。
  • EmpDaoImpl持久层
    • 查询数据库

数据库(mysql)

  • 信息的写入和读取

员工信息录入保存功能流程图

请求保存
调用
调用
写入
读取
值返回
值返回
响应
员工信息填写
表现层-EmpAddServlet程序
业务层-EmpServiceImpl类
持久层-EmpDaoImpl类
数据库mysql

浏览器/客户端

  • 请求
  • 响应

java服务器

  • 表现层-EmpAddServlet程序
    • 接收到请求参数,把数据封装到User对象中。
    • 调用EmpServiceImpl,保存数据。
    • 跳转员工列表页面。
  • 调用EmpServiceImpl业务层
    • 调用EmpDaoImp持久层,保存数据。
  • EmpDaoImp持久层
    • 把数据保存到数据库中

数据库(mysql)

  • 信息的写入和读取

员工信息修改功能流程图

请求修改
调用
调用
写入
读取
值返回
值返回
响应
员工信息
表现层-EmpAddServlet程序
业务层-EmpServiceImpl类
持久层-EmpDaoImpl类
数据库mysql

浏览器/客户端

  • 请求
  • 响应

java服务器三层开发

  • 表现层-EmpAddServlet程序
    • 接收到请求参数,
    • 调用EmpServiceImpl,修改数据。
  • 调用EmpServiceImpl业务层
    • 调用EmpDaoImp持久层,修改数据。
  • EmpDaoImp持久层
    • 把修改后的数据保存到数据库中

数据库(mysql)

  • 信息的写入和读取

结语

此web项目思路有不足的地方,请各位朋友多多指点,感谢各位。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/191698
推荐阅读
相关标签
  

闽ICP备14008679号