在网上书店数据库中进行简单查询

图片说明图片说明图片说明图片说明图片说明

项目1:在网上书店数据库中进行简单查询
(1)查询会员表,输出积分高于500的会员昵称和联系电话
(2)查询会员表,输出积分低于200的会员的昵称和联系电话,并且分别用英文username、telephone指定别名
(3)查询会员表,输出e-mail是QQ邮箱的会员的昵称和e-mail
(4)查询订购表,输出订购日期是2016年10月的订单的详细信息
(5)查询订购表,输出订货的会员的编号,要求删除重复行
(6)查询图书表,输出图书的名称和价格,并把查询结果按价格降序排列
(7)查询图书表,输出价格最高的三种图书的名称和价格
项目2:在网上书店数据库查询中使用集合函数
(1)查询图书表,输出所有图书的最高价格,最低价格,平均价格
(2)查询图书表,输出每一类图书的数量
(3)查询图书表,输出每一类图书的打折价格中,最高价格,最低价格,平均价格
(4)查询订购表,输出订购超过3本的会员的编号和订购数量
项目3:在网上书店数据库查询中使用连接查询和子查询
(1)输出所有图书的图书名称、价格以及所属类别名称
(2)输出订购了“平凡的世界”的会员昵称、联系电话、订购数量
(3)输出订购了图书的会员的昵称和联系电话
(4)输出没人订购的图书的名称和价格
(5)输出详细订购信息,包括订购图书的会员呢称,联系电话,所订图书名称,数量,价格,折扣价

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

如何显示qq说说的评论内容和回复内容?在数据库中如何存储?

如何显示qq说说的评论内容和回复内容?在数据库中如何存储?使用node.js调用数据库,如何输出一条说说的多条评论?

基于jsp的网上书店系统代码调试

从网上下载了一个网上书店系统的代码,导入到myeclipse中好多错误,数据库用的是mysql,我只学了一点点jsp的内容,自己不会调,这个系统我急着用,谁能帮我弄一下,可以加我qq帮我远程调一下吗?谢谢了~qq:1096273561

session做的购物车,难难难,购物车想用session做数据库中没有对应的表,怎么实现

购物车想用session做数据库中没有对应的表,怎么实现,难难难

用c++写一个网上书店管理系统

不用数据库和图形界面 用文件存数据 源代码 有讲解最好

简易书店商品管理系统

书店需要一个能管理期刊杂志、书籍、音乐CD 和VCD等商品信息的系统,采用面向对象程序设计思想设计期刊杂志、书籍、音乐CD 和VCD类,假定每件商品的信息可以通过读入条码输入系统,实现系统增删改查、结账模块的商品价格计算和清单打印操作。 具体要求: (1) 期刊杂志有期刊名、发行刊号、发行周期、期、价格等信息; (2) 书籍有书名、作者、出版社、ISBN、价格等信息; (3) 音乐CD 有CD 名、演唱(奏)者、风格、曲目时间、价格等信息; (4) VCD 有片名、曲目时间、价格等信息; (5) 设计描述各种商品信息的类层次结构; (6) 用Windows API完成图形用户界面设计,可实现期刊杂志、书籍、音乐CD 和VCD数据的增删改查; (7) 能读入、保存书店商品信息; (8) 能输出结账模块的商品价格计算和清单打印操作。

在一家网上书店中,不同的图书有很多不同的图书(Book)折扣政策(Discount)

在一家网上书店中,不同的图书有很多不同的图书(Book)折扣政策(Discount): 一些书没有折扣(NoDiscount);一些书拥有固定折扣(FixedDiscount); 其它的则为百分比折扣方式(PercentDiscount)。 你怎么样来解决价格计算的问题呢? 题目要求:请根据以上题目描述,说明采用的设计模式,给出系统的UML设计类图,并用Java予以实现。

java web网上书店有个问题 求大神帮忙看下

前一个页面一个表单传值, <form action="/BookStore/servlet/OrderServlet" method="post"> 请输入收货地址:<input type="text" name="address" style="height:26px;width:400px;"> <input type="submit" value="确认订单" style="height:26px;"> </form> 后面在OrderServlet中处理 ![图片说明](https://img-ask.csdn.net/upload/201506/03/1433327754_479836.png) 其中的数据库中的操作没有问题 但是连到OrderServlet中出现 ![图片说明](https://img-ask.csdn.net/upload/201506/03/1433327745_791802.png)求大神帮忙!!!!!

做一个关于网上书店的网页,想要求一些帮助

建立在Windows平台上,基于B/S结构的一个网上书店。通过这个网上书店,可以实现简单的电子商务功能。 2. 一般功能需求: 整个网站风格一致,较为美观,有完善的导航机制。普通用户从前台首页进入,员工用户从后台首页进入(也即实现两个模板页)。用户使用的页面上必须有书籍广告轮播。 3.总体结构和模块设计: 前台部分由普通用户使用,后台部分由员工使用,任何对新闻、产品等的修改,只可从后台登录操作。 功能结构图如下: 基本情况、性质等 公司介绍 荣誉、资质等 地址、联系方式 浏览新闻(标题等) 新闻 查看新闻 编辑新闻 增加新闻 删除新闻 分类浏览 按书名查询 产品浏览 按作者查询 查看详细信息 类别修改 新增类别 产品管理 产品修改 新增产品 删除产品 上传文件 注册 登录 用户管理 修改密码 修改权限 希望能给与我帮助,

C语言链表问题,基于书店存货清单的设计

一、 设计题目 基于链表的书店存货清单 二、 设计要求 书店通常使用个人电脑设置一个清单来管理书籍的存货情况,该清单记录每本书籍的书名,作者,出版社,在清单中的位置等信息。 根据以上的分析,编程要求: 用结构体自行定义几本书籍,要求包括书籍名称,作者,出版社,出版日期,价格,在目录中的位置; 当从键盘输入某本书的名称和作者姓名,如果能查询到则显示该书籍的所有信息,并提示“请输入所需数量”,如果所需数量在库存范围内,则显示总价,否则,显示“所需数量不在库存范围内”,接着继续提示顾客是否还想买其他书籍,如果输入“y”或“Y”表示继续输入下一本书的名称和作者姓名,进行下一轮查询;如果不能查询到该书籍,则显示“谢谢,再见!”,依次类推,不断循环。

c++primer 第四版:在书店程序中,我们使用了加法操作符而不是复合赋值操作符

c++primer 第四版:在书店程序中,我们使用了加法操作符而不是复合赋值操 作符将 trans 加到 total 中,为什么我们不使用复合赋 值操作符?

el表达式:怎么用el表达式将mysql中的数据读取出来??急用

# 怎么用el表达式将mysql中的数据读取出来??急用 在做关于“在线书店”的项目

mysql多表查询怎么输出这样的结果呢

我有两个表a和b,a表中存的是学生的姓名是固定人数的,而b表中会根据每个人自己填写年龄的,怎么查询才会把姓表全显示出来,而年龄填了就显示,没填的就为空呢? 数据存在两个表里,图片是最终输出样子

询问大佬们是否有asp.net做的网上书城源码,进行参考

询问大佬们是否有asp.net做的网上书城源码,进行参考,可以有报酬,主要毕业设计有些不太会弄,希望用户端的开发,能够参考一下

php网上图书销售系统的源码

php网上图书销售系统的源码,asp可以用到php的代码中吗,他们的数据库文件可以使用一个吗

C++程序设计图书管理系统

某书店聘请你为其开发一个“图书管理系统”,书店经理希望该系统能完成收银、图书销售和库存管理功能。其中书库文件中包含了该书店所有的图书。该系统完成的主要功能如下: (1) 计算总的销售额和销售税。 (2) 当用户购买一本书后,就应当将这本书从书库中扣除。 (3) 实现对书库的增加、修改和查找功能。 (4) 显示多种报表。 (5) 采用文件保存数据。所有对书库的操作(例如增加、删除和修改等)都要反映在文件中。 该系统可以分为如下三个模块: (1) 收银模块,即前台销售管理模块。 (2) 书库管理模块。 (3) 报表模块。 当运行该系统时,应当在屏幕上显示一个菜单,供用户选择三个模块之一。

用java+SQL server+swing做图书馆管理系统

用java+SQL server+swing做图书馆管理系统是先建数据库还是先做java?要从哪着手建呢? 大二的工程设计求指导等救命

关于书店的一个小程序,c++写的。.大家帮忙看看怎么运行不了???

代码可以在这儿粘贴 #include <iostream> #include <string> using namespace std; class Sales_data { friend std::istream& operator>>(std::istream&, Sales_data&); friend std::ostream& operator<<(std::ostream&, const Sales_data&); friend bool operator < (const Sales_data&,const Sales_data&); friend bool operator ==(const Sales_data&, const Sales_data&); public: Sales_data(){ default; } Sales_data(const std::string &book) :bookNo(book){ } Sales_data(std::istream &is) { is >> *this; } public: Sales_data& operator +=(const Sales_data&); std::string isbn() const{ return bookNo; } private: std::string bookNo; unsigned units_sold = 0; double sellingprice = 0.0; double saleprice = 0.0; double discount = 0.0; }; inline bool comparaIsbn(const Sales_data &lhs, const Sales_data &rhs) {return lhs.isbn() == rhs.isbn();} Sales_data operator + (const Salea_data&, const Salea_data&); inline bool operator==(const Sales_data&lhs, const Sales_data&rhs) { return lhs.units_sold == rhs.units_sold&& lhs.sellingprice == rhs.sellingprice&& lhs.saleprice == rhs.saleprice&& lhs.isbn() == rhs.isbn(); } inline bool operator!=(const Sales_data&lhs, const Sales_data&rhs) { return!(lhs == rhs); } Sales_data& Sales_data::operator+=(const Sales_data&rhs) { units_sold += rhs.units_sold; saleprice = (rhs.saleprice*rhs.units_sold + saleprice*units_sold) / (rhs.units_sold + units_sold); if (sellingprice != 0) discount = saleprice / sellingprice; return *this; } Sales_data operator+(const Sales_data&lhs, const Sales_data&rhs) { Sales_data ret(lhs); ret += rhs; return ret; } std::istream&operator>>(std::istream& in, sales_data& s) { in >> s.bookNo >> s.units_sold >> s.sellingprice >> s.saleprice; if (in && s.sellingprice != 0) s.discount = s.saleprice / s.sellingprice; else s = Sales_data(); return in; } std::ostream& operator<<(std::ostream&out, const Sales_data&s) { out << s.isbn() << "" << s.units_sold << "" << s.sellingprice << "" << s.saleprice << "" << s.discount; return out; } int main() { Sales_data book; std::cout << "请输入销售记录:" << std::endl; while (std::cin >> book){ std::cout << "ISBN、售出本数、原始价格、实售价格、折扣为" << book << std::endl; } Sales_data trans1, trans2; std::cout << "请输入两条ISBN相同的销售记录:" << std::endl; std::cin >> trans1 >> trans2; if (comparaIsbn(trans1, trans2)) std::cout << "汇总信息:ISBN、售出本数、原始价格、实售价格、折扣为" << trans1 + trans2 << std::endl; else std::cout << "两条销售记录的ISBN不同" << std::endl; Sales_data total, trans; std::cout << "请输入几条ISBN相同的销售记录:" << std::endl; if (std::cin >> total){ while (std::cin>>trans) if (compareIsbn(total, trans)) total += trans; else{ std::cout << "当前书籍ISBN不同" << std::endl; break; } std::cout << "有效汇总信息:ISBN、售出本数、原始价格、实售价格、折扣为" << total << std::endl; } else{ std::cout << "没有数据" << std::endl; return -1; } int num = 1; std::cout << "请输入若干销售记录:" << std::endl; if (std:; cin >> trans1){ while (std::cin>>trans2) if (comparaIsbn(trans1, trans2)) num++; else{ std::cout << trans1.isbn() << "共有" << num << "条销售记录" << std::endl; trans1 == trans2; num = 1; } std::cout << trans1.isbn() << "共有" << num << "条销售记录" << std::endl; } else{ std::cout << "没有数据" << std::endl; return -1; } return 0; }

简单目录管理系统的设计与实现

我怎么弄都无法设计好头文件 ****哪位大佬帮忙看看 头文件所处位置在#号标记的地方 typedef struct CTNode { int child; struct CTNode *next; }childnode,*childptr; typedef struct { elemtype name[20]; int number; int parent; int sign; childptr firstchild; }CTbox; typedef struct { CTbox nodes[maxsize]; int n; int r; }CTree; void linkcreat(childptr &L) //带头结点的链表的建立 { childnode *p,*q; L=(childptr)malloc(sizeof(childnode)); L->next=NULL; p=L; printf("一次性输入子目录在数组中的位置(数据之间空格),输入-2结束\n"); //p->child=getchar(); //输入字符会转换成ASCII值存储 std::cin>>p->child; while(p->child!=-2) { q=p; p=(childptr)malloc(sizeof(childnode)); //printf("输入子目录位置:"); //p->child=getchar(); std::cin>>p->child; p->next=q; } L=p; //以上采用了倒序插入结点法建立链表 } (2)void creatTree(CTree &T)//将目录系统画成树形结构,然后树的层序建立目录系统 { int i,j,n; printf("开始建立级数为4的目录系统:\n"); printf("目录的个数为:"); std::cin>>T.n; T.r=0; //主目录存放在数组的首地址 for(i=0;i<T.n;i++) { printf(" "); printf("请输入目录的编号:"); std::cin>>T.nodes[i].number; printf(" "); printf("请输入目录的名称:"); std::cin>>T.nodes[i].name; printf(" "); printf("该目录所在级数为(1~4)"); std::cin>>T.nodes[i].sign; printf(" "); printf("该目录的上级目录所在位置(若没有则输入-1):"); std::cin>>T.nodes[i].parent; printf("\n"); //system ("cls"); } //接下来各目录的子目录链表 for(j=0;j<T.n;j++) { printf("第%d个目录的子目录的建立:\n",j+1); linkcreat(T.nodes[j].firstchild); //system ("cls"); } printf("简单的(4级)目录系统已建好,可以使用!\n"); } (3)int searchname(CTree &T,elemtype data[]) //返回数据data在系统中的位置,不在其中返回-1 { int i,a=-1; for(i=0;i<T.n;i++) { if(strcmp(T.nodes[i].name,data)==0) //data在系统中 a=i; } return a; } (4)void search(CTree &T) //查询目录信息 { elemtype data[20]; int i,j,m,n; childnode *p,*q; if(T.nodes[0].firstchild==NULL) printf("系统为空,请先建立系统!\n"); else {printf("请输入您要查询的目录名称:"); std::cin>>data; if(searchname(T,data)==-1) printf("对不起,您输入的目录不在本系统中\n"); else { printf("您要查询的信息为:\n"); n=searchname(T,data); printf(" %s的编号为%d \n",T.nodes[n].name,T.nodes[n].number); printf(" 该目录的上级目录为:"); if(n==0) printf(" 该目录已为主目录,无上级目录\n"); else { m=T.nodes[n].parent; printf("%s\n",T.nodes[m].name); } printf(" 该目录的子目录为:"); if(T.nodes[n].firstchild->next==NULL) printf("没有子目录\n"); else { p=T.nodes[n].firstchild->next; while(p!=NULL) { j=p->child; printf("%s ",T.nodes[j].name); p=p->next; } } printf("\n"); } } } (5)void changename(CTree &T) //更改目录名称 { elemtype dname[20],chname[20]; int m,n; if(T.nodes[0].firstchild==NULL) printf("系统为空,请先建立系统!\n"); else { printf("请输入您要修改的目录名称(即修改对象):"); std::cin>>dname; n=searchname(T,dname); if(n==-1) printf("对不起,您所输入的目录不在系统中\n"); else { printf("更改该目录名称为:"); std::cin>>chname; strcpy(T.nodes[n].name,chname); } } } //按上下级关系输出,即输出某目录带其子目录 (6)void oncetravel(CTree &T,int j)//第j级目录的子目录输出 { int i,m,n; childnode *p; for(i=0;i<T.n;i++) { if(T.nodes[i].sign==j) { p=T.nodes[i].firstchild->next; if(p!=NULL) { while(p!=NULL) { m=p->child; n=T.nodes[m].sign; printf("\n %s (%d)-------- %s (%d) ",T.nodes [n].name,T.nodes[n].sign,T.nodes[m].name,T.nodes[m].sign); p=p->next; } } } } } (7)void firsttravel(CTree &T) //默认主目录为0,输出主目录的子目录 { int i,j,k,m=T.r; childnode *p; p=T.nodes[m].firstchild->next; while(p!=NULL) { m=p->child; printf("\n %s (%d)-------- %s (%d) ",T.nodes[T.r].name,T.nodes [T.r].sign,T.nodes[m].name,T.nodes[m].sign); p=p->next; } //printf(" hello!"); } (8)void travel(CTree &T) //按上下级关系输出 { if(T.nodes[0].firstchild==NULL) printf("系统为空,请先建立系统!\n"); else { int n=M,e,j,k,m; printf(" **********输出目录菜单***************\n\n"); printf(" ****** 1.一级子目录输出 ******\n"); printf(" ****** 2.二级子目录输出 ******\n"); printf(" ****** 3.三级子目录输出 ******\n"); printf(" *************************************\n\n"); printf(" 您选择:"); std::cin>>e; printf("\n"); while(e!=-1) { switch(e) { case 1: printf("一级子目录输出: "); firsttravel(T); printf("\n"); break; case 2: printf("二级子目录输出: "); oncetravel(T,2); printf("\n"); break; case 3: printf("三级子目录输出: "); oncetravel(T,3); printf("\n"); break; } printf(" \n请输入选择(-1结束)\n"); std::cin>>e; } } } (9)void leveltravel(CTree &T) //按树的层序输出 { if(T.nodes[0].firstchild==NULL) printf("系统为空,请先建立系统!\n"); else { for(int i=0;i<T.n;i++) { printf(" 目录名:%s ,",T.nodes[i].name); printf(" 编号: %d ",T.nodes[i].number); printf("\n"); } } } (10)void deletelink(childnode *&L) //销毁链表 { childnode *p,*q; p=L; q=p; while(q!=NULL) { q=p->next; free(p); p=q; } } (11)void deletesystem(CTree &T) //销毁树,即销毁已建的目录系统 { if(T.nodes[0].firstchild==NULL) printf("系统为空,请先建立系统!\n"); else { for(int a=0;a<T.n;a++) { deletelink(T.nodes[a].firstchild);//先消除子目录链表 T.nodes[a].firstchild; } printf("该目录系统已删除,可以重新创建系统\n"); } } void menu() { printf(" ****************************************************\n"); printf(" ************* 简单目录管理系统 *************\n"); printf(" ***** ****\n"); printf(" ****** *****请选择您的操作(0~6) **** ******** \n \n"); printf(" ****** 1.新建目录系统 ********* \n"); printf(" ****** 2.查询目录信息 ********* \n"); printf(" ****** 3.修改目录名称 ********* \n"); printf(" ****** 4.按上下级关系输出目录 ********* \n"); printf(" ****** 5.按树的层序输出目录 ********* \n"); printf(" ****** 6.删除目录系统 ********* \n"); printf(" ****** 0.退出系统 ********* \n"); printf(" ****************************************************\n"); printf(" ****************************************************\n"); //printf("请输入你的选择:\n"); } # # # # # # ## include<iostream.h> # # # # # # ## # ## # #include<stdio.h> # # # # # # ## #include<stdlib.h> # # # # # # ## int main() { CTree CT; CT.r=0; CT.nodes[CT.r].firstchild=NULL; int e; menu(); printf("请输入你的选择:"); std::cin>>e; do{ switch(e) { case 1:printf(" 您选择了新建系统\n"); creatTree(CT); system("pause"); system("cls"); menu(); break; case 2:printf(" 您选择了查询目录\n"); search(CT); system("pause"); system("cls"); menu(); break; case 3:printf(" 您选择了修改目录\n"); changename(CT); system("pause"); system("cls"); menu();; break; case 4:system("cls"); printf(" 您选择了按上下级关系输出目录\n"); travel(CT); system("pause"); system("cls"); menu(); break; case 5:printf(" 您选择了按树的层序输出目录\n"); leveltravel(CT); system("pause"); system("cls"); menu(); break; case 6:deletesystem(CT); system("pause"); system("cls"); menu(); break; case 0:exit(0); break; } printf("请输入您的选择:"); std::cin>>e; } while(e>=0&&e<7); system("pause"); return 0; }

基于springmvc+mybatis的登录表单提交后404

前端填写正确的用户名和密码后,提交登录,浏览器显示404,前端提交的地址是/userlogin,后端对接的/user/userlogin也是对的,浏览器f12里显示请求的确成功传给了后端,但是不知道为什么404。用的是tomcat8.5,java版本1.8,phpstudy最新版,mysql5.7.26。 ## 这是所用到的包: ![图片说明](https://img-ask.csdn.net/upload/202002/01/1580567617_880785.jpg) ## 这是目录结构: ![图片说明](https://img-ask.csdn.net/upload/202002/01/1580567511_223692.jpg) ## 这是web.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc_test</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 加载spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/context-config.xml</param-value> </context-param> <!-- 配置前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- DispatcherServlet在初始化方法里面会读取该初始化参数的值来获得 spring配置文件的位置 ,然后启动spring容器。 --> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 配置字符编码 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ``` ## 这是context-config.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描service包下的注解 --> <context:component-scan base-package="com.test.service"></context:component-scan> <!-- 配置数据库 --> <!-- 加载配置文件 --> <!-- <context:property-placeholder location="classpath:jdbc.properties"/> --> <bean id="dateSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/Eday_Test"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean> <!-- 配置Sqlsessionfactory并将数据源注入 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 引入数据源 --> <property name="dateSource" ref="dateSource"></property> <!-- 载入mybatis配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!-- 载入配置mapper映射的xml --> <property name="mapperLocations" value="classpath:com/test/mapper/*.xml"></property> </bean> <!-- 配置扫描mapper接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackge" value="com.test.mapper"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dateSource" ref="dateSource"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> </beans> ``` ## 这是mybatis-config.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <!-- 配置别名 --> <typeAlias alias="User" type="com.test.pojo.User"/> </typeAliases> </configuration> ``` ## 这是springmvc-config.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 扫描controller包下的注解 --> <context:component-scan base-package="com.test.controller"></context:component-scan> <!-- 开启注解 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 静态资源访问 --> <mvc:default-servlet-handler/> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置试图解析的默认路径,即配置页面的根路径 --> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans> ``` ## 这是UserController.java: ```java package com.test.controller; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.test.pojo.User; import com.test.service.UserService; //声明控制器 @Controller //设置bean的scope属性为多例(prototype) @Scope("prototype") //设置请求映射,当客户端请求/user时,转到该控制器处理 @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value="/userlogin") public ModelAndView login(String user_Name,String user_pwd,ModelAndView mv,HttpSession session){ //调用userService中的login方法处理user实体类对象 User user = userService.login(user_Name,user_pwd); //登录的逻辑判断,判断条件是返回结果不为空 if(user!=null){ //登陆成功,将user对象设置到HttpSession作用范围域中,相当于服务端的cookie,有效时间默认30分钟 //在程序运行期间,在任意页面都可以提取它的值。 session.setAttribute("user",user); //转发到main请求 //登录成功,跳转页面 mv.setViewName("login/login-success"); }else{ //登录失败,向前端传递失败信息 mv.addObject("message","用户名或密码错误,请重新输入!"); //登录失败,跳转到登录页面 mv.setViewName("login"); } return mv; } //跳转到用户注册界面 @RequestMapping(value="/userregister"/*,method=RequestMethod.POST*/) public String register(User user){ String user_Name = user.getUser_Name(); //如果数据库中没有该用户,可以注册,否则跳转页面 if(userService.findByUserName(user_Name)==null){ //添加用户 userService.register(user); //注册成功,跳转到主页面 return "index"; }else{ //注册失败,跳转到错误页面 return "error"; } } } ``` ## 这是UserMapper.java: ```java package com.test.mapper; import org.apache.ibatis.annotations.Param; import com.test.pojo.User; public interface UserMapper { //根据用户名和密码查找,mybatis中有多个参数时,需要使用@Param注解 User findByUserNameAndPassword(@Param("user_Name")String user_Name,@Param("user_Pwd")String user_Pwd); //增加用户 void addUser(User user); //根据用户名查询 User findByUserName(String user_Name); } ``` ## 这是UserMapper.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.tes.mapper.UserMapper"> <!-- 根据用户名和密码查询 --> <select id="findByUserNameAndPasssword" resultType="User"> select * from user where user_Name=#{user_Name} and user_Pwd=#{user_Pwd} </select> <!-- 增加用户 --> <insert id="addUser" parameterType="User"> insert into user (user_Name,user_Pwd,user_Email,user_NickName,user_Birth,user_Phone,user_InvitationCode) values(#{user_Name},#{user_Pwd},#{user_Email},#{user_NickName},#{user_Birth},#{user_Phone},#{user_InvitationCode}) </insert> <!-- 根据用户名查询 --> <select id="findByUserName" resultType="User"> select * from user where user_Name=#{user_Name} </select> </mapper> ``` ## 这是User.java: ```java package com.test.pojo; import java.sql.Timestamp; public class User { private int user_Id; private String user_Name; private int user_Pwd; private String user_Email; private String user_NickName; private Timestamp user_Time; private String user_Birth; private int user_Fans; private int user_Follow; private int user_Score; private String user_HeadImgAddr; private int user_Phone; private String user_InvitationCode; public int getUser_Id() { return user_Id; } public void setUser_Id(int user_Id) { this.user_Id = user_Id; } public String getUser_Name() { return user_Name; } public void setUser_Name(String user_Name) { this.user_Name = user_Name; } public int getUser_Pwd() { return user_Pwd; } public void setUser_Pwd(int user_Pwd) { this.user_Pwd = user_Pwd; } public String getUser_Email() { return user_Email; } public void setUser_Email(String user_Email) { this.user_Email = user_Email; } public String getUser_NickName() { return user_NickName; } public void setUser_NickName(String user_NickName) { this.user_NickName = user_NickName; } public Timestamp getUser_Time() { return user_Time; } public void setUser_Time(Timestamp user_Time) { this.user_Time = user_Time; } public String getUser_Birth() { return user_Birth; } public void setUser_Birth(String user_Birth) { this.user_Birth = user_Birth; } public int getUser_Fans() { return user_Fans; } public void setUser_Fans(int user_Fans) { this.user_Fans = user_Fans; } public int getUser_Follow() { return user_Follow; } public void setUser_Follow(int user_Follow) { this.user_Follow = user_Follow; } public int getUser_Score() { return user_Score; } public void setUser_Score(int user_Score) { this.user_Score = user_Score; } public String getUser_HeadImgAddr() { return user_HeadImgAddr; } public void setUser_HeadImgAddr(String user_HeadImgAddr) { this.user_HeadImgAddr = user_HeadImgAddr; } public int getUser_Phone() { return user_Phone; } public void setUser_Phone(int user_Phone) { this.user_Phone = user_Phone; } public String getUser_InvitationCode() { return user_InvitationCode; } public void setUser_InvitationCode(String user_InvitationCode) { this.user_InvitationCode = user_InvitationCode; } @Override public String toString() { return "User [user_Id=" + user_Id + ", user_Name=" + user_Name + ", user_Pwd=" + user_Pwd + ", user_Email=" + user_Email + ", user_NickName=" + user_NickName + ", user_Time=" + user_Time + ", user_Birth=" + user_Birth + ", user_Fans=" + user_Fans + ", user_Follow=" + user_Follow + ", user_Score=" + user_Score + ", user_HeadImgAddr=" + user_HeadImgAddr + ", user_Phone=" + user_Phone + ", user_InvitationCode=" + user_InvitationCode + "]"; } } ``` ## 这是UserService.java: ```java package com.test.service; import com.test.pojo.User; public interface UserService { //通过用户名及密码核查用户登录 User login(String user_Name,String user_Pwd); //增加用户 void register(User user); //根据用户名查询 User findByUserName(String user); } ``` ## 这是UserServiceImpl.java: ```java package com.test.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.test.mapper.UserMapper; import com.test.pojo.User; import com.test.service.UserService; @Service @Transactional public class UserServiceImpl implements UserService { //注入UserMapper接口 @Autowired private UserMapper userMapper; //登录,根据用户名和密码进行查询 @Override public User login(String user_Name,String user_Pwd){ return userMapper.findByUserNameAndPassword(user_Name,user_Pwd); } //注册,增加用户 @Override public void register(User user){ userMapper.addUser(user); } //根据用户名查询 @Override public User findByUserName(String user_Name){ return userMapper.findByUserName(user_Name); } } ``` ##这是login.jsp ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="../css/login.css" /> <title>登录</title> </head> <body> <!--导航栏--> <nav class="nav"> <ul> <li class="logo"><a href="#">Eday</a></li> <li class="shouye"><a href="../index.jsp" class="neirong">首页</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">文章列表</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">留言板</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">更新日志</a></li> </ul> </nav> <!--登录板块--> <header class="header"> <p class="logintitle"> <b>登录</b> </p> <form action="${pageContext.request.contextPath }/user/userlogin" method="post" class=login-form> <p class= login-username-p> <label for="username" class="login-username-text">用户名:</label> <input type=text name="user_Name" class="login-username-input"> <br><a href="register.jsp" class=login-register>注册</a> </p> <p class="login-psw-p"> <label for="psw" class="login-psw-text">密码:</label> <input type=password name="user_Pwd" class="login-psw-input"> <br><a href="#" class=login-forget>忘记密码</a> </p> <div class=login-button-div> <label for=button></label> <button type=sublim class=login-button>登录</button> </div> </form> </header> </body> </html> ``` ## 这是login-success.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功,请等待跳转...</title> <script type="text/javascript"> onload=function(){ setInterval(go, 1000); }; var x=3; //利用了全局变量来执行 function go(){ x--; if(x>0){ document.getElementById("sp").innerHTML=x; //每次设置的x的值都不一样了。 }else{ location.href='../index.jsp'; } } </script> </head> <body> <!--导航栏--> <nav class="nav"> <ul> <li class="logo"><a href="#">Eday</a></li> <li class="shouye"><a href="../index.jsp" class="neirong">首页</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">文章列表</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">留言板</a></li> <li class="fgx">|</li> <li><a href="#" class="neirong">更新日志</a></li> </ul> </nav> <header> <div> <p>登录成功!页面将在3秒后自动跳转,请稍等...</p> </div> </header> </body> </html> ``` ## 这是数据库: ![图片说明](https://img-ask.csdn.net/upload/202002/01/1580568589_694404.jpg)

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c#树形选择 c#中类图的使用方法 c# 传参 调用exe c# 怎么定义方法 c# 修改本地时间 c#前台怎么读取资源文件 c# xml转list c#实现框选截图 m*m乘法表c# c# 乘法99表
立即提问