javaWeb中我们可以通过两种方式获得请求转发器
1,通过request对象 的getRequestDispatcher方法获得,如图:
2,通过servletContext对象的getRequestDispatcher方法获得,上图改一改就是
3,通过servletContext对象的getNamedDispatcher方法获得,如图
第一种方式,使用request对象得到转发器,他的参数是一串表示转发目标url的字符串
如果路径字符串前没有"/"表示相对于请求来源的路径,比如你通过某个servlet请求另一个jsp,那么你的路径起点就是你这个servlet的class文件夹子目录,请以编译后war包部署路径为准!!!不要理解为你没打包的项目路径:
黄色的中的Myblog是我的实际部署文件,上边白色的是你的不会放在war包中的项目文件
可以在路径前加上"/"表示相对于servletContext url的路径(这里也可以称为绝对路径),这个径的解释可以参考我的博文 Context路径在哪里https://blog.csdn.net/m0_60358315/article/details/123487337?spm=1001.2014.3001.5502
如果你使用第二种方式,即通过servletContext对象的方法来取得转发器,那么就必须使用绝对路径字符串作为参数.
如果你使用的是新版的第三种方法,那么你可以直接用你转发目标(必须是servlet)的name属性的字符串来作为参数,
如上图我的Servlet2直接用"Servlet"作为Dispatcher的字符串参数发起转发,
如果你真的希望用这个方式,从servlet向Jsp转发,你可以在web.xml中给Jsp配置name属性(jsp本身也是一种特殊的servlet),如下图: