首先我们先解决一下上次购物车的乱码问题
分析乱码问题:
1.前台---->浏览器那一端就已经产生了乱码(已分析,排除)
2.后端---->在子控制器接受前端传递到后台的过程中出现了乱码
由图可知,点击F12,进入控制台,在右下角我们可以看到书名《时光走了你还在》,并没有乱码,所以我们分析的第一个疑点就可以排除了。
确定原因:就是前端正常的字符串传递到后台,出现了乱码,意味着中间做了编码的转换
(编码解码)
解决:
找到文件过滤器
EncodingFiter源码
package com.zking.util;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 娑擃厽鏋冩稊杈╃垳婢跺嫮鎮?
*
*/
@WebFilter("*.action")
public class EncodingFiter implements Filter {
private String encoding = "UTF-8";// 姒涙顓荤?涙顑侀梿锟?
public EncodingFiter() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// 娑擃厽鏋冩径鍕倞韫囧懘銆忛弨鎯у煂 chain.doFilter(request, response)閺傝纭堕崜宥夋桨
res.setContentType("text/html;charset=" + this.encoding);
if (req.getMethod().equalsIgnoreCase("post")) {
req.setCharacterEncoding(this.encoding);
}
// else {
// Map map = req.getParameterMap();// 娣囨繂鐡ㄩ幍锟介張澶婂棘閺佹澘鎮?=閸欏倹鏆熼崐锟?(閺佹壆绮?)閻ㄥ嚜ap闂嗗棗鎮?
// Set set = map.keySet();// 閸欐牕鍤幍锟介張澶婂棘閺佹澘鎮?
// Iterator it = set.iterator();
// while (it.hasNext()) {
// String name = (String) it.next();
// String[] values = (String[]) map.get(name);// 閸欐牕鍤崣鍌涙殶閸婄畅濞夘煉绱伴崣鍌涙殶閸婇棿璐熸稉锟芥稉顏呮殶缂佸垟
// for (int i = 0; i < values.length; i++) {
// values[i] = new String(values[i].getBytes("ISO-8859-1"),
// this.encoding);
// }
// }
// }
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
String s = filterConfig.getInitParameter("encoding");// 鐠囪褰噖eb.xml閺傚洣娆㈡稉顓㈠帳缂冾喚娈戠?涙顑侀梿锟?
if (null != s && !s.trim().equals("")) {
this.encoding = s.trim();
}
}
}
因为我们的界面是UTF-8的编码格式,但是在过滤器里面是ISO-8859-1,所以我们注释这一段,重新运行
没有乱码了
一.购物车结算
①建立Order与Orderitem实体类
order
package com.lsy.entity;
import java.util.Date;
public class Order {
private long id;
private long uid;
private Date orderTime;
private String consignee;
private String phone;
private String p