Java开发工程师(Web方向)微专业大作业的实现(含源码资源)

前言

  该项目是对网易云课堂Java开发工程师(Web方向)微专业——《Java Web开发实践》大作业的实现。
如非学员,建议避坑


吐槽

  课程提供的前端代码、设计文档质量差(变量命名的不协调;表意不清;前端代码与入口文档不统一……),大作业需求还存在自相矛盾的情况。
  由于上述槽点的存在,与其认为大作业是对 后端基础开发能力 的考核,不如看做是对 前后端交互BUG修复能力 的考核。而这对前端代码的认知有了一定的要求,仅凭微专业本身的内容肯定是不够的


推荐学习资源


项目源码

https://github.com/Hunter1023/SSM_EMALL


项目搭建过程

以下内容待梳理,以更好地表述


1.创建数据库

数据库设计文档的问题
1. 文档中没有商品数量的相关信息,但是前端账务页面却需要展示商品的购买数量
2. 内容表中price的类型是bigint,交易记录表的price类型却为int,最后的评分标准还要求商品价格可以为小数,因此默认存储的价格单位为分(freemarker有默认的数字格式化显示)
3. 在person表的id是自增主键的情况下,不该传入含id的用户数据
4. 交易记录表中的price的含义为单价

提供的数据库设计文档修改:
- person表(将username和nickname都改为小写)

create table person(
id int auto_increment primary key comment "主键", 
username varchar(100) comment "用户名", 
password varchar(100) comment "密码md5加密",
nickname varchar(50) comment "用户昵称",
userType tinyint(3) comment "类型,买家0,卖家1") 
ENGINE=InnoDB  DEFAULT CHARSET=utf8;
  • content表(添加商品库存数)
create table content(
id int auto_increment primary key comment "主键",  
price bigint  comment "当前价格",
title varchar(100) comment "标题",
num int not null comment "库存",
icon blob comment "图片",
abstract varchar(200) comment "摘要",
text blob comment "正文"  )
ENGINE=InnoDB  DEFAULT CHARSET=utf8;
  • trx表(修改购买价格的类型;添加购买数量)
create table trx(
id int auto_increment primary key comment "主键",  
contentId int  comment "内容ID",
personId int comment "用户ID",
num int default null comment "购买数量",
price bigint comment "购买价格",
time bigint comment "购买时间")
ENGINE=InnoDB  DEFAULT CHARSET=utf8;
  • 用户数据(去除id数据的传入)
insert into `person` (`id`, `userName`, `password`, `nickName`, `userType`) values('0','buyer','37254660e226ea65ce6f1efd54233424','buyer','0');
insert into `person` (`id`, `userName`, `password`, `nickName`, `userType`) values('1','seller','981c57a5cfb0f868e064904b8745766f','seller','1');

2.使用Maven搭建项目框架

3.根据src/main/webapp/WEB-INF目录下的web.xml配置相关xml文件

勘误:
web.xml中以下内容重复,删除其中一个

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
  • src/main/resources目录下创建Spring和mybatis的配置文件spring-mybatis.xml
  • src/main/resources目录下创建Spring MVC的配置文件spring-mvc.xml

4.根据课程提供的文档设计Controller


解决freemaker 前端报错,由于前端代码写的不严谨,运行即会报错:

...
FreeMarker template error:
The following has evaluated to null or missing:
==> user  [in template "include/header.ftl" at line 4, column 14]
...

在Spring MVC的xml配置文件中,freemaker的相关配置中增加内容:

<property name="freemarkerSettings">
    <props>
        <!-- 解决前端报错 -->
        <prop key="classic_compatible">true</prop>
    </props>
</property>

参考:freemarker的classic_compatible设置,解决报空错误


  1. 将web.xml中welcome-file由/index.jsp改成/index;删去index.jsp文件
  2. 将前端代码中引用js、css文件的href、src地址由绝对路径改成相对路径,即去掉路径开头的/
  3. header.ftl中的usertype改写为userType(后端user类的属性名为userType,这样才能找对属性名,从而获取值)
  4. account.ftl中购买价格对应的数据由${x.buyPrice}改为${x.buyPrice}*${x.buyNum}
  5. show.ftl中,购买数量的引用是毫无道理的:<span class="totalNum" id="allNum">${product.buyNum}</span>,改成默认的1;查找usertype改为userType
  6. 修改/webapp/css/style.css中的.v-load-result .load{text-align: center;width:100px;margin-left:-50px;white-space: nowrap;},更改width为200px(避免自定义的返回消息显示不全)
  7. pageShow.js中,将num改为buyNum
  8. settleAccount.js购买成功的跳转页面是./account.html,改为./account
  9. 大作业需求.pdf对于商品 能否重复购买,自相矛盾R3.2 买家对于已经购买的内容...购买按钮不可用...;R4.3 用户已经购买过的内容可以重复购买。
    于是本PO选择实现可以重复购买。既然可以重复购买,那么展示购买时的价格显然不合逻辑(多次购买,每次价格可能变动,如何展示),删除相关代码

  10. 前端需要对 发布/编辑商品 输入的金额做限制(如最多两位小数等,数据库表price的类型为Integer,也意味着限定了定价上限)

    • 根据前端代码,项目默认商品的数量为1时,才能说得通(已购买页面,显示的总消费金额只是 累加 商品的单价,无关数量)

…………

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 总体介绍 本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,bootstap写界面。 2. 技术架构 运行环境:tomcat9+mysql5+maven3.8+jdk8 前端技术:jquery 用以数据处理以及前端验证以及生成验证码等等 Bootstrap 前端界面处理 后端技术:servelt+jsp maven进行jar包和第三方库管理 采用jspsmart进行文件的操作处理 数据库:mysql5 基于MVC的分层思想及采用jsp+servelt技术的B/S结构的应用系统,系统主要开发语言为JAVA,JSP。数据库要求使用MySQL8.0,应用服务器选用Tomcat服务器 3. 功能介绍 系统能够提供用户有好的界面 系统具有良好的允许效率 系统具有良好的扩充性,灵活性 系统管理操作简单易懂 3.1 总体结构 3.2 模块详情 学生模块: 注册: 1. 用户点击注册,进行注册; 2. 用户输入注册信息; 3. 校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4. 若信息无错误,提示注册成功,跳转到登录页。 登录: 1. 用户进入系统未进行登录则自行跳转登录页面; 2. 点击忘记密码可进行密码找回; 3. 提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4. 若登录信息不正确,则提示登录错误信息。 查看成绩: 1. 点击查看成绩,打印成绩列表; 2. 支持到处成绩单为pdf格式。 导出成绩: 1. 点击到处按钮; 2. 系统自动处理并到处成pdf。 个人信息管理: 1. 选择上传头像 2. 修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 退出登录: 1. 点击退出登录,自动退出到首页并删除本地和服务器缓存。 教师模块: 注册: 1用户点击注册,进行注册; 2用户输入注册信息; 3校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4若信息无错误,提示注册成功,跳转到登录页。 登录: 1用户进入系统未进行登录则自行跳转登录页面; 2点击忘记密码可进行密码找回; 3提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4若登录信息不正确,则提示登录错误信息。 个人信息管理: 1选择上传头像 2修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 学生管理: 1. 点击添加学生,填写学生信息进行添加; 2. 修改学生信息,点击修改,按需填写要修改的学生信息,进行保存覆盖修改; 3. 点击删除学生数据,提示是否删除,确定则删除,取消则不删除; 4. 查看成绩,点击查看学生成绩,单独列出学生成绩列表; 成绩管理: 1. 点击成绩管理,列出所有学生成绩; 2. 点击修改,勾选需要修改的学生,按需填写修改信息,保存覆盖修改学生信息。 退出登录: 1点击退出登录,自动退出到首页并删除本地和服务器缓存。 4. 页面设计 静态jsp页面和jquery和bootstrap 5. 数据库设计 权限对照表: 表名: role 名称 类型 长度 允许空值 是否主键 注释 uid 整型 11 否 是 权限等级 utype 字符 255 否 否 用户等级名称 分数表: 表名: score 名称 类型 长度 允许空值 是否主键 注释 id 整型 200 否 是 学号 dat 字符 255 否 否 课程1分数 Android 字符 255 否 否 课程2分数 Jsp 字符 255 是 否 课程3分数 学生表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 学号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 学生姓名 Sex 字符 255 是 否 性别 School_date 字符 255 是 否 入学时间 Major 字符 255 是 否 专业 email 字符 255 是 否 邮箱 教师表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 教师工号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 教师姓名 Sex 字符 255 是 否 性别 email 字符 255 是 否 邮箱

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值