java-web - javaweb重定向
怪我咯
怪我咯 2017-04-18 10:34:00
[Java讨论组]

下面的代码为什么无法重定向呀

login.jsp页面路径为 ProjectRoot/web-inf/jsp/login.jsp

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.sendRedirect(request.getServletContext().getContextPath()+"/jsp/login.jsp");
    }
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
ringa_lee

WEB-INF目录应该是隐藏的啊,不能暴露给访问者

巴扎黑

重定向属相对路径跳转,绝对路径会导致路径找不到,

高洛峰

重定向一般对其他网站的地址是使用绝对路径,自己的网站地址使用相对路径http://www.cnblogs.com/linson...

怪我咯

WEB-INF目录下的资源通过response.sendRedirect是跳不到的吧?你可以试试request转发。另外,路径什么的试试就行了,不是问题

ringa_lee

request.getServletContext().getContextPath()获取的是项目部署名,重定向默认是以项目部署名为起点,所有你只需要将重定向配置调整一下即可,改成如下:
response.sendRedirect("WEB-INF/jsp/login.jsp");


【纠正】
重定向不能直接访问WEB-INF下的资源,两种做法:
1、将login.jsp移到WEB-INF目录外,但仍保持在WebRoot目录下,比如WebRoot/jsp/login.jsp
2、重定向至一个URL资源,该URL指向服务器后台的一个方法,由该方法跳转访问WEB-INF/jsp/login.jsp,具体代码如下:(推荐)

String path = req.getServletPath();
if ("/toLogin.do".equals(path)) {
    //进入登录界面
    toLogin(res,req);
}

private void toLogin(HttpServletResponse res, HttpServletRequest req) 
        throws ServletException, IOException {
    req.getRequestDispatcher("WEB-INF/jsp/login.jsp").forward(req, res);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号