重定向的传值问题

重定向的传值问题

作业中当添加完图书点击保存的时候跳转到该分类下图书列表界面,我在Controller中的add方法中使用重定向response.sendRedirect("list.do?categoryId=");  请问老师这里的categoryId的值应该怎么获取?

public void add(HttpServletRequest request,HttpServletResponse response) throws FileUploadException, IOException {
    Book book = new Book();
    List<Book> books = new ArrayList<>();
    //创建一个磁盘文件项工厂对象
    DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
    //创建一个核心解析类
    ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
    //解析request请求,返回List集合,List集合中存放FileItem对象
    List<FileItem> list = servletFileUpload.parseRequest(request);
    //遍历集合,获得每个FileItem,判断是表单项还是文件上传项
    for(FileItem fileItem:list){
        if(fileItem.isFormField()){
            //表单项
            if(fileItem.getFieldName().equals("categoryId")){
                book.setCategoryId(Integer.parseInt(fileItem.getString("UTF-8")));
            }
            if(fileItem.getFieldName().equals("name")){
                book.setName(fileItem.getString("UTF-8"));
            }
            if(fileItem.getFieldName().equals("level")){
                book.setLevel(Integer.parseInt(fileItem.getString("UTF-8")));
            }
            if(fileItem.getFieldName().equals("price")){
                book.setPrice(Integer.parseInt(fileItem.getString("UTF-8")));
            }
            if(fileItem.getFieldName().equals("imgPath")&&book.getImgPath() != null){
                book.setImgPath(fileItem.getString("UTF-8"));
            }

        }else {
            //文件上传项
            if(fileItem.getFieldName().equals("smallImg")){
                String rootPath = request.getServletContext().getRealPath("/");
                String path = fileItem.getName();
                String type = ".jpg";
                if(path.indexOf(".") != -1){
                    type = path.substring(path.lastIndexOf("."));
                }
                path = "/download/images/"+System.currentTimeMillis()+type;
                try {
                    fileItem.write(new File(rootPath+path));
                    book.setImgPath(path);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    books.add(book);
    //调用Service
    bookService.add(books);
    //重定向到界面
    response.sendRedirect("list.do?categoryId=");
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
chrismorgen 2019-02-28 14:12:36

你好同学,如果是变量的话没办法通过重定向的url进行传参的,可以将变量参数放到session中,然后在页面获取session中categoryId值,不过带参的请求推荐同学使用request转发哦,祝学习愉快~

  • 提问者 精慕门6573819 #1
    这里使用request转发应该怎么写呢 request.getRequestDispatcher("list.do?categoryId=").forward(request,response); 怎么获取到当前的categoryId?
    2019-02-28 15:12:59
  • chrismorgen 回复 提问者 精慕门6573819 #2
    就像第二阶段学习的那样,将categoryId存储在request作用域中,譬如request.setAttribute("categoryId",categoryId)然后转发到对应请求的路径,然如果是jsp页面直接通过el表达式就可以取值,如果是servlet中就可以通过request.getAttribute方法来取值,祝学习愉快~
    2019-02-28 15:53:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师