页面跳转问题

页面跳转问题

package com.zhou.book.controller;

import com.zhou.book.biz.CategoryBiz;
import com.zhou.book.biz.impl.CategoryBizImpl;
import com.zhou.book.entity.Category;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//分类控制器
public class CategoryController {
    private CategoryBiz categoryBiz = new CategoryBizImpl();

    //  /admin/Category/list.do   获取分类列表
    public void list(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        List<Category> list = categoryBiz.getAllCategory();
        request.setAttribute("list",list);
        request.getRequestDispatcher("/WEB-INF/pages/admin/category.jsp").forward(request,response);
    }


    //  /admin/Category/toAdd.do  打开添加分类页面
    public void toAdd(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect(request.getContextPath() + "/WEB-INF/pages/admin/add_category.jsp");
    }

    //  /admin/Category/add.do    处理用户添加分类请求
    public void Add(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        //获取添加的分类的名字
        String categoryName = request.getParameter("categoryName");
        //判断该分类是否存在
        if(categoryBiz.selectById(categoryName) == null){
            //不存在则进行添加
            categoryBiz.add(categoryBiz.selectById(categoryName));
        }
        response.sendRedirect(request.getContextPath() + "/WEB-INF/pages/admin/category.jsp");
    }


    //  /admin/Category/remove.do 删除分类
    public void remove(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        categoryBiz.remove(Integer.parseInt(id));
        response.sendRedirect(request.getContextPath() + "/WEB-INF/pages/admin/category.jsp");
    }
}
老师,我这里的toAdd()方法跳转到编辑分类页面一直显示404,上面是我的控制器,
下图1是我们category.jsp分类页面的新建超链接标签的截图,图2是我报错的截图,我记得
我们在讲请求转发和重定向的时候说过,重定向需要增加上下文路径,这里我使用
request.getContextPath() 来获取上下文路径,然后加上jsp在webapp下的目录为啥会404呢?
而且我发现我request.getCntextPath()好像获取不到值,因为我看了一下出错的地址栏中并
没有显示上下文路径

http://img1.sycdn.imooc.com//climg/5e662e6009240fa112940733.jpg

http://img1.sycdn.imooc.com//climg/5e662f58093397c713660287.jpg

正在回答

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

2回答

同学你好,WEB-INF目录是安全目录,该目录下的文件是不能通过浏览器地址直接访问,只能通过转发访问。建议同学将重定向修改为转发再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • jia_蛙 提问者 #1
    我已经昨晚已经改为转发了, 已经好了,老师 我想问一下,我记起来了,我们刚开始学习这个请求转发和重定向的时候,我那个时候是这样用的:response.sendRedirect(request.getContextPath() + "/pages/admin/category.jsp"); 因为当时我的页面是在webapp下的page, 所以是可以直接这样获取的,因为重定向是服务器告诉了客户端要转向哪个地址,客户端再自己去请求转向的地址,现在我们的文件是在WEB-INF安全目录下,该目录下的文件是不能通过浏览器地址直接访问,所以我一直获取不到。是吧
    2020-03-10 11:21:58
  • 好帮手慕阿满 回复 提问者 jia_蛙 #2
    是的,同学理解的不错,继续加油。祝:学习愉快~
    2020-03-10 14:12:32
  • jia_蛙 提问者 #3
    谢谢老师!
    2020-03-10 15:53:53
提问者 jia_蛙 2020-03-09 22:36:26
我知道这里为什么获取不到上下文路径了,是因为我在Tomcat中设置了上下文设置为/,所以获取
到的就是空,默认就不用写上下文路径了,我这里去掉了request.getContextPath(),跳转的时候
还是错误


http://img1.sycdn.imooc.com//climg/5e6653cd09ba7e9513480395.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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