ssm权限管理系统1

news2024/11/17 9:54:05

先说一个声明,这个文章可能不完整,也就是说,我只是列举出了项目里面部分疑问难点,然后你们想做,可以去b站查看这个项目的视频。我这里会上传每一部分源代码

svn:

安装好svn服务器之后,我们需要去服务器建立一个仓库,保存我们的代码

 

                 

                 

 

 

服务器里面就会存在这样一个文件

 

之前在仓库的文件就会下载下来

文件是可以更新到指定的历史版本的

每一处提交都是有版本的

第一个版本

我们改一下,重新提交,也就是重新commit了一下 

王五的版本还没有更新

 与服务器内容更新

如何恢复到历史提交的指定版本 

IDEA怎么配置svn版本控制

 下面我们去服务器里面新建一个仓库来保存我们的项目

创建好了,复制一下这个仓库的地址

 

现在我们可以看到服务器下面没有代码

 我们需要在IDEA里面把它提交一下

子父类模块依赖问题

在父工程的pom.xml里面引入了依赖,但是在子模块中没发现,检查一下有没有在子模块中插入如下父引用

web.xml配置问题 

 

 加载spring.xml的核心配置文件

各个模块的依赖关系

那么这个service模块的依赖也会被添加到当前模块里面

我们看一下service里面添加的依赖

dao里面添加上相应的注解,配置好sql语句 

这个注解是通过spring.xml的文件扫描的

关于项目启动的问题 

 利用maven来运行项目

在我们运行项目的模块,我们这个项目也就是web里面,我们添加一个tomcat插件,来运行我们的项目

我们还要在IDEA里面配置一下项目的运行

 运行之前,把整体的项目工程进行clean一下,然后重新发布到仓库去

 

Could not find artifact com.pxx.pxx-ssm1:pxx_ssm1_dao:jar:1.0-SNAPSHOT

如果出现这个问题就是没有打成jar包这个项目,我这是由于如下原因造成的 

 

这个位置默认打成一个jar包运行

另外一个会出现的问题就是

然后把web运行模块也clean一下,然后install一下

运行

maven可能会打印控制台乱码问题

 因为这里连接的是oracle的数据库,所以属性文件配置如下

重新测试运行

上面的状态与出发时间没有显示出来,但是数据库是有状态的

我们去到Product.java中去修改一下信息

重新清理一下当前模块项目与整个工程的项目(重新发布一下包)

下面我们需要去处理下日期,还是在Product.java里面进行处理

先在utils包里面写一个日期处理工具类

 先在我们在进入到domain这个模块里面,处理Product.java代码

 重新clean当前工程与整个项目工程打包,运行

 前端页面修改的一些细节

 这里拿到product-list.jsp来说

这个页面对应的是

头部页面与导航页面我们可以直接引入

上面可以改成我们想要的<th>表头信息

我们还可以添加两个我们需要的th头部

然后下面的th我们只留一个,然后采用jstl表达式进行循环处理

下面做的是访问直接跳转到首页 

 这个首页也就是一个main.jsp页面

主页需要一个图片

直接访问项目还是会进入如下页面

我们去修改一下index.jsp文件

 

现在去做产品添加页面

点击新建,它要跳转到某个页面去

这个页面又会去访问控制器里面的方法,控制器调用service,service调用dao里面的方法

现在我们去写控制器页面

上面在我们使用@Insert注解的时候,数据就是从前端传过来,交给了product对象

这里的插入语法如下

 其实我想说一个问题 

上面这个action的提交${pageContext.request.contextPath}不能省略,因为这个页面不是直接在webapp目录下面存放,也就是说虚拟目录是不能直接访问到的,必须获取到虚拟目录

关于服务器报400的一些问题

一般来说报这个错误的时候,出现的问题,就是前端传给后端的数据不匹配的问题

 

从某种成面来说,springMVC会给我们自动进行数据封装,也就是把前端数据中相应name与Product中的相应属性进行匹配

但是出现这个错误的时候,服务器又没有给我们报一个错误,这个时候我们先去加载一个日志

另外需要注意的是,我们需要开启事务管理,伊瓦涅毕竟是插入数据

 加载完日志之后,就给我们报了一个数据类型不匹配的问题

 使用一个局部注解来进行类型转换吧

 另外当页面保存之后,我们就要去请求查询的控制器的方法去展示数据

 订单详情的整体流程分析

这里注意控制器不再是product产品控制器,而是order控制器

 先来说一下页面跳转问题,进入到服务器之后,页面首先会给我们跳转到main.jsp页面,也就是首页

首页左边引入一个导航栏

 

 然后这个控制器会给我们直接跳转到列表展示页面

表结构分析与表创建

上面说错了product与member应该是主表,这里就是说,1个产品对应多个订单,1个会员也是对应多个订单 

根据我们要去查询的订单详情信息我们去看一下

下面把建表语句给贴进去

drop table orders;
CREATE TABLE orders(
  id varchar2(32) default SYS_GUID() PRIMARY KEY,
  orderNum VARCHAR2(20) NOT NULL UNIQUE,
  orderTime timestamp,
  peopleCount INT,
  orderDesc VARCHAR2(500),
  payType INT,
  orderStatus INT,
  productId varchar2(32),
  memberId varchar2(32),
  FOREIGN KEY (productId) REFERENCES product(id),
  FOREIGN KEY (memberId) REFERENCES member(id)
)
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('0E7231DC797C486290E8713CA3C6ECCC', '12345', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('5DC6A48DD4E94592AE904930EA866AFA', '54321', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('2FF351C4AC744E2092DCF08CFD314420', '67890', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('A0657832D93E4B10AE88A2D4B70B1A28', '98765', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('E4DD4C45EED84870ABA83574A801083E', '11111', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('96CC8BD43C734CC2ACBFF09501B4DD5D', '22222', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('55F9AF582D5A4DB28FB4EC3199385762', '33333', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('CA005CF1BE3C4EF68F88ABC7DF30E976', '44444', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('3081770BC3984EF092D9E99760FDABDE', '55555', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');


-- 会员
drop table member;
CREATE TABLE member(
       id varchar2(32) default SYS_GUID() PRIMARY KEY,
       NAME VARCHAR2(20),
       nickname VARCHAR2(20),
       phoneNum VARCHAR2(20),
       email VARCHAR2(20) 
);
insert into MEMBER (id, name, nickname, phonenum, email)
values ('E61D65F673D54F68B0861025C69773DB', '张三', '小三', '18888888888', 'zs@163.com');


-- 旅客
drop table traveller;
CREATE TABLE traveller(
  id varchar2(32) default SYS_GUID() PRIMARY KEY,
  NAME VARCHAR2(20),
  sex VARCHAR2(20),
  phoneNum VARCHAR2(20),
  credentialsType INT,
  credentialsNum VARCHAR2(50),
  travellerType INT
)
insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)
values ('3FE27DF2A4E44A6DBC5D0FE4651D3D3E', '张龙', '男', '13333333333', 0, '123456789009876543', 0);
insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)
values ('EE7A71FB6945483FBF91543DBE851960', '张小龙', '男', '15555555555', 0, '987654321123456789', 1);


-- 订单与旅客中间表
drop table order_traveller;
CREATE TABLE order_traveller(
  orderId varchar2(32),
  travellerId varchar2(32),
  PRIMARY KEY (orderId,travellerId),
  FOREIGN KEY (orderId) REFERENCES orders(id),
  FOREIGN KEY (travellerId) REFERENCES traveller(id)
)

insert into ORDER_TRAVELLER (orderid, travellerid)
values ('0E7231DC797C486290E8713CA3C6ECCC', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('2FF351C4AC744E2092DCF08CFD314420', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('3081770BC3984EF092D9E99760FDABDE', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('55F9AF582D5A4DB28FB4EC3199385762', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('5DC6A48DD4E94592AE904930EA866AFA', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('96CC8BD43C734CC2ACBFF09501B4DD5D', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('A0657832D93E4B10AE88A2D4B70B1A28', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('CA005CF1BE3C4EF68F88ABC7DF30E976', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('E4DD4C45EED84870ABA83574A801083E', 'EE7A71FB6945483FBF91543DBE851960');

说一个问题,我们在用oracle建表的时候,有时候会提示,表或者视图不存在,原因就是你在创建相关联的表的时候,比如这张表要引用另外一张表的主键,另外一张表如果不存在,就会出现这样的问题

下面先来做一个查询所有订单的操作,先把订单查询这条路打通

写一个orders相关的控制器

 

这里我们需要一个Orders订单相关的类,然后用于我们数据的封装

 

 同时还需要额外的两个类,一个是Traveller类和Member类

Member

 下面去完成service里面的findAll()方法,注意这个service不是ProductService里面的方法,而是IOrderService里面的

下面去把dao层给处理一下

    

在我们进行数据库查询的时候,在类里面不一定包含了完整的字段,我们做一个映射,或者springMVC给我们自动填充数据,有哪些字段,就填充哪些字段就可以了。

现在先去把查询所有订单展示出来

 下面就要去IProductDao里面实现findById这个方法

 我们去order-list.jsp页面看一下我们需要传递什么属性过去

 

 

 现在我们要在这个页面去做查询产品详情

我们通过id去查询一个订单,里面还关联产品信息,会员信息,还有一个旅客信息

我们先去写导入一个产品展示的页面 

 现在去写控制器页面

去把service做了

去完成dao层 

简单分析一下表与表之间的关系 

 

现在要去做Member成员的相关操作,去写IMemberDao接口

现在去做ITravellerDao接口的sql处理

说一下订单表与旅客表之间的查询思路

 

 现在去完成控制器页面Controller,之前的request属性还没有添加

去看一下前端页面怎么做的

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python之勒让德多项式

文章目录勒让德多项式简介求导和积分求根和反演拟合勒让德多项式简介 Legendre多项式是一种非常重要的正交多项式&#xff0c;在物理学中有着广泛的应用&#xff0c;例如点电荷在空间中的激发电势就具备勒让德多项式的形式。其表达形式为 Pn(x)12nn!dndxn{(x2−1)n}P_n(x)\fra…

D. Rorororobot(线段树寻找区间最大值)

Problem - 1709D - Codeforces 有一个网格&#xff0c;由n行和m列组成。行的编号是从1到n&#xff0c;从下到上。列从左至右编号为1至m。第i列的底部ai单元被封锁&#xff08;第1,2,...,ai行的单元&#xff09;&#xff0c;其余n-ai单元没有被封锁。 一个机器人正在穿越这个网…

制冷设备远程监控解决方案

大中型工业制冷设备方面在国内发展还是处在一个发展期&#xff0c;前景广阔&#xff0c;在船舶行业&#xff0c;大型化&#xff0c;个性化&#xff0c;大冷量化是趋势&#xff0c;在石油石化领域&#xff0c;工艺分离、结晶浓缩、提纯催化需求低温&#xff0c;而在建筑领域&…

Vue+element 实现影响榜功能

目录 一、英雄榜实现 1、引入element Lib 和VUE 2、设置滚动条动态显示 1&#xff09;设置对应的VUE参数名&#xff1a;scrollHiddenVar 2&#xff09;VUE data定义 3&#xff09;mounted 设置鼠标监听事件 4&#xff09;监听方法 3、设置element Table 4、table 数组…

CentOS 7 升级 GCC/G++ 版本

CentOS 7官方源的 GCC 最新版本是 4.8.5&#xff0c;该版本发布于2015年&#xff0c;年代久远且不支持高版本的 C 编译了&#xff0c;因此有必要安装高版本的 GCC。   红帽&#xff08;RedHat&#xff09;中拥有多个已经编译好了的高版本 GCC&#xff0c;但未更新到 base 和 …

再说多线程(四)——Semaphore类

Semaphore提供了更精细化的多线程控制&#xff0c;如果你看过上一节的Mutex介绍&#xff0c;那么你应该很容易理解Semaphore类。我们直接先以例子开头&#xff0c;然后在介绍这个类。1.Semaphore实例看下面的代码&#xff1a;using System; using System.Threading;namespace S…

【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升

&#x1f331;博主简介&#xff1a;是瑶瑶子啦&#xff0c;一名大一计科生&#xff0c;目前在努力学习C进阶,JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛&#xff01; &#x1f4dc;所属专栏&#xff1a;爪洼岛冒险记 ✈往期博文回顾:【爪洼岛冒险记】第2站&#xff…

Allegro172版本如何快速打开和关闭层面操作指导

Allegro172版本如何快速打开和关闭层面操作指导 在做PCB设计的时候,打开和关闭某个层面是非常频繁的操作,尤其是丝印等等层面。 Allgeo升级到了172版本的时候,可以将常用的层面添加到Visibility菜单里,就不需要频繁打开颜色管理器打卡和关闭层面了,如下图 具体操作如下 打…

常见锁策略,CAS,synchronized原理

1.常见锁策略锁策略不仅仅局限于java,任何与"锁"相关的话题(操作系统,数据库...),都会涉及到锁策略,这些策略是给锁的实现者用来参考的1.1乐观锁vs悲观锁这个不是两把具体的锁.而是两类锁,是在锁冲突的概率上进行区分的乐观锁指的是预测锁竞争不是很激烈(做的工作相对…

Ambari2.7.5安装Flink1.14

文章目录下载Flink配置安装源下载ambari-flink-service服务修改配置文件创建用户和组重启Ambari登录Ambari安装Flink提交Flink任务Flink 直接单独提交到 On Yarn指定Flink在Yarn跑的容器运行Flink异常异常1异常2异常3下载Flink配置安装源 wget https://archive.apache.org/dis…

Goby+AWVS 联动

系列文章 AWVS安装与激活 AWVS扫描Web应用程序 AWVS扫描报告分析 GobyAWVS 联动 1.Goby简介 Goby是针对目标企业梳理最全面的工具&#xff0c;同构goby可以清晰的扫描出ip地址开放的端口&#xff0c;以及端口对应的服务&#xff0c;于此同事会根据开放的端口及应用进行实战…

分享116个ASP源码,总有一款适合您

ASP源码 分享116个ASP源码&#xff0c;总有一款适合您 116个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1LEs24-feWjvhac6vzyVecg?pwdnosx 提取码&#xff1a;nosx 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&am…

2.线性表

##线性结构 基本特点&#xff1a;结构中各元素之间满足线性关系。 线性关系&#xff1a;数据元素之间存在一对一的关系 1.存在唯一的开始元素 2.存在唯一的终止元素 3.除了开始元素和终止元素&#xff0c;其他元素均有且仅有一个直接前驱元素和一个直接后驱元素。 所有元素可排…

Sass进阶指南 -- 写出更优雅的样式表

我以为已经会了&#xff0c;之前在公司写项目基本都是用sass写样式&#xff0c;十分顺手。直到有段时间&#xff0c;我准备参考Element Plus来设计自己组件库的工程结构&#xff0c;看到Element Plus那些优雅的sass用法时&#xff0c;我开始为我的浅薄和无知感到羞愧。这便开始…

Python学习笔记——集合

集合&#xff08;set&#xff09;是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合&#xff0c;注意&#xff1a;创建一个空集合必须用 set() 而不是 { }&#xff0c;因为 { } 是用来创建一个空字典。创建格式&#xff1a;parame {value01,value02,..…

LeetCode[313]超级丑数

难度&#xff1a;中等题目&#xff1a;超级丑数 是一个正整数&#xff0c;并满足其所有质因数都出现在质数数组 primes中。给你一个整数 n和一个整数数组 primes&#xff0c;返回第 n个 超级丑数 。题目数据保证第 n个 超级丑数 在 32-bit 带符号整数范围内。示例 1&#xff1a…

C++ 类和对象(三)

类和对象&#xff08;一&#xff09; 类和对象&#xff08;二&#xff09; 日期类 目录 一. 再谈构造函数 1.构造函数体赋值 2.初始化列表 3.隐式类型转换与explicit关键字 4.C11优化 二. static成员 1.概念 2.特性 三. 友元 1.友元函数 2.友元类 四. 内部…

Java 如何设计一款小游戏详细讲解(二)

继续上面(一)&#xff0c;Java 如何设计一款小游戏详细讲解(一)步骤步骤一接下来我们主要完成GameJFrame&#xff0c;就是拼图游戏的界面及代码。这里接下来完成菜单的设置&#xff0c;将主界面的代码放到一个方法中&#xff0c;像下面这样&#xff0c;接下来我们书写菜单的代码…

基于Python实现种差值方法(完整代码详细教程)

三种插值方法都是使用Python自己实现的。1.1 最近邻插值寻找每个中心点周围的八个点中有无未丢失的点&#xff0c;如果有的话就赋值为第一个找到的点&#xff0c;如果没有就扩大范围再次寻找&#xff0c;在最大范围内都找不到的话就跳过。1.2 双线性插值使用解方程的方法求解&a…

(十八)Threads异步和多线程(Thread、Threadpool、Task)-语言进阶2

Threads异步和多线程-语言进阶2一、Thread1. 线程启动2. 线程等待3.前台线程/后台线程4.扩展thread封装回调二、Threadpool1.线程池2.线程池使用3.ManualResetEvent 线程池等待三、Task1. Task启动方式2.waitall 、waitany1.waitall2.waitany3.WaitAll、waitany场景4. 应用&…