Springmvc restful配置遇到的小坑_java

首先web.xml配置

<!-- spring-mvc -->
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

url-pattern 配置/即可,如果配置/*的话会出问提,连返回视图jsp也会拦截,具体原因请看翻看源码

问提:这样配置的话,大家都会忽略一个问题,就是a/b/c可以访问,但是a/b/c.do;a/b/c.mm;a/b/c.zz都可以访问a/b/c的controller,在不修改源码源码的情况下,我们来

解决这个问题,虽然都是拦截了/这样的请求,但是我们只让a/b/c这样的请求进入controller,带有【.】的后缀的不让他进入,直接去404页面

解决办法:

web.xml加入filte

<!-- 对url进行简单的过滤 -->
<filter>
<filter-name>servletRequest</filter-name>
<filter-class>cn.tomcat.quickstart.common.filter.ServletRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>servletRequest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ServletRequestFilter.java
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;
/**
*
* 对进来的url进行处理,放在filter最前面,springmvc <url-pattern>/</url-pattern>
* 默认拦截所有请求,ex:a/b/c.do,a/b/c.html,a/b/c.action,a/b/c
* 去掉带后缀的访问,模仿restful风格,只接受a/b/c的请求
*
*/
public class ServletRequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String requestPath = request.getServletPath();
//不用担心会把静态文件给拦截了,例如*.js,*.css类似于这样的,在web.xml做处理了
//所有请求带有后缀【.】的直接去404,不接受这样的请求
if(requestPath.lastIndexOf(".")!=-1){
request.getRequestDispatcher("/WEB-INF/pages/error/404.jsp").forward(request, response);
}else{
filterChain.doFilter(request, response);
}
}
}

带有.结尾的直接go 404,哈哈,也许你会问要是这样静态文件不是也会被过滤掉了吗?类似于*.js,*.css,.....N多这样类型的文件

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
, restful
mvc
spring mvc restful、springmvc实现restful、springmvc4 restful、springmvc整合restful、restful与spring mvc,以便于您获取更多的相关知识。

时间: 2024-09-28 14:04:18

Springmvc restful配置遇到的小坑_java的相关文章

学习SpringMVC——如何获取请求参数详解_java

@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

学习SpringMVC——国际化+上传+下载详解_java

一个软件,一个产品,都是一点点开发并完善起来的,功能越来越多,性能越来越强,用户体验越来越好--这每个指标的提高都需要切切实实的做点东西出来,好比,你的这个产品做大了,用的人多了,不仅仅再是上海人用,北京人用,还有印度人用,法国人用等等,可以说这个产品已经走上了国际化的大舞台.当印度的哥们输入url访问产品时,界面上弹出"欢迎您,三哥",估计哥们当场就蒙圈了.而这个时候,国际化就应运而生了. 要做国际化这道菜,真的没有想象中的那么复杂,反而很简单,不信你看-- 1. 注入Resourc

java实现Spring在XML配置java类的方法_java

1. 创建自己的bean文件:beans.xml <?xml version="1.0" encoding="UTF-8"?> <busi-beans> <beans> <bean id="SysHelloImpl" type="com.cxm.test.SysHello"> <desc>test</desc> <impl-class>com.

OSS Web直传方案在iOS中上传视频时需要注意的一个小坑

OSS Web直传方案通过将OSS和简单易用的前端上传组件Plupload结合,为前端上传文件场景提供了一个广泛支持的解决方案. Plupload会自动侦测当前的环境,依次在html5.flash.silverlight.html4等方式中选择最合适的上传方式,这些种类基本可以满足PC和移动平台的各种主流浏览器版本使用. 由于各种平台的前端环境差异性,做到完美兼容还是非常困难的,然而一般兼容性问题查起来又非常蛋疼:按逻辑可以这么用,但就是在某个环境下不work,运气好的在揪掉几缕头发后会无意间找

springmvc在配置dbcp数据库连接池时出错

问题描述 springmvc在配置dbcp数据库连接池时出错 数据源配置 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in file [E:javaEE.metadata.me_tcat7webappsspringmvcWEB-INFclassesspringapplicationContext-dao.xml]: BeanP

浅谈Android为RecyclerView增加监听以及数据混乱的小坑

为 RecyclerView增加监听 1.在实现好的MyAdapter中写内部接口: public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) { this.onItemLongClickListener = onItemLongClickListener; } public void setOnItemClickListener(OnItemClickListener onIt

Spring+SpringMVC+Mybatis配置整合

前言 关于SSM框架整合的问题,网络上有很多资源,但是最近想自己配置的时候却发现总是找不到一个完整的配置教程或完整的代码.有一些比较旧的博客里面讲了一些,但是spring的版本还都是3点几.最近自己从网上各个地方找了一些教程,然后试着自己配置了一下,遇到了很多问题,包括报各种各样的异常.现在终于搞好了,记录一下以备不时之需. 正文 话不多说,直接上干货. 在创建好maven的webapp之后,在pom.xml中加入一些配置.完整的文件如下. <project xmlns="http://m

Spring整合Mybatis使用&amp;lt;context:property-placeholder&amp;gt;时的坑_java

背景 最近项目要上线,需要开发一个数据迁移程序.程序的主要功能就是将一个数据库里的数据,查询出来经过一系列处理后导入另一个数据库.考虑到开发的方便快捷.自然想到用spring和mybatis整合一下.甚至用mybatis的自动代码生成,可以省下大量dao层的开发. 整合的坑 之前的项目:以前也有过这种类似的程序,就把spring和mybatis整合的配置直接拿来修改下用.之前的整合配置是这样子的: 1.考虑到数据库url.用户名密码的可配置性,将这些信息放入properties文件.在sprin

SpringMVC实现通过邮件找回密码功能_java

最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url  加密能防止伪造攻击,一次url只能验证一次,并且绑定了用