spring mvc随笔
来源:互联网 发布:数控车床编程操作方法 编辑:程序博客网 时间:2024/06/05 16:03
主要类(配置在web.xml里) dispatcherservlet
Handlermapping类 把url映射到controller类中
Handleradapter类 把url映射到controller类的方法中(感觉和handlermapping搭配使用)
目前用到spring mvc注解 所以以上两个类为:
Defaultannotationhandlermapping,
Annotationmethodhandleradapter
Controller 由于目前使用注解,在一个普通类中加入@Controller 注解就可以,所以没有用spring提供的controller接口,如果不用注解开发,那么可以实现此接口
Handlerintercepter 拦截器,这个目前没有用到,配置文件中配置了一个charaset过滤器来设置编码
Viewresolver 这个类主要是用来映射jsp文件的位置 通常需要设置 viewclass,prefix,suffix这三个参数
Viewclass:jstlview
Prefix:jsp文件的路径 如 request/jsp/admin/
Suffix: jsp文件的后缀,需要带”.” 如 .jsp
通常用的比较多的是 internalresourceviewresolver
Modelandview 这个作为方法的返回值来使用,可以跟request一样向前台页面传递数据,方法名为addobject,除了传递数据,还要传递逻辑视图名,比如一个页面叫view.jsp 那么这里需要把”view” 传入modelandview,这样他会在指定路径查找view.jsp文件(路径和后缀的设置如上所述)
Spring工作流程(文字版):
Web页面发送请求至后台,拿注解举例,先经过annotationmethodhandlermapping和defaultadnnotationhandleradapter,如果找到了具体的controller,那么经过拦截器,执行controller,如果没找到具体的controller,那么就用simpleurlhandlermapping查找,流程同上,如果还是没找到,那么再用defaulthandler查找,流程同上,如果defaulthanlder也没找到,那么返回给页面一个404;
执行完拦截器,进入controller,通过返回modelandview,来返回一个逻辑视图,通过viewresolver以及上面配置的prefix和suffix,找到具体jsp文件,返回给前端,到此流程结束。
Spring工作流程图见附图1。
Dispatcherservlet:
是一个servlet,所以可以配置多个,这样可以产生更灵活的映射路径,如*.do, *.action等
可以在init-param中 配置**-servlet.xml的路径和名称,如果忽略该参数,那么spring会去WEB-INF下查找名称为[servletname]-servlet.xml的文件,可以识别classpath: ,如果有多个文件,用逗号分隔即可。
拦截路径可以用 / 和 *.do等, /* 是错误的配置方式,这种方式在路径跳转时无法访问jsp文件
Listener:
如果是s2sh框架,需要这个监听器来加载spring的配置文件applicationContext.xml文件,通常和context-param配合使用,如下:
<context-param>
< param-name>contextConfigLocation</param-name>
< param-value>classpath:conf/spring/applicationContext.xml</param-value>
</context-param>
如果是spring mvc 那么通过servlet即可加载配置文件,所以不需要设置此监听器
配置文件:
先来一个xml头:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package=”” />
这个配置可以理解为一个扫描仪,他会根据你传入的base-package,来扫描所有注解类
<mvc:annotation-driven/ />
默认的注解映射的支持(没加好像也可以运行)
Internalresourceviewresolver
开头提到了这个类,不再赘述,需要配置到xml文件里
<mvc:intercepters>
<bean class=””/>
....(可以配置多个拦截器)
</mvc:intercepters>
拦截器的配置
<mvc:default-servlet-handler/>
对项目中静态资源的访问
常用的注解:
@Controller 声明Action组件
@Service 声明Service组件 @Service("myMovieLister")
@Repository 声明Dao组件
@Component 泛指组件, 当不好归类时.
@RequestMapping("/menu") 请求映射
@Resource 用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName")
@Autowired 用于注入,(srping提供的) 默认按类型装配
@qulifier 配合autowired使用,可以将autowired的按类型装配改为按名称装配
@Transactional( rollbackFor={Exception.class}) 事务管理
拦截器配置:
实现HandlerInterceptor 或者 继承HandlerInterceptorAdapter
Pre 进入action前
Post 生成视图前
After 返回action后(释放资源)
在xml中配置拦截器 有三种方式 第一种前面说过了 在标签内用匿名bean,下面是第二种方式,感觉更好一些,是通过配置路径来拦截:
<mvc:intercepters>
<mvc:intercepter>
<mvc:mapping path=”/user/*” />
<bean class=”” />
</mvc:intercepter>
</mvc:intercepters>
第三种方式是配置handlerMapping
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="com.mvc.MyInteceptor"></bean>
</list>
</property>
</bean>
配置intercepters属性,可以达到拦截的目的。
配置异常映射:
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView">
<value>/error/error</value>
</property>
<property name="defaultStatusCode">
<value>500</value>
</property>
<property name="warnLogCategory"> <value>org.springframework.web.servlet.handler.
SimpleMappingExceptionResolver</value>
</property>
</bean>
转发和重定向的控制:
在返回的路径上加入 “forward:/user/login”; 转发; “redirect:/user/login” 重定向;
处理ajax请求:
刚好用到这个功能,之前用的struts2,在struts.xml配置一下type=json就可以了,在spring mvc里 注解的话可以在一个返回Object的方法里(方法名任意) 加入@responseBody标签,前台按照requestMapping配置的路径访问,就可以获取到json格式的对象
注:本文学习自:http://elf8848.iteye.com/blog/875830
附图1
- spring mvc随笔
- Spring mvc随笔
- Spring MVC 使用随笔
- spring MVC 学习随笔 17-5-5
- spring随笔
- Spring随笔
- spring随笔
- Spring随笔
- spring随笔
- spring随笔
- Spring随笔
- MVC ListView 随笔
- 学习MVC随笔
- 知识点随笔.net(mvc)
- .net MVC 学习随笔
- .net MVC 随笔2
- .net MVC 随笔3
- .net MVC 随笔4
- Java Date 和 Calendar
- 俩组php面试题(对于面试的有用哦)
- CUGBACM11级专题训练之排序解题报告
- 皮肤检测与克服光线影响的连通域寻找
- HDU1213 How Many Tables(简单的并查集)
- spring mvc随笔
- 2013腾讯编程马拉松初赛第一场(3月21日)小Q系列故事——电梯里的爱情
- amq 源码分析之demo分析1
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 2013第四周上机任务【项目4-正整数类】
- Ubuntu mp3音乐乱码的解决办法
- yum出问题了,说什么 No module named yum
- struts2中的action结果处理与组织(六)
- Air中文件拖放