第一个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类型

最新文章

  1. 国内git项目托管平台
  2. 以空白符结尾的 alias
  3. sizeof和小部分c++语法
  4. 樱花漫地集于我心,蝶舞纷飞祈愿相随---总结 顕出:void-sampling 显示:void-sampling
  5. STL--双端队列(deque)和链表(list)
  6. [Unity3D] 和Unity3D的一些事
  7. HDU2204 Eddy&#39;s爱好(容斥原理)
  8. html 和 html5(一)(表格 | 列表 | 提交按钮 | 单选 |复选 | 框架 | 脚本 | html字符实体 )
  9. Java学习笔记之:java运算符
  10. Burp Suite Walkthrough(英文版)
  11. C/C++中文的编码和字符串处理
  12. php爬虫的两种思路
  13. [RabbitMQ]Error: unable to connect to node rabbit@compute1: nodedown(CentOS7.0)
  14. 微信小程序——获取openid
  15. kolla-ansible快速入门
  16. JavaScript(第二十七天)【错误处理与调试】
  17. HDU 1074 Doing Homework【状压DP】
  18. Contours 等高线图
  19. java使用java.lang.management监视和管理 Java 虚拟机
  20. curl发送json格式数据

热门文章

  1. 怎样取消不能改动(仅仅读打开)的word文件的password
  2. iOS左滑手势失效
  3. Android中关于JNI 的学习(四)简单的样例,温故而知新
  4. shiro自定义logout filter
  5. 如何使用subversion管理iOS源代码
  6. 软件测试人员需要精通的开发语言(2)--- SQL
  7. Angular关于$anchorScroll的定位滚动
  8. 九度OJ 1183:守形数 (数字特性)
  9. Java NIO Buffer(netty源码死磕1.2)
  10. 基于SQLAIchemy的Flask目录