第一个mvc项目--购物车。

1.购物车需求

a.用户可以登录

b.用户可以购买商品

c.用户可以对购物车的商品进行修改和删除

d.用户可以下订单

e.系统可以发送电子邮件给用户

uml图

2.界面设计

登录界面

购物大厅

预览订单

提交订单

然后设计数据库和表

1.用户表

如果怕表名是关键字,就加上下划线。

create table users(

id number primary key,//用户id

name varchar2(50) not null,//用户的名字

pwd varchar2(50) not null,//密码

email varchar2(100) not null,//邮箱

tel varchar2(20) not null,//电话号码

grade number(2) default 1 not null

);

这里是用oracle开发

2.商品表

create table book(
id number primary key,//书的编号
name varchar2(50) not null,//书的名字
author varchar2(100) not null,//书的作者
publishHouse varchar2(100) not null,//出版商
price number not null,//价格
nums number default 1000 not null//库存
);

3.订单表(有讲究,数据库表设计模式,如何减少冗余)

插入数据库表数据时,一定要使用commits。

increment by 1每次增加一个数。

create sequence book_seq
start with 1
increment by 1
minvalue 1
maxvalue 99999999
nocycle
nocache
;

序列号,建立一个序列。

插入的数据

insert into book values(book_seq.nextval,'jsp应用开发详解','萧峰','电子工业出版社',59,100);

insert into book values(book_seq.nextval,'java web服务开发','谭美君','电子工业出版社',45,100);

insert into book values(book_seq.nextval,'java 编程思想','小红','电子工业出版社',99,100);

insert into book values(book_seq.nextval,'jsp编程指南','王芳','电子工业出版社',10,1000);

insert into book values(book_seq.nextval,'j2ee1.4应用开发详解','小健','电子工业出版社',68,1000);
commit;

创建servlet的时候,需要注意web.xml,比如

 <servlet-mapping>
<servlet-name>GoHallUI</servlet-name>
<url-pattern>/GoHallUI</url-pattern>
</servlet-mapping>

在连接数据库时碰到了很多问题:

1.没有引入ojdbc6.jar,解决办法:把该文件放入到web-inf/lib中,并build path

2.sqlHelper.java文件中没有dbinfo.properties文件,无法读取连接的数据库信息,解决办法:直接在src目录下建立该文件,并在该文件中填入连接数据的信息,如:

url=jdbc:oracle:thin:@localhost:1521:ORCL
username=root
driver=oracle.jdbc.driver.OracleDriver
password=123

3.sqlhelper类的executeQuery()方法返回值不是Arraylist,而是resultSet,解决办法:在该方法中进行转换

ArrayList<String> al = new ArrayList<String>();
while(rs.next()){
al.add(rs.getString(1));
al.add(rs.getString(2));
al.add(rs.getString(3));
al.add(rs.getString(4));
al.add(rs.getString(5));
al.add(rs.getString(6));
}

4.String sql = "select * from users where name=? and pwd=?";

写错进行修改

String sql = "select * from users where id=? and pwd=?";

5.用户号正确,但是一直无法登陆成功,这时只要注意密码正确就可以了。

6.在form表单里使用action跳转时,无法找到响应的servlet文件,解决办法:查看web.xml中的设置。

7.action跳转到servlet成功后,页面中没有任何东西显示,解决办法:查看servlet编写是否正确。

我碰到的问题是:method使用post方式提交,但是在servlet中,代码却写在doGet()中了,应该将代码写在doPost()中。

何时创建一个控制器的原则:

同一类的业务逻辑,让一个控制器去处理。这样做的好处是:

1.减少控制器的个数

2.有利于程序的维护和升级

<a href="/myshopping/GoHallUI">返回购物大厅</a>

<a href="myshopping/GoHallUI">返回购物大厅</a>

两种写法的结果是不一致的,后者不可以用。

使用<a href="">提交数据时,要用doGet()来处理数据

使用<form>提交数据并且method=post,要使用doPost()来处理数据。如果method=get,则使用doGet()来处理数据。

getparametervalues和getparameter 区别?

request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据。   接收数组变量 ,如checkobx类型    
request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值 . 接收一般变量 ,如text类型

mvc购物车项目的更多相关文章

  1. mvc购物车项目(2)

    为了避免数据冗余,我们可以把共同的信息,抽出建立一个单独的表,把不是共有的信息,建立一张单独表. 订单表分为两个表 create table orders( id number primary key ...

  2. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  3. ASP.NET MVC搭建项目后台UI框架—1、后台主框架

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  4. ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...

  5. MVC跨项目路由

    我们在实际应用开发中,经常遇到多人共同开发维护同一个项目情况,所以不免会出现其中一个人代码出现bug质量问题导致整个项目就原地“爆炸”的惨状.在之前公司经常遇到某个人忘记更新(我就做个此事[" ...

  6. ASP.NET MVC搭建项目后台UI框架—2、菜单特效

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  7. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  8. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  9. ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

随机推荐

  1. TouchSlide - 大话主席

    http://www.superslide2.com/TouchSlide/downLoad.html 首  页如何使用查看参数案例演示下载页面交流反馈SuperSlide TouchSlide - ...

  2. 【JMeter4.0学习(六)】之逻辑控制器说明

    主要demo例子在: 链接: https://pan.baidu.com/s/1OFdsrNG7PTOYQ8TdjiVtBQ 密码: tkd2 汇总参考文档:<Jmeter之逻辑控制器(Logi ...

  3. sql with 递归查询

    用with实现递归查询 1.数据准备 假定有一个表DiGui,有两个字段Id int ParentId int Id ParentId 4 0 5 0 7 0 2 1 8 5 15 5 9 7 14 ...

  4. erlang的斐波那契数列

    [递归和循环] 题目: 大家都知道斐波那契数列,现在要求输入一个整数N,请输出斐波那契数列的第N项,以及前N项. 如:N <=39 下面是斐波那契数列的实现: -module(feibo). - ...

  5. 09 nginx Rewrite(重写)详细解析

    一:Rewrite(重写)详细解析 rewrite 重写 重写中用到的指令 if  (条件) {}  设定条件,再进行重写 set #设置变量 return #返回状态码 break #跳出rewri ...

  6. ios NavigationViewController跳转以及返回传值

    (一)使用NavigationViewController进行页面跳转时,应该使用pushViewController方法来跳转至下一页面.这种话.下一页面相同在NavigationViewContr ...

  7. js自己定义插件-选项卡

    该功能比較简单.巩固一下jquery插件写法,注意引入的jquery.js  . 自己定义插件路径代码例如以下: 页面: <!doctype html> <html> < ...

  8. line-height:0的使用

    在这里不介绍line-height的概念 建议看一下张鑫旭 写的line-height 文章 这里只说 用到的一些小地方 div中img有间隙的解决方案就是用到了这个小小的属性   那么请看方案 方案 ...

  9. IP地址、子网掩码、网关的关系

    网络管理中的IP地址.子网掩码和网关是每个网管必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置.以下我们就来深入浅出地讲解什么是子网掩码. IP地址的结构 要想理解什么是子网掩码 ...

  10. C语言基础知识【程序结构】

    C 程序结构1.C 程序主要包括以下部分:预处理器指令函数变量语句 & 表达式注释2.#include <stdio.h> int main(){   /* 我的第一个 C 程序 ...