阅读背景:

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语句
	
	<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 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: