java spring配置文件的约束文件dtd可以通过手动下载spring开源包,在spring开源包中可以直接找到约束的dtd文件。 java spring配置文件的约束文件dtd如果是在联网的情况下,那么Myeclipse会自动联网来寻找到
引用css的
<link rel="stylesheet" href="${ctx}/resources/css/data-list-cdcss" />
<link rel="stylesheet" href="${ctx}/resources/css/base-less-cdcss" />
引用js的
<script type="text/javascript" src="${ctx}/resources/js/configjs"></script>
<script type="text/javascript" src=">
Model 模型层 (javaBean组件 = 领域模型(javaBean) + 业务层 + 持久层)
View 视图层( html、jsp…)
Controller 控制层(委托模型层进行数据处理)
springmvc是一个web层mvc框架,类似struts2。
springmvc是spring的部分,其实就是spring在原有基础上,又提供了web应用的mvc模块。
实现机制:
struts2是基于过滤器实现的。
springmvc是基于servlet实现的。
运行速度:
因为过滤器底层是servlet,所以springmvc的运行速度会稍微比structs2快。
struts2是多例的
springmvc单例的
参数封装:
struts2参数封装是基于属性进行封装。
springmvc是基于方法封装。颗粒度更细。
⑴ 用户发送请求至DispatcherServlet。
⑵ DispatcherServlet收到请求调用HandlerMapping查询具体的Handler。
⑶ HandlerMapping找到具体的处理器(具体配置的是哪个处理器的实现类),生成处理器对象及处理器拦截器(HandlerExcutorChain包含了Handler以及拦截器集合)返回给DispatcherServlet。
⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain后,调用HandlerAdapter请求执行具体的Handler(Controller)。
⑸ HandlerAdapter经过适配调用具体的Handler(Controller即后端控制器)。
⑹ Controller执行完成返回ModelAndView(其中包含逻辑视图和数据)给HandlerAdaptor。
⑺ HandlerAdaptor再将ModelAndView返回给DispatcherServlet。
⑻ DispatcherServlet请求视图解析器ViewReslover解析ModelAndView。
⑼ ViewReslover解析后返回具体View(物理视图)到DispatcherServlet。
⑽ DispatcherServlet请求渲染视图(即将模型数据填充至视图中) 根据View进行渲染视图。
⑾ 将渲染后的视图返回给DispatcherServlet。
⑿ DispatcherServlet将响应结果返回给用户。
(1)前端控制器DispatcherServlet(配置即可)
功能:中央处理器,接收请求,自己不做任何处理,而是将请求发送给其他组件进行处理。DispatcherServlet 是整个流程的控制中心。
(2)处理器映射器HandlerMapping(配置即可)
功能:根据DispatcherServlet发送的url请求路径查找Handler
常见的处理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,
ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不建议使用)
(3)处理器适配器HandlerAdapter(配置即可)
功能:按照特定规则(HandlerAdapter要求的规则)去执行Handler。
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展多个适配器对更多类型的处理器进行执行。
常见的处理器适配器:>
spring 跟struts2一样,只要是参数跟javaben设置的一样,无论是post,还是get都能获取到参数。
//添加 *** 作
@RequestMapping("/add")//跳转路径
public String addAccount(>
之前用到的前后端分离都是通过nginx进行代理与反向代理的方式。最近在公司做一些小型的内部使用的管理系统,vue+SpringBoot,vue使用history模式,在部署的时候希望除去nginx层。即tomcat既做为rest server也作为web static server。
最简单的方式就是放入到classpath中,SpringMVC默认的几个resouce路径可以自行百度。然后流程就是:
启动成功,访问静态文件成功,但这样一个过程是有问题的,有点和前后端分离背道而驰,正所谓分久必合合久必分当前端修改一点点东西,前端需要build服务端也需要跟着restart,那我们可以选择指定静态文件的路径。于是乎各种baidu google下搜到了可以通过继承 WebMvcConfigurerAdapter 重写 addResourceHandlers 来指定静态文件路径。
第一版大概长成这个样子:
后来各种服务无响应,自信的认为是 \ 和 / 的问题,然后各种排列组合。嗯很明显失败了。。。
再后来看到配置classpath需要 classpath:/xxx 才想起来应该改成 file:/f:/static/
嗯,果然是这样,然后将路径提取到配置文件。。。嗯没什么技术含量,但是是容易忽视的小坑。。。
vue中路由模式默认是hash,但是由于使用的是history模式,所以需要SpringMVC进行配置支持,很简单将所有的静态文件404都返回indexhtml。
SpringMVC最终配置:
目前设置关闭缓存,后期添加文件hash判读。
内容很简单,没什么可总结的······当个备忘录。。。
在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@RequestMapping(value="getFile")
public ModelAndView getFile(@RequestParam(required = false) MultipartFile nativeUrl) {
Systemoutprintln("文件长度: " + nativeUrlgetSize());
Systemoutprintln("文件类型: " + nativeUrlgetContentType());
Systemoutprintln("文件名称: " + nativeUrlgetName());
Systemoutprintln("文件原名: " + nativeUrlgetOriginalFilename());
Systemoutprintln("========================================");
//如果用的是Tomcat服务器,则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中
String realPath = requestgetSession()getServletContext()getRealPath("/WEB-INF/upload");
//这里不必处理IO流关闭的问题,因为FileUtilscopyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的
FileUtilscopyInputStreamToFile(nativeUrlgetInputStream(), new File(realPath, nativeUrlgetOriginalFilename()));
}
springMVC中获取环境变量,环境变量配置参照上一篇 <a href='>
以上就是关于SpringMVC找不到路径是配置文件哪里的问题全部的内容,包括:SpringMVC找不到路径是配置文件哪里的问题、springmvc引入js,css等静态文件路径问题!!!、详解Spring mvc工作原理及源码分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)