servlet分发http请求后,又重新截取到请求

wp15902974774 发布于 2014/03/15 11:00
阅读 616
收藏 0

@黄勇 你好,想跟你请教个问题:

       我在业余时间自己尝试实现一个简单的java web框架,用一个servlet接收所有的http(url pattern 是/*)请求,然后通过配置文件中的信息匹配对应的业务类,最后将请求通过request.getRequestDispatcher(xxx).forward()这种方式将转发到对应的jsp文件。但是现在的结果是,转发出去的请求会再次被我的servlet截获到,然后再次做前面的处理。请问,如何才能将请求转发给jsp后,将jsp的内容直接返回客户端浏览器呢?

加载中
0
悠悠然然
悠悠然然
@黄勇 请回答,哥不抢你的生意
0
DanielTo
DanielTo

你的设计就是这样,你自己都说了是接受所有的http请求

w
wp15902974774
呵呵,新手勿怪,能想到的方法就是这样,现在看来,是错了。
0
黄勇
黄勇

建议使用 JspServlet 拦截所有关于 jsp 的请求,以下是 Smart 的做法:

http://git.oschina.net/huangyong/smart-framework/blob/master/src/main/java/com/smart/framework/ContainerListener.java

我的建议可能不是最好的,也期待大家更好的解决方案。

w
wp15902974774
谢谢,我还是先学习一下您的设计思想,估计我原先的做法是行不通的。
0
CoserSeu
CoserSeu
forward()不会重新走servlet的啊,一定是哪里搞错了
w
wp15902974774
因为我自己的servlet拦截了所有的请求,所以forward之后的又被拦截了。
0
1212121sds
1212121sds
你应该先去了解一下forward是怎么处理请求的。当你用forward转发请求的时候,Servlet引擎会把你的请求处理后转发给你要给的jsp文件。jsp也是个Servlet程序,而你还是用某个Servlet截获所有请求的,所以又处理一遍。
w
wp15902974774
谢谢。我的思路错了,不应该用servlet做这种处理工作。
返回顶部
顶部