Laughing girl2021 2021-07-31 19:27 采纳率: 100%
浏览 30
已结题

java-web练习,点击addCart.html文档后,无法跳转到AddCartServlet,请问是不是下图红框所示的地址写错了?

这是项目文件列表及html文档的跳转地址
img
以下为具体实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<center>
    <h1>商品列表</h1>
    <a href="/war exploded/addCart?name=杯子">杯子</a><br>
    <a href="/war exploded/addCart?name=书包">书包</a><br>
    <a href="/war exploded/addCart?name=笔记本">笔记本</a><br>
</center>
</body>
</html>

package session;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "AddCartServlet", urlPatterns = "/addCart")
public class AddCartServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取商品信息
        String name=request.getParameter("name");
        //在服务器中开辟一个能保存商品信息的内存空间session
        HttpSession session= request.getSession();

        //重点:以下代码实现目的为--在连续点击打开多个商品链接后,使多个商品信息可以通过name传进来保存在session中,不会被前个商品信息覆盖,只出现一个商品;

        //创建一个list类集合对象用来保存此前session中的所有商品信息;此处需要强转(将session转为List类使等号两边类型相等)
        List list=(List)session.getAttribute("list");
        //第一次访问的时候,list不存在,需要创建一个;
        if (list==null){
            list=new ArrayList();
        }
        //将商品信息保存到list集合中
        list.add(name);
        //在session内存空间中保存一个键为"list",值为list的商品
        session.setAttribute("list",list);

        //方法重载,对session进行持久化操作,也就是持久化cookie里的JSESSIONID(标识id)
        Cookie cookie=new Cookie("JSESSIONID",session.getId());
        //使session内存空间在无操作情况下存在时间变为24小时;
        cookie.setMaxAge(60*60*24);
        //使cookie参数在war exploded目录下才会被携带;
        cookie.setPath("/war exploded");
        response.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

package session;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "GetCartServlet", urlPatterns = "/getCart")
public class GetCartServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session=request.getSession();
        List<String> list=(List<String>) session.getAttribute("list");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        for (String s : list){
            response.getWriter().write(s+"<br/>");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


  • 写回答

2条回答 默认 最新

  • Aganstrong 2021-07-31 20:12
    关注

    /war exploded/addCart 这里是有空格的吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 7月31日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错