@Controller
public class TzController {
/*
* GLW
* */
@Autowired
private ShopService shopService;
private ObjectMapper mapper=new ObjectMapper();
private Cookie cookie=new Cookie("Cart","");
@GetMapping("/login")
public String Tzlogin(){
return "login";
}
@GetMapping("/tes")
public String tes(HttpServletRequest request,HttpServletResponse response) throws JsonProcessingException, UnsupportedEncodingException {
Boolean b1=true;
Cookie cookies=new Cookie("ad","sss");
response.addCookie(cookies);
Cookie[] sb=request.getCookies();
//判断是否有名为Cart的cookie 没有就进行创建
for(int i=0;i<sb.length;i++){
if(sb[i].getName().equals("Cart")){
b1=false;
break;
}else {
b1=true;
}
} System.out.println(b1+"b1");
if(b1==true){
//页面加载时就创建一个名字为Cookie路径为/的cookie,如果两个Cookie的名字相同访问路径不同是不会进行覆盖的
System.out.println("aaaa");
Map<Integer,Shop> mpp=new HashMap<>();
String mpstring= mapper.writeValueAsString(mpp);
String fom=URLEncoder.encode(mpstring,"utf-8");
cookie=new Cookie("Cart",fom);
cookie.setPath("/");
response.addCookie(cookie);
}
return "login";
}
@GetMapping("/addcart/{id}")
public String AddCart(@PathVariable("id") Integer sid, HttpServletRequest request, HttpServletResponse response) throws IOException, JsonProcessingException {
//根据传过来的SID查询数据库的对应商品
Shop s1= shopService.selShopByid(sid);
//创建一个MAP
Map<Integer,Shop> mpp=new HashMap<>();
//数据库中没有这个字段 手动设置数量为1
s1.setNum(1);
//获取cookie数组遍历判断名字为Cart的cookie
for(Cookie c1 : request.getCookies()){
if("Cart".equals(c1.getName())){
//mpp=mapper.readValue(URLDecoder.decode(c1.getValue(), "utf-8"),Map.class);
System.out.println("-------------------------");
//找到后利用JACKSON转为Map
mpp = mapper.readValue(URLDecoder.decode(c1.getValue(), "utf-8"), new TypeReference<Map<Integer,Shop>>(){});
//取完数据后让此Cookie立刻过期
c1.setMaxAge(0);
}
}
//遍历刚才的MAP
for(Object key : mpp.keySet()){
Integer k=Integer.parseInt(""+key);
//判断购物车中是否有这个商品
if(k==sid){
//有就让数量+1
s1.setNum(mpp.get(key).getNum()+1);
}
//因为MAP会将KEY相同的覆盖所以没有else
}
//添加进Map
mpp.put(sid,s1);
//再将MAP用JACKSON转换为JSON字符串
String mpstring= mapper.writeValueAsString(mpp);
//编码为Cookie所支持的
String fom=URLEncoder.encode(mpstring,"utf-8");
//创建cookie
cookie=new Cookie("Cart",fom);
//设置访问路径为根路径,不然跨页面无法访问(此操作会将用来初始化的cookie覆盖达到更新的目的)
cookie.setPath("/");
//利用响应对象添加cookie
response.addCookie(cookie);// String sw="";
/*
*cookie是这样的,因为需要在客户端保存,所以刚设置后直接读是不存在的,需要完成一次与客户端浏览器的交互后, 浏览器保存后,再读才可以
* */
//所以这里遍历出来的是你上一次操作的时间段里面装的数据
for(Cookie cookie : request.getCookies()){
if(cookie.getName().equals("Cart")){
System.out.println("dd"+mapper.readValue(URLDecoder.decode(cookie.getValue(), "utf-8"),Map.class));
}
}
return "index";
}
@Autowired
private UserinfoService service;
@RequestMapping("/index")
public String Tzindex(HttpServletRequest request){
if(request.getSession().getAttribute("user")!=null){
return "index";
}else {
return "login";
}
}
@GetMapping("/hf")
public String Tzhf(HttpServletRequest request){
if(request.getSession().getAttribute("user")!=null) {
return "hf";
}else {
return "login";
}
}
@GetMapping("/ly")
public String tzly(HttpServletRequest request){
UserInfo u1=(UserInfo) request.getSession().getAttribute("user");
if(u1!=null) {
request.setAttribute( "users",service.selallnotMy(u1.getUid()));
return "ly";
}else {
return "login";
}
}
@GetMapping("/car")
public String car(){
return "Carts";
}
}