由于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
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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。