##3.付款
##3.1 付款-持久层
在OrderMapper接口中定义方法
void updatePaymentStatusByOrderId(Integer oid);
pl/sql:对sql语句进行编程
块:匿名块;存储函数,存储过程
delimiter $$
create procedure updateItem(poid int)
begin
update
t_orderitem
set
paymentstatus=1
where
orderid=poid;
end$$
删除过程语法:drop procedure 过程名;
在OrderMapper.xml中编写sql语句
<update id="updatePaymentStatusByOrderId">
{call updateItem(#{orderid})}
</update>
##3.2 付款-业务层
在IOrderService 接口中定义方法
void updateItem(Integer oid);
在OrderService类中实现方法,调用持久层的方法
##3.3 付款-控制器层
在addOrder方法中,把orderId设置为session的属性
session.setAttribute("oid",order.getId());
/order/payment.do
请求参数:session(oid)
请求方式:GET
响应方式:转发
@
public String payment(HttpSession session){
0.从session中获取oid
1.调用业务层方法
2.return "pay_success";
}
pay_success.html改为pay_success.jsp
##3.4 付款-页面
<a href="/go.html?url=../order/payment.do">确认支付</a>
##学子商城
1.用户管理
1.1注册
1.2登录
1.3修改个人信息:基本信息,密码
2.地址管理
2.1添加地址
2.2显示地址
2.3修改地址
2.4删除地址
3.商品
3.1商品分类
3.2热门商品
3.3展示商品
3.4商品详情
4.购物车
4.1添加购物车
4.2显示购物车
4.3修改购物车信息:修改数量,删除商品
5.订单
5.1生成订单
5.2付款
分析:从页面-数据库
写代码:从持久层-业务层-控制器层-页面
#消息摘要
## 密码加密
1.通过消息摘要技术,对密码进行加密处理,避免密码`明文`保存
明文:
原理:使用某种特定算法(MD5),进行处理。
步骤:
1.添加依赖jar包
commons-codec 1.10
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
2.测试类
@Test
public void test() throws Exception{
//MD5加密后的字符串
String str1 =
DigestUtils.md5Hex("123456");
String str2 =
DigestUtils.md5Hex("123456");
//System.out.println(str1);
//System.out.println(str2);
//同过消息摘要判断文件的内容是否相同
String fileStr1 =
DigestUtils.md5Hex(
new FileInputStream("pom.xml"));
String fileStr2 =
DigestUtils.md5Hex(
new FileInputStream("pom2.xml"));
System.out.println(fileStr1);
System.out.println(fileStr2);
}
3.结论:
同样的数据,消息摘要相同
消息摘要相同,来源于相同的数据
## salt 加盐
123456 + “你喜欢编程吗?”
## 把学习商城的密码进行加密处理
注册 登录 修改密码
##文件上传
1.导入jar包 commons-io; commons-fileupload
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
</dependency>
2.配置spring-mvc上传的上传组件解析器
<!-- 定义文件上传组件解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000000"></property>
<property name="defaultEncoding" value="utf-8"></property>
</bean>
3.定义上传功能的表单
<form method="post" action=""
enctype="multipart/form-data">
<input type="file" name="file" id="file">
<br>
<input type="submit" value="上传">
</form>
4.定义上传功能的控制器
@RequestMapping("/doUpload.do")
public String doUpload(MultipartFile file) throws IllegalStateException, IOException{
file.transferTo(
new File(
"d:/",file.getOriginalFilename()
));
return "redirect:../main/showIndex.do";
}
##学子商城-头像上传
上传图片的页面
function getImage(){
//创建表单数据对象
var formData = new FormData();
//获取file节点
var fileNode = document.getElementById("iconPic");
formData.append("file",fileNode.files[0]);
$.ajax({
"url":"${pageContext.request.contextPath}/user/upload.do",
"data":formData,
"type":"POST",
"dataType":"json",
"contentType":false,
"processData":false,
"success":function(obj){
alert(obj.state+","+obj.message);
//实现页面显示图片。
var url =
window.URL.createObjectURL(fileNode.files[0]);
//在img标签中,定义src属性值为,url(通过files得到的第一file)
icon.src=url;
}
});
}
上传图片的控制器方法
在UserController 类定义方法
@
@
public ResponsResult<Void> upload(
@RequestParam("file") MultipartFile file){
1.file提供的方法,实现上传的功能
2.返回rr对象 ,1,“上传成功”
}
保存上传头像的数据
1)持久层UserMapper接口中定义方法
void updateImageById(@Param("image") String image,@Param("id") Integer id);
在UserMapper.xml文件中,编写update语句
update t_user
set image = #{image}
where id=#{id}
2)业务层
在IUserService接口中,定义方法,同持久层
在UserService类中,实现该方法,调用持久层方法
##3.付款
##3.1 付款-持久层
在OrderMapper接口中定义方法
void