js得到如果有%20这种url,可以使用urlDecode的方式,把url的解码过来,然后再attr就可以,可以直接用流,然后response出来就可以,也可以src,也可以先写到服务器上,再读出来,方法很多
SpringMVC中,控制器解析path顺序是按照如下几步进行的:
1 首先,SpringMVC会扫描定义的HandlerMapping,并且查找是否有与当前RequestMapping匹配的URL,如果没有,则返回404错误。
2 如果找到匹配的URL,SpringMVC会检查该URL是否满足条件,如果不满足,则返回403错误,如果满足,则进入下一步。
3 在下一步,SpringMVC会解析指定的Controller,并根据RequestMapping设置的映射路径解析出对应的controller。
4 接着,SpringMVC会调用Controller中对应的Handler方法,并将RequestMapping中所定义的参数传递给Handler方法,以便进行业务处理。
5 如果Handler方法运行成功,则SpringMVC会根据配置的ViewResolver来加载对应的View,然后将处理结果返回给客户端。
6 最后,SpringMVC会返回处理结果给客户端,这样,一个完整的RequestMapping处理就完成了。
在tomcat作为服务器的网站开发中,我们一般把静态的css,js和image资源放到网站根目录下(与WEB-INF同级目录)。我在jsp引入js等静态资源的时候需要这样:
<script type="text/javascript" src="<%=requestgetContextPath()%>/js/jqueryjs"></script>这样写完全不会有错,但是看着总是不爽,若是用struts2的话,直接在写个BaseAction定一个变量冲到值栈中页面就很方便取到。但是现在用的是springMVC,同样也想向下面那个写怎么办呢?
<script type="text/javascript" src="${URL}/js/jqueryjs"></script>1思路一
很简单暴力,在每个请求里面都放进去一URL变量,
String baseUrl=requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort() + requestgetContextPath();requestsetAttribute("URL", baseUrl);
至于为什么是用上面的方式获取网站跟目录而不是直接用requestgetContextPath(),笔者还没深入研究。目前证实上面方式获取是没有错的,只有requestgetContextPath()有时候会获取不到,以后再深入研究下。
分析:不用多说,这样写比在页面上用requestgetContextPath()还膈应人,毫无疑问pass掉。
思路二
如果你的网站结构用的采用iframe的方式,那么可以在iframe外层界面请求的接口里加上上面代码,然后在外层iframe界面定义个变量url先获取值,在子页面就可以直接用了。
父界面:var url = “${URL}”;子界面引用就直接用parenturl;
分析:算了,我也圆不下去了,且不说你的网站是不是所有都用了iframe,就算是,那些写也不友好,就当笔者是凑字数的吧,忽略此条。
思路三
其实就是思路一的升级版,思路一是在每个请求里面自己手动加的,那我们完全可以利用springMVC拦截器的方式,在每个请求里面放上一个网站根目录变量。下面直接贴代码了。
springMVC配置文件里面加上:
<!-- 拦截器 --><mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/"/>
<bean class="comjurloninterceptorSecurityInterceptor">
</bean>
</mvc:interceptor>
</mvc:interceptors>
新建一个拦截器类并获取网站根目录,然后将其放进request里面:
public class SecurityInterceptor implements HandlerInterceptor{@Override
public void afterCompletion(> }
前端引用js:
<script type="text/javascript" src="${URL}/js/jqueryjs"></script>1“spring mvc”配置文件缺少“dispatcher-servletxml”这个文件,建议删除全部文件然后重新 *** 作一遍即可。
“SpringMVC”的相关问题解析:
(1)访问路径URL是否正确被“spring mvc”拦截;
(2)检查<context:component-scan/>配置正确性;“Base-package”的后面如果是写成了”comtaotaocontroller”是错误的(不带,定位到包即可。);
(3)只有成功读取到“spring mvc”的"xml配置文件,才能让"spring容器加载"spring mvc容器,才能识别“@Controller”注解并执行标注的“Contoller”层;
(4)“webxml”加载"spring容器“xml”的配置文件时,<param-name></param-name>之间的“contextConfigLocation”也是固定的。
转发: SpringMVC默认就是以转发的形式响应JSP,也就是说直接返回视图名称的方式就是转发
重定向:需要使用 redirect: + 视图路径,当然也可以重定向到指定url再次进行处理,比如:redirect:/user/list
需要注意的是业务方法中,设置重定向不能像转发一样写逻辑视图,必须写明目标资源的物理路径,如"redirect:/indexjsp"
所以在springmvc配置文件中统一修改
真正的应用肯定少不了Spring,所以这里将spring配置加上
springmvc的上下文层级,理解层次化的 ApplicationContext
带小s的 loaderlistener 所加载形成的上下文,可以有多个,为我们提供了所有应用公共所使用的组件和服务,如sevice、dao,这些服务应该被整个应用所共享,而不应该被局限在某个 dispatcherServlet 上下文之中
不带小s的,就是与我们的 dispatcherServlet 相关的上下文。 dispatcherservlet 可以有多个,因为在现在的互联网中,一个应用可能需要提供多种服务,而让 dispatcherservlet 针对不同的服务请求去分发。因为有些服务是完全不同于其他服务的,所以需要作区分,根据配置的 url-pattern 进行拦截。
spring配置文件
该配置作用是注册 RequestMappingHandlerMapping 与 RequestMappingHandlerAdapter 两个Bean,这是Spring MVC为 @Controller 分发请求所必需的,并且提供了数据绑定支持, @NumberFormatannotation 支持, @DateTimeFormat 支持, @Valid 支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能
location:指location指定的目录不要拦截,直接请求
mapping:指在static目录下的所有文件(代表所有文件)
cache-period:设置静态资源在客户端浏览器中的缓存有效时间
该配置意思就是在根目录下static的所有文件不会被 DispatcherServlet 拦截,直接访问,当做静态资源交给Servlet处理
可以配置多个ViewResolver。 使用order属性排序。 InternalResourceViewResolver 需要放在最后。
如果想在方法中直接使用 >
以上就是关于spring mvc 动态显示图片 img src 路径问题全部的内容,包括:spring mvc 动态显示图片 img src 路径问题、springmvccontroller解析path顺序、SpringMVC 拦截器路径怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)