首页 新闻 会员 周边 捐助

Servlet中 利用service()方法转发所有请求, 求教该如何正确访问jsp文件

0
悬赏园豆:20 [已解决问题] 解决于 2018-09-12 15:19

求教,我想为jsp做个请求转发器, urlPatterns = "/*", 拦截所有请求, 发现req.getRequestDispatcher("/jsp/hello.jsp").forward(req, resp);函数总是再次被该拦截器拦截,然后浏览器就没有办法访问到jsp文件,该怎么既使DispatherServlet拦截所有请求,又使得浏览器能够访问到jsp文件呢。

@WebServlet(urlPatterns = "/*", loadOnStartup = 0)
public class DispatherServlet extends HttpServlet {

@Override
public void init(ServletConfig config) throws ServletException {
     ......
}

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("mothod : " + req.getMethod());
    System.out.println("PathInfo : " + req.getPathInfo());
    System.out.println("ContextPath : " + req.getContextPath());
    System.out.println("getRequestURL : " + req.getRequestURL());

    req.getRequestDispatcher("/jsp/hello.jsp").forward(req, resp);
}

控制台打印 :

mothod : GET
PathInfo : /jsp/hello.jsp
ContextPath : /chapter1
getRequestURL : http://localhost:8080/chapter1/jsp/hello.jsp
逆光影者的主页 逆光影者 | 初学一级 | 园豆:162
提问于:2018-09-12 14:33
< >
分享
最佳答案
1

这个是可以排除哪些链接是不拦截的把

收获园豆:20
番茄先生 | 小虾三级 |园豆:911 | 2018-09-12 14:56

怎么排除呢

逆光影者 | 园豆:162 (初学一级) | 2018-09-12 14:58

@逆光影者: https://blog.csdn.net/dunegao/article/details/72625316
"/"和"/"的区别:
"/"只会拦截不带后缀的请求,如/welcome
"/
"不但包含/的作用,还可以拦截带后缀的请求
,排除的话一般都是一些静态资源不进行拦截,百度上配置的例子很多

番茄先生 | 园豆:911 (小虾三级) | 2018-09-12 15:12

@番茄vs西红柿: 我将 “/” 改成了“/”,
发现“/” 不会拦截
.jsp请求,但会拦截*.html请求,求问这个该怎么搞呢!

逆光影者 | 园豆:162 (初学一级) | 2018-09-13 17:29

@逆光影者: html属于静态文件,你应该是用的servlet去做的,那就应该有web.xml 文件然后你去根据这个https://zhidao.baidu.com/question/747382060892536812.html配置过滤器

番茄先生 | 园豆:911 (小虾三级) | 2018-09-14 08:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册