action和sendRedirect

action和sendRedirect

添加部门页面,我的表单action必须加入上下文路径才能正确访问。

action="<%=request.getContextPath()%>/department/add.do"

如果使用下面的方式,就会出现下图问题。按照以往做的课后题,都不需要加上下文的,这是怎么回事。

action="/department/add.do"

http://img1.sycdn.imooc.com//climg/5dc8d739090897c513390642.jpg我的Tomcat配置

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

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


正在回答

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

4回答

同学你好,在同学的问题和回复中,前边是加斜杠,如:“/”

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

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

这里建议同学去掉前边的斜杠,直接使用action="add.do"和response.Redirect("list.do")再试试。

如果还是有问题,建议同学加上<%=request.getContextPath()%>或request.getContextPath(),使用绝对路径即可。

祝:学习愉快~

好帮手慕阿满 2019-11-12 10:05:41

同学你好,这里应该是没有获取到当前路径中的上下文造成,建议同学在action使用add.do,如:

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

在response.sendRedirect()重定向时,建议同学使用list.do,如:

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

如果还是不行,建议同学加上<%=request.getContextPath()%>或request.getContextPath(),使用绝对路径进行跳转操作,更好理解。

祝:学习愉快~

  • 提问者 懒人13 #1
    老师有仔细看过我的问题,和在你第一次回答下的回复么?
    2019-11-12 12:19:25
好帮手慕阿满 2019-11-11 19:12:58

同学你好,问一下同学添加部门页面的路径是什么?这里的action是以当前路径为基础进行跳转的,如:

这里添加部门的路径是department/toAdd.do,action="/department/add.do"进行跳转时,路经会变成localhost:8080/sm/department/add.do。

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

关于response.sendRedirect()进行重定向,也和当前路径有关。同学现在使用response.sendRedirect("/list.do")。会跳转到http://localhost:8888/list.do,建议同学在前面加上department,如:response.sendRedirect("/department/list.do");

祝:学习愉快~

  • 提问者 懒人13 #1
    新建部门为http://localhost:8888/EmployeeSM/department/toAdd.do。保存到数据库之后必须使用使用response.sendRedirect(request.getContextPath() + "/department/list.do");才能正常跳转
    2019-11-11 19:22:41
  • 提问者 懒人13 #2
    我的新建部门页面路径就是http://localhost:8888/EmployeeSM/department/toAdd.do。
    2019-11-11 19:24:58
  • 提问者 懒人13 #3
    在我的之前的基础上(新建部门为http://localhost:8888/EmployeeSM/department/toAdd.do。表单action="<%=request.getContextPath()%>/department/add.do"。)按照老师所说的只加模块名response.sendRedirect("/department/list.do");会跳转至http://localhost:8888/department/add.do。必须是response.sendRedirect(request.getContextPath() + "/department/list.do");才能正常跳转
    2019-11-11 19:31:51
提问者 懒人13 2019-11-11 11:51:05

还有一个问题,因为之前我在做作业题使用重定向时加上了模块名如response.sendRedirect("/admin/Canvas/list.do");可以正常跳转。

但这次只能使用response.sendRedirect("/list.do");才行,若果加入模块名如response.sendRedirect("/department/list.do");会转向http://localhost:8888/EmployeeSM/department/department/list.do。这是咋回事?

  • 提问者 懒人13 #1
    经过几次运行,现在如果只写一个response.sendRedirect("/list.do")。直接跳转到http://localhost:8888/list.do。Tomcat配置不变
    2019-11-11 12:09:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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