博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet路径跳转问题
阅读量:7103 次
发布时间:2019-06-28

本文共 2629 字,大约阅读时间需要 8 分钟。

Servlet中路径跳转(服务器端跳转)JSP

1.相对路径

 注意这里的相对含义,相对于谁而言
经过多次试验总结,servlet相对路径跳转相对于
servlet配置的xml路径(或servlet3.0注解路径)
如下:
//XML文件
RegServlet
/servlet/RegServlet
项目目录:
                     
Servlet中相对路径
request.getRequestDispatcher("../userinfo.jsp").forward(request,response);
这里的servlet路径配置在/servlet/RegServlet下(即根目录下的setvlet/目录下),则 ../ 目录则倒回到根目录下,而userInfo.jsp同样位于根目录下
    
第二种情况
servlet3.0中的注解情况
@WebServlet("/RegServlet")    //新特性 访问地址直接配置好了
如下:
同样的项目目录,则在servlet中访问则需要如下修改:
request.getRequestDispatcher("userinfo.jsp").forward(request, response); //相对路径方式
解释:
因为系统注解的servlet配置在根目录(‘/’意味着根目录)下,则意味userInfo.jsp与servlet文件位于同一目录下,可以直接访问

2. 绝对路径
        绝对路径则相对而言简单很多,
        这里注意一点,对照着上面的目录图,我们要理解到,服务器在解析路径时,'src','WebRoot',这些文件夹其实都忽略了,这样说或许不准确,但便于理解,也解释说,则两个目录下的文件,都是在同一个根目录下,
        如果访问同一个Jsp页面,这绝对路径的表示方式如下:
request.getRequestDispatcher("/userinfo.jsp").forward(request, response);// ‘/’表示根目录 绝地路径

Servlet中路径跳转(请求重定向跳转)JSP

请求重定向(
 response.sendRedirect () )跳转多用下面的方式:
response.sendRedirect(request.getContextPath()+"/userinfo.jsp"); //这里使用的是加上了上下文的绝对路径
解释:服务器在解析绝对路径时,比浏览器解析绝对路径时,,多了一部分,这部分就是项目名,也就是,上下文环境
或者使用相对路径,这里的相对于与上面的相对是同一样含义(servlet配置的访问路径,这里配置的是
/RegSevlet),则相对路径的表示方式为:
response.sendRedirect("userinfo.jsp"); //这里使用的是相对路径

 

 

Servlet的路径跳转

一、JSP跳转到Servlet

1、相对路径,如href="servlet/TestServlet" 如果写成"/servlet/TestServlet"会报错,因为第一个“/”表示的是【服务器根目录】

2、绝对路径,通过内置成员变量path实现,如href="<%=path%>/servlet/TestServlet" ,path得到的是项目根目录,如【http://localhost:8080/ServletDemo】

其中path指的就是:

例子:

二、Servlet跳转JSP

1、请求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp");

request.getContextPath()获得项目根目录,或者通过"../xxx.jsp"取得上层路径得到

2、服务器内部转发: request.getRequestDispatcher("../xxx.jsp").forward(req,resp);

request.getRequestDispatcher("/test.jsp").forward(request, response);  /斜线表示项目的根目录

小结:Servlet都可以通过../xxx.jsp获取路径

 

三、web.xml的路径

web.xml的<url-pattern>必须以“/”开头,“/”表示项目的根目录

 

JSP页面上使用相对路径和绝对路径调用servlet web.xml的<url-pattern>必须以“/”开头,“/”表示项目的根目录

如果在Servlet中使用请求重定向方式跳转到其他jsp页面,则需要:

response.sendRedirect(request.getContextPath()+"/test.jsp");

服务器内部跳转路径: 

request.getRequestDispatcher("/test.jsp").forward(request,response);//这里的斜线表示项目的根目录

或者

request.getRequestDispatcher("../test.jsp").forward(request,response);//“..”表示回到上层目录也就是根目录;

PS:如果<url-pattern>带一层路径 如:<url-pattern>/servlet/loginServlet</url-pattern>,则内部转发的时会从WebRoot/servlet/路径下找jsp页面。

如果要转发的页面不在WebRoot/servlet/路径下,则需要“..”回到上层或根目录再定位到jsp页面,如下:

request.getRequestDispatcher("../test.jsp").forward(request,response);

如果要转发的页面在WebRoot/servlet/路径下,则如下:

request.getRequestDispatcher("/test.jsp").forward(request,response);

 

 

转载地址:http://mbchl.baihongyu.com/

你可能感兴趣的文章
Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))...
查看>>
【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
查看>>
玩转spring boot——ajax跨域
查看>>
使用Python做科学计算初探(转)
查看>>
线程状态及属性
查看>>
[20171124]手工使用种子库建库.txt
查看>>
4.2、Android Studio压缩你的代码和资源
查看>>
Knockout应用开发指南 第十章:更多信息(完结篇)
查看>>
apache禁止执行php文件
查看>>
模块打包工具 webpack
查看>>
C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)
查看>>
现代IM系统中消息推送和存储架构的实现
查看>>
Linux下时间范围判断的程序流程及其C代码实现
查看>>
关闭mongodb
查看>>
Onvif开发之客户端鉴权获取参数篇
查看>>
高性能后台服务器架构设计
查看>>
mysql通信协议
查看>>
一碗拉面,两多温情
查看>>
英伟达研发全球首款AI自动驾驶平台 无需方向盘和油门!
查看>>
MSSQL - 架构分析 - 从SQL Server 2017发布看SQL Server架构的演变
查看>>