Spring mvc 学习拾遗.docx
- 文档编号:23356256
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:20
- 大小:115.22KB
Spring mvc 学习拾遗.docx
《Spring mvc 学习拾遗.docx》由会员分享,可在线阅读,更多相关《Spring mvc 学习拾遗.docx(20页珍藏版)》请在冰豆网上搜索。
Springmvc学习拾遗
Springmvc学习拾遗
1:
配置文件位置:
/spring/web/servlet-context.xml
默认为/WEB-INF/dispatcher-servlet.xml
2:
Springmvc目前支持5个tag,分别是
mvc:
annotation-driven,mvc:
interceptors,mvc:
view-controller,mvc:
resources和mvc:
default-servlet-handler
2.1:
mvc:
annotation-driven
注册DefaultAnnotationHandlerMapping(解析controller类上的注释)和AnnotationMethodHandlerAdapter(解析controller类方法上的注释)两个bean,及一系列缺省的messageconverter
其实际意义为:
Xml代码
1 2class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 3 4
5
6
7
8
9
10
11
12
13 14class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> 15 16class="org.springframework.http.converter.StringHttpMessageConverter"/> 17 18 class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/> 19 20 21 22 23 24class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> 25 26class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/> 3: 非代码形式配置视图 mvc: view-controller 将指定路径的请求直接转到对应的view上,而不需要特定的controller来处理请求。 例如 Xml代码 view-controller path="/hello/*" view-name="helloWorld"/> 4: 静态内容映射 mvc: resources 将指定URL的匹配模式来访问静态文件,如 resources mapping="/js/**" location="/WEB-INF/js/" cache-period="3600"/> resourcesmapping="/js/**"location="/WEB-INF/js/"cache-period="3600"/> 表示将/WEB-INF/js/目录映射到/js/目录,cache超时时间为3600秒。 则jsp中引用js/helloWorld.js实际上指向的是/WEB-INF/js/helloWorld.js. 5: @SessionAttributes 相当于以前的requiresSession属性,当配置此属性时,handlermethod中的参数值将从session中获取,如果不存在则抛出SessionRequiredException,与之前提到的SessionStatus.setComplete()一起使用,可起到避免提及成功后按刷新键重复提交的情况。 6: @ExceptionHandler 1.: @RequestMapping("/exception") 2. public void ExceptionTest() throws Exception{ 3. throw new Exception("i don't know"); 4. } 5. @ExceptionHandler 6. public String handleException(Exception e,HttpServletRequest request){ 7. System.out.println(e.getMessage()); 8. return "helloworld"; 9. } @RequestMapping("/exception") publicvoidExceptionTest()throwsException{ thrownewException("idon'tknow"); } @ExceptionHandler publicStringhandleException(Exceptione,HttpServletRequestrequest){ System.out.println(e.getMessage()); return"helloworld"; } 其中/exception抛出一个异常,而handleException则抓到这个异常并进行处理 7: SpringMVC文件上传 Springmvc使用jakarta的commonsfileupload来支持文件上传。 先修改pom.xml,增加对commonsfileuploadlib包的引用。 Xml代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 再修改spring的context配置文件,增加对MultipartResolver的引用。 Xml代码 1. 2. class="mons.CommonsMultipartResolver"> 3. -- one of the properties available; the maximum file size in bytes --> 4. 5. class="mons.CommonsMultipartResolver"> --oneofthepropertiesavailable;themaximumfilesizeinbytes--> 增加uploader的controller类 Java代码 1.@RequestMapping("/uploader") 2.public String uploader(@RequestParam("name") String name, 3. @RequestParam("file") MultipartFile file, 4. HttpSession session){ 5. if (! file.isEmpty()) { 6. System.out.println(file.getSize()); 7. } 8. return "helloWorld"; 9.} @RequestMapping("/uploader") publicStringuploader(@RequestParam("name")Stringname, @RequestParam("file")MultipartFilefile, HttpSessionsession){ if(! file.isEmpty()){ System.out.println(file.getSize()); } return"helloWorld"; } 增加文件上传的jsp页面 Html代码 1. 2.
3.
4.
5.
6.
7.
12.
13.
8:
pom.xml中
view-controllerpath="/hello/*"view-name="helloWorld"/> 11: class="org.springframework.web.servlet.view.UrlBasedViewResolver"> value="org.springframework.web.servlet.view.JstlView"/> 对比: class="org.springframework.web.servlet.view.InternalResourceViewResolver" p: prefix="/WEB-INF/jsp/" p: suffix=".jsp"/> 分析: publicclassInternalResourceViewResolverextendsUrlBasedViewResolver{ publicclassUrlBasedViewResolverextendsAbstractCachingViewResolver publicclassResourceBundleViewResolverextendsAbstractCachingViewResolver 表13.4.视图解析器 ViewResolver 描述 AbstractCachingViewResolver 抽象视图解析器实现了对视图的缓存。 XmlViewResolver 支持XML格式的配置文件。 该配置文件必须采用与SpringXMLBeanFactory相同的DTD。 默认的配置文件是/WEB-INF/views.xml。 ResourceBundleViewResolver ResourceBundle中寻找所需bean的定义。 这个bundle通常定义在一个位于classpath中的属性文件中。 默认的属性文件是views.properties。 UrlBasedViewResolver 将视图名直接解析成对应的URL。 如果你的视图名和视图资源的名字是一致的,就可使用该解析器。 InternalResourceViewResolver (UrlBasedViewResolver的子类) 它支持InternalResourceView(对Servlet和JSP的包装),以及其子类JstlView和TilesView。 可以用 默认"viewClass"为: value="org.springframework.web.servlet.view.JstlView" VelocityViewResolver/FreeMarkerViewResolver (UrlBasedViewResolver的子类) 支持VelocityView(对Velocity模版的包装)和FreeMarkerView以及它们的子类。 Spring支持多个视图解析器一起使用,形成解析链。 如果某个解析器没有找到合适的视图,Spring会在上下文中寻找是否配置了其它的解析器。 如果有,它会继续进行解析,否则,Srping会抛出一个Exception。 12: Spring加载resource时classpath*: 与classpath: 的区别 ApplicationContextctx=newClassPathXmlApplicationContext( "classpath*: com/test/rs/jarAppcontext.xml"); ApplicationContextctx=newClassPathXmlApplicationContext( "classpath: com/test/rs/jarAppcontext.xml"); .classpath*: 为了从多个jar文件中加载相同的文件.jarAppcontext.xml。 只要在com/test/rs/目录结构下就能别加载到。 classpath: 只能加载找到的第一个文件.jarAppcontext.xml。 13: 1: HandlerMapping接口--处理请求的映射 实现类: SimpleUrlHandlerMapping通过配置文件,把一个URL映射到资源DefaultAnnotationHandlerMapping通过注解,把一个URL映射到Controller类上 2: HandlerAdapter接口--处理请求的映射 实现类: AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上 13: 配置DispatcherServlet /springMVC.xml 不写,使用默认值: /WEB-INF/ 1、拦截*.do,例如: /user/add.do,弊端: 所有的url都要以.do结尾。 不会影响访问静态文件。 2、拦截/,例如: /user/add,弊端: 对jpg,js,css静态文件的访问也被拦截不能正常显示。 后面有解决办法。 3、拦截/*,可以走到Action中,但转发到jsp时再次被拦截,不能访问到jsp。 14: 多个HandlerMapping的执行顺序问题: --对静态资源文件的访问方案一(二选一)--> default-servlet-handler/> --对静态资源文件的访问方案二(二选一)--> resourcesmapping="/js/**"location="/js/"cache-period="31556926"/> resourcesmapping="/css/**"location="/css/"cache-period="31556926"/> DefaultAnnotationHandlerMapping的order属性值是: 0 resources/>自动注册的SimpleUrlHandlerMapping的order属性值是: 2147483646 default-servlet-handler/>自动注册的SimpleUrlHandlerMapping的order属性值是: 2147483647 当访问一个a.jpg图片文件时,spring会先执行order值比较小的, 先通过DefaultAnnotationHandlerMapping来找处理器,一定是找不到的,我们没有叫a.jpg的controller动作。 继续找由于最后一个SimpleUrlHandlerMapping是匹配"/**"的,所以一定会匹配上,再响应图片。 SimpleUrlHandlerMapping,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler使用各个Servlet容器自己的默认Servlet.,处理并返回.。 附: Tomcat默认Servlet.为default(见tom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring mvc 学习拾遗 学习 拾遗