spring mvc 动态显示图片 img src 路径问题

spring mvc 动态显示图片 img src 路径问题,第1张

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 拦截器路径怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9737689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存