第一个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. k8s调度-指定node

    1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...

  2. MIC中函数和变量的声明

    c++/c使用 __declspec(target(mic))函数或变量声明 或 __attribute__((target(mic)))函数或变量声明 举例如下: __attribute__((ta ...

  3. saltstack内置state模块file之managed

    managed管理一个模板文件,载入到各个节点并运行相应配置 salt.states.file.managed(name, source=None, source_hash='', user=None ...

  4. DICOM:C-GET服务

    背景: 之前博文对照过多次C-MOVE与C-GET服务的差别,两者最大的差别在于C-GET是基于单个TCP连接的点对点的双方服务.而C-MOVE是基于两个TCP连接的三方服务(详情參见:<DIC ...

  5. ASIHTTPRequest-Cookie的使用

    本文转载至 http://www.cocoachina.com/bbs/read.php?tid=93220&page=e&#a     持久化cookie ASIHTTPReques ...

  6. 【BZOJ3333】排队计划 树状数组+线段树

    [BZOJ3333]排队计划 Description Input Output Sample Input 6 2 160 163 164 161 167 160 2 3 Sample Output 6 ...

  7. Collective Mindsets (medium) (逻辑题)

    B - Collective Mindsets (medium) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I6 ...

  8. 九度OJ 1260:珍珠项链 (字符串处理、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:101 解决:27 题目描述: 假设有一条珍珠项链,有很多珍珠,r代表红色, b代表蓝色, w代表白色. 假设你在某一处剪开之后,你会沿着顺时 ...

  9. 【python】-- IO多路复用(select、poll、epoll)介绍及实现

    IO多路复用(select.poll.epoll)介绍及select.epoll的实现 IO多路复用中包括 select.pool.epoll,这些都属于同步,还不属于异步 一.IO多路复用介绍 1. ...

  10. 【python】-- Redis简介、命令、示例

    Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...