SpringMVC 高级篇
来源:互联网 发布:翻q 知乎 编辑:程序博客网 时间:2024/06/06 04:03
1,配置文件使用
(配置文件和web.xml中的加载语句用 --> 关联)
WEB-INF/配置文件 --> web.xml中的加载语句
1) applicationContext.xml --> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 2) dispatcher-servlet.xml --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
2、WEB/INF/dispatcher-servlet.xml 中对Annotation的配置
1) 使用annocation创建Controller的bean<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>(可有可无,default会自动添加)2)controller bean的扫描 <context:component-scan base-package="controller" />
二、基于CoC的MVC的配置
1、WEB/INF/dispatcher-servlet.xml 中对于url-pattern --> urlHandler的CoC的配置<bean id="cocHandlerMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" ><property name="caseSensitive" value="false"/></bean>注:如果不配置这个handlerMapping , tomcat会报org.springframework.web.servlet.DispatcherServlet noHandlerFound2、src/controller 中的配置申明一个SampleController.class :@Controllerpublic class SampleController {@RequestMapping // 不需要指明请求的路径。@ResponseBody // 直接打印到客户端,Client 显示 “1”。public String alert() { System.out.println("CoC"); // 控制台显示“CoC” return "1";}}3、请求的urllocalhost:8080/webapp/sample/alert.do或者 当如果该controller只有一个方法的时候,localhost:8080/webapp/sample4、如果请求的Controller中不只有一个Method 1)请求一个没有的方法(如 do方法)No matching handler method found for servlet request: path '/sample/do.do', method 'GET', parameters map[[empty]] 2) 请求一个空的方法(请求的路径只到/sample)No matching handler method found for servlet request: path '/sample/', method 'GET', parameters map[[empty]]5、@InitBinder( org.springframework.web.bind.annotation.InitBinder )1)在controller中使用的Binder @InitBinderpublic void customizeDataBinder(WebDataBinder dataBinder) {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");dateFormat.setLenient(false); dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));}2)在自定义的bind method中使用@RequestMapping@ResponseBodypublic String bind(Date myDate) {System.out.println(myDate);return "1";}注: 含义是在url中myDate=2013/3/31这样的格式才能被正确解析,2013-3-31这样的格式是不能被解析的。6、WebBindingInitializer (org.springframework.web.bind.support.WebBindingInitializer)1) 这个是跨所有Controller都能使用的Binder2)配置如下<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="webBindingInitializer"><bean class="validator.GenericBindingInitializer" /></property></bean>3)在validator/生成一个类,类名叫做GenericBindingInitializer 然后它 implements WebBindingInitializer 内含有Method:public void initBinder(WebDataBinder dataBinder, WebRequest request)7、@ModelAttribute("name")1)方法上@ModelAttribute("CoC")public String[] model() {String[] strs = {"c","o","c"};return strs;}注:model方法将在任何请求处理方法执行前调用,Spring MVC 会将该方法返回值以“CoC”为名放入到隐含的模型对象属性列表中。 2)参数上 @RequestMapping@ResponseBodypublic String getModel(@ModelAttribute("CoC") String[] model) {System.out.println(model.length); // 输出为 3 return model.toString();} 8、@SessionAttribute 管理Session数据。 1)在Controller之上声明 @SessionAttributes("CoC") //type=xx.class 2)适用的情况 如果在一些方法参数的ModelMap变量里注入了数据,那么在其他的方法里是不能使用到该模型数据的。 如果使用了@SessionAttribute("CoC"), 这样在某些方法参数上定义的@ModelAttribute("CoC")就可以使用了。9、CoC之Web请求和视图之间的约定1)在dispatcher-servelt中配置<bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"><property name="prefix" value="/jsp/" /><property name="suffix" value=".jsp" /></bean> 注:红色字体标注的id是必须的。而且必须是viewNameTranslator,否则框架不会启用。2)这样在Controller,返回将可以为void@RequestMappingpublic void demo() {System.out.println("Demo.jsp");} 会自动找到/webapp/jsp/sample/demo.jsp的视图。10、基于REST风格的路径变量url = webapp/sample/demo.do@RequestMapping(value = "/sample/{name}.do", method = RequestMethod.GET)public void demo(@PathVariable(value="name") String aName) {System.out.println("Demo.jsp " + aName); // Demo.jsp demo 同时跳转到了jsp/sample/demo.jsp上。}注:粉红色部分不是必须的,{name}.do则aName为demo。若直接输入{name} 那么aName=demo.do11、模型视图使用@RequestMapping(value = "{name}", method = RequestMethod.GET)public void demo(@PathVariable(value="name") String aName,@ModelAttribute("CoC") String[] model) {//非必须的,因为@ModelAttibute("CoC")已经隐含在模型的对象列表中。System.out.println("Demo.jsp " + aName);}视图demo.jsp中可以直接使用 <c:forEach var="item" items="${CoC}" step="1"> <c:out value="${item}"></c:out>s </br> </c:forEach>
- SpringMVC 高级篇
- Spring实战4之SpringMVC高级篇
- SpringMVC参数绑定高级
- springMVC的高级技术
- SpringMvc高级配置详解
- spring mvc高级篇(一):Spring+SpringMVC+Hibernate整合
- spring mvc高级篇(二):Spring+SpringMVC+Mybatis整合
- 【Spring+SpringMVC+MyBatis深入学习及搭建】16.SpringMVC注解开发(高级篇)
- SpringMVC应用程序架构----高级特性
- SpringMVC(第二天 高级知识)
- spring mvc高级篇(三):Spring+SpringMVC+Hibernate整合(采用注解优化)
- spring mvc高级篇(四):Spring+SpringMVC+Mybatis整合(采用注解优化)
- spring mvc高级篇(五):Spring+SpringMVC+Hibernate整合(采用泛型优化)
- spring mvc高级篇(六):Spring+SpringMVC+Hibernate整合(采用泛型+注解优化)
- spring mvc高级篇(七):Spring+SpringMVC+Mybatis整合(采用泛型优化)
- spring mvc高级篇(八):Spring+SpringMVC+Mybatis整合(采用泛型和注解优化)
- springmvc注解开发-高级之Validation
- springmvc注解开发-高级之异常处理
- IT职场中外企面试最爱提的问题TOP10
- linuxC之多线程
- Ajax、json学习笔记
- 余弦距离、欧氏距离和杰卡德相似性度量的对比分析
- ActionContext、ValueStack、Stack Context之间的关系
- SpringMVC 高级篇
- AUC(Area Under roc Curve )计算及其与ROC的关系
- ios 优化 cpu缓存与程序内存分布
- Struts1配置文件总结
- ActionContext、ValueStack、Stack Context之间的关系
- Oracle 12cR1 RAC Creating Services with PDBs
- ubuntu 10.04上vsftpd 3.0.2的编译安装
- hdu 2571 命运
- 《学习Objective-C》