SpringMVC请求后台地址URL没有.*的几种实现方式
今天做项目,由于项目是通过扫二维码进入,二维码存放的地址不希望有 .do,而是http:xxxx:8080/xxx/yyy/zzz的格式(zzz为参数),但是项目其它请求url后面都必须要有.do,想到了三种解决方式,最终采用了最后一种方式。
对应url后面直接带参数,在这就不在详细说明,直接贴出代码:
@RequestMapping("/index/{id}")
public String index(Model model, @PathVariable("id")Integer id){
LOGGER.info(id);
return "/web/home/jump";
}
接下来就是解决url地址不带.do的问题
第一种方式:直接在web.xml的url-pattern中配置“/”,即所有的请求都能通过。这样显然不好,所有的请求都能通过,不满足项目需求。web.xml 配置代码如下:
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
第二种方式:同样的在web.xml的url-pattern中配置“/”,但是在controller的 @RequestMapping中手动写上.do,由于前面的@RequestMapping中都没有写.do,所以修改起来比较花费时间,不建议用这种方法。
第三种方式:也是在web.xml的url-pattern中配置“/”,但是这次利用了拦截器功能,在spring中配置拦截器拦截所有的。
<mvc:interceptors>
<mvc:interceptor>
<!-- 对所有的请求拦截使用/** ,对某个模块下的请求拦截使用:/myPath/* -->
<mvc:mapping path="/web/**" />
<mvc:exclude-mapping path="/web/*/download.do"/>
<bean class="com.iflytek.zhbs.common.filter.WebSecurityInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
再在拦截器的类里面做处理,具体做法及代码如下:
//获取请求路径url
String url = (String)request.getRequestURI();
//获取请求的最佳匹配路径
String pattern = (String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
//路径后面不是.do或请求最佳匹配路径和controller中的@RequestMapping路径不一致,返回404页面
if(!url.endsWith(".do") && !pattern.equals("/web/index/{id}")){
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return false;
}
最终采用第三种方式实现了需求。
SpringMVC请求后台地址URL没有.*的几种实现方式的更多相关文章
- springmvc请求参数获取(自动绑定)的几种方法
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...
- aspcms逻辑错误导致后台地址泄露
访问即可跳转后台地址: URL:http://www.xxx.org.cn/plug/oem/AspCms_OEMFun.asp 注入:plug/comment/commentList.asp?id= ...
- Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL
Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...
- 【前台 ajax】前台ajax请求,地址正确,但是报错不进入后台
前台ajax请求,地址正确,但是报错不进入后台 出现上述问题,可能的情况是 1.ajax用的post,而后台限定用get,或者所有的post请求都被拦截,所以不能正常进入并且报错403 @Reques ...
- 后台接收URL地址的参数
其实很简单,只是写一下加强记忆 后台接收URL传递过来的参数有两种方法: 第一种用request接收 HttpServletRequest request = ServletActionContext ...
- SpringMVC后台接收list类型的数据的实现方式
一.背景 最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~ 二.实现方式 1.实现方 ...
- springmvc 请求经过controller后静态资源无法访问的问题
经过RequestMapping(“xx”)后 转发请求时会在url里面附带地址, 导致访问静态资源文件失败, 解决办法是在 spring-mvc.xml文件中加上 <mvc:default-s ...
- jquery ajax跨域请求后台的简单例子
一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...
- 请求转发 和 URL 重定向
五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 ...
随机推荐
- winrar X64 win10 破解
破解方法, win10 64位 复制下面内容到 RarReg.key 文件 RAR registration datawncnUnlimited Company LicenseUID=1b064ef8 ...
- [Grunt] Concatenating Your Javascript with grunt-contrib-concat
Combine serval javascript files together. For angular project, make sure you add angular.min.js firs ...
- 【Python】安装Python的mysql模块
在控制台中输入pip install pymysql即可,以下是输出: C:\Users\horn1\Desktop\python\15>pip install pymysql Collecti ...
- 【python】如何安装BeautifulSoup4
在cmd窗口输入 pip install beautifulsoup4,如下: C:\Users\horn1\Desktop\python\3>pip install beautifulsoup ...
- 通过Intel XDK编写跨平台app(一)
Intel XDK 是一个新的跨平台手机应用开发工具.它努力把整个开发流程变的简单,尽可能把所有的平台都封装到一个包中,通过收集各种开发工具来使你的开发变的简单. 在这篇文章中,我将会向你介绍什么是I ...
- UDP socket也可以使用connect系统调用
UDP socket也可以使用connect系统调用 UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样.它可以用来指定本地端口和本地地址,来建 ...
- iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文
iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文 一:如何设置项目中文环境 targets--->Locatization native development reg ...
- 算法笔记_020:深度优先查找(Java)
目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 深度优先查找(depth-first search,DFS)可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问.在每次迭代的时候, ...
- MyEclipse中出现Address already in use:JVM_Bind:8080
今天在搭建环境,跑以前的一个项目时,出现了Address already in use 的错误,这显然是tomcat的端口号被占用了,我的机子上安装了appache和appache Tomcat: 我 ...
- linux sort 、uniq 命令
以文件的每行为单位,从左往右依次按ascii码进行比较 sort sort.txt #默认为升序 -u:去除重复行 sort -u sort.txt -r:降序排列 sort -r sort.txt ...