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