博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
strtus2 与springmvc
阅读量:6200 次
发布时间:2019-06-21

本文共 2398 字,大约阅读时间需要 7 分钟。

  hot3.png

web.xml文件中

springmvc中的url-patter 一般写/而不是    /*

160258_Pf6Y_2769907.png

spring-mvc.xml文件中   <mvc:default-servlet-handler/>

160348_DcqV_2769907.png

假如springmvc项目中的web.xml文件中的url-pattern 的值写/*,那返回的jsp页面是文本格式,而不是jsp页面,个人理解是(相当于进行第二次过滤)

web.xml文件中

strut2中的url-pattern一般写/*

155859_c0S7_2769907.png

url-pattern问题 

用到forward(“/WEB-INF/jsp/*.jsp”) 
而forward当然是又要经过web.xml的映射的, 
然后,在URL匹配时, 
<url-pattern> / </url-pattern> 不会匹配到*.jsp,不会进入spring的DispatcherServlet类 
<url-pattern> /* </url-pattern> 会匹配*.jsp,导致进入spring的DispatcherServlet 类,然后去寻找controller,接着找不到对应的controller所以报错。

总之,关于web.xml的url映射的小知识: 

<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url 
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)

<url-pattern>/</url-pattern>甚至会造成The requested resource () is not available.

以上内容转载自: 

=============================分割线:对转载文章的补充=========================== 
<url-pattern> /* </url-pattern> 会匹配*.jsp,导致进入spring的DispatcherServlet 类,然后去寻找controller,接着找不到对应的controller所以报错。

这句话值得应该是请求返回到浏览器,页面显示的是jsp源码,这样才能与题相对应。

那么为什么匹配*.jsp,导致进入spring的DispatcherServlet 类页面就显示jsp源码了?原因如下: 

一般情况,在spring-mvc.xml配置文件中,都会添加如下代码来处理对静态资源的访问:

 

上述配置导致了一个的结果就是把.jsp,.sql,*.txt都当做txt处理。结果就是直接在浏览器加载了jsp源码。

当然,如果不配置上述对静态资源处理的代码,那么结果是找不到对应的controller所以报错,404错误。实际上静态资源的处理配置肯定是要加的。

后台日志也给出了上述显示jsp源码的经过:

//显示Forward跳转Forwarding to resource [/WEB-INF/jsp/list.jsp] in InternalResourceView 'list'//然后被DispatcherServlet拦截DispatcherServlet with name 'springServlet' processing GET request for [/seckill/WEB-INF/jsp/list.jsp]//然后为/WEB-INF/jsp/list.jsp请求寻找处理方法Looking up handler method for path /WEB-INF/jsp/list.jsp//结果当然是没有找到了Did not find handler method for [/WEB-INF/jsp/list.jsp]Matching patterns for request [/WEB-INF/jsp/list.jsp] are [/**]URI Template variables for request [/WEB-INF/jsp/list.jsp] are {}Mapping [/WEB-INF/jsp/list.jsp] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@5fce904c] and 1 interceptorLast-Modified value for [/seckill/WEB-INF/jsp/list.jsp] is: -1//一个空的ModelAndView返回给了DispatcherServlet,并认为请求已完成Null ModelAndView returned to DispatcherServlet with name 'springServlet': assuming HandlerAdapter completed request handlingSuccessfully completed request

 

如果我就不想用<url-pattern>/</url-pattern>,想用某个固定的后缀,比如<url-pattern>*.do</url-pattern>,那么controller的@RequestMapping(value = "/xxx.do")这样的,地址栏请求是这样的:

转载于:https://my.oschina.net/ldm95/blog/884479

你可能感兴趣的文章
CSS一些最佳实践
查看>>
图解DevExpress RichEditControl富文本的使用,附源码及官方API
查看>>
公司框架遇到的问题
查看>>
详解 Discuz 的 PHP经典加密解密函数 authcode
查看>>
Oracle如何删除表中重复记录
查看>>
nginx 是如何处理访问请求的
查看>>
wget参数用法详解
查看>>
使用curl命令查看访问url的时间
查看>>
WinForm中跨线程操作控件
查看>>
CODING 敏捷实践完全指南
查看>>
unittest测试框架和测试报告的输出实例(一)
查看>>
下MFC中对象、句柄、ID之间的区别.
查看>>
如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)
查看>>
Asp.Net MVC 分页、检索、排序整体实现
查看>>
Flymeos插桩适配教程
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
制作一款微信表情
查看>>
高仿Instagram 页面效果android特效
查看>>