页面跳转问题

来源:5-2 项目作业

jia_蛙

2020-03-09 20:01:52

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://img.mukewang.com/climg/5e662e6009240fa112940733.jpg

http://img.mukewang.com/climg/5e662f58093397c713660287.jpg

写回答

2回答

好帮手慕阿满

2020-03-10

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

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

0
hia_蛙
h 谢谢老师!
h020-03-10
共3条回复

jia_蛙

提问者

2020-03-09

我知道这里为什么获取不到上下文路径了,是因为我在Tomcat中设置了上下文设置为/,所以获取
到的就是空,默认就不用写上下文路径了,我这里去掉了request.getContextPath(),跳转的时候
还是错误


http://img.mukewang.com/climg/5e6653cd09ba7e9513480395.jpg

0

0 学习 · 8016 问题

查看课程