ssm-学子商城-项目第十三天最后一天完成项目

##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语句
	
	
		{call updateItem(#{orderid})}
	

##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 付款-页面

	确认支付


##学子商城
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

	
  		commons-codec
  		commons-codec
  		1.10
	

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

	
  		commons-io
  		commons-io
 		 1.2
	
	
	
  		commons-fileupload
  		commons-fileupload
  		1.2
	

2.配置spring-mvc上传的上传组件解析器

	
	
		
		
	

3.定义上传功能的表单

	

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 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类中,实现该方法,调用持久层方法

你可能感兴趣的:(ssm-学子商城)