开发者社区> 问答> 正文

如何从一个servlet跳转到springMVC中?

由于springMVC把后缀为html的页面当成静态文件,它交给tomcat来处理文件
它会把这种资源: 127.0.0.1:8080/filetype.jpg.file.txt.html当静态文件

开发的是wiki系统,要拦截下来,我写了个servlet配置在web.xml中,先于srpingMVC

public class WikiServlet extends HttpServlet {
 
  public void  service(HttpServletRequest req, HttpServletResponse resp){
 
      try {
          //处理.....判断是不是wiki
 
 
 
          //如果没处理就返回到spingMVC 
        req.getRequestDispatcher("/").forward(req,resp);
         //跳转过去会:Handler processing failed; nested exception is java.lang.StackOverflowError
         } catch (ServletException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
web.xml部分: 自定义servlet优先于springMVC

    <servlet-mapping>
    <servlet-name>wiki</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

SpringMVC配置文件中,默认的静态资源处理:它会调用 容器来处理

最后报错:

[/WEB-INF/wiki-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/wiki-servlet.xml
我感觉我的方式太笨了.....写一个servlet来搞springMVC

---------------问题补充---------------
@布尔值:目前通过前缀实现: wiki/wiki/**.html

展开
收起
a123456678 2016-03-18 09:39:41 3130 0
1 条回答
写回答
取消 提交回答
  • public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
            //  127.0.0.1:8080/pro/wiki/我的主页/我的子页面/我的页面.html?Edit?abcsfsldfsk
            //处理.....
            String  idpath=( (HttpServletRequest)request).getServletPath();
     
            String fileString=idpath;   // 前缀处理? 文件系统目录处理!!暂时不处理前缀 // 由于  /wiki/   本身
     
            File file=new File(fileString);
            if(fileString.startsWith("/wiki/")) {
                //如果存在就当是返回文件内容
                if(file.exists()){
                    FileCopyUtils.copy(new FileSystemResource(fileString).getInputStream(), response.getOutputStream());
                }else{
                    System.out.println("没有这个文件.....");
                    response.getWriter().write("{\"state\":\"false\",\"msg\": \"没有找到文件\"}");
                }
            }else {
                //如果没处理就返回到spingMVC
                   request.getRequestDispatcher(idpath).forward(request, response);
            }
    <p>
        }
    </p>
     
    <p>
        <br>
     
    </p>
     
    <p>
        <br>
     
    </p>
    
    <filter>
        <filter-name>wikiFilter</filter-name>
        <filter-class>wiki.servletFilter.wikiFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>wikiFilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>
    2019-07-17 19:05:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多