Springmvc的是DispatchServlet,
Struts1的是ActionServlet,
Struts2的StrutsPrepareAndExecuteFilterweb
是单例模式,在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,
解决方案是在控制器里面不能写字段spring
通常用@Controller注解,表示是表现层,不能用的注解替代json
用于类上,表示类中的全部响应请求的方法都是以该地址做为父路径安全
直接在方法上面加上注解@RequestMapping,而且在这个注解里面写上要拦截的路径bash
能够在@RequestMapping注解里面加上method=RequestMethod.GETsession
能够在@RequestMapping注解里面加上params=”type=test” ###8.我想在拦截的方法里面获得从前台传入的参数,怎么获得 直接在形参里面声明这个参数就能够,但必须名字和传过来的参数同样多线程
直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面架构
直接在方法的形参中声明request,SpringMvc就自动把request对象传入mvc
返回值能够有不少类型,有String, ModelAndView,当通常用String比较好app
SpringMvc根据配置文件中InternalResourceViewResolver的前缀和后缀,用前缀+返回值+后缀组成完整的返回值
在返回值前面加”forward:”就可让结果转发,譬如”forward:user.do?name=method4”
在返回值前面加”redirect:”就可让返回值重定向,譬如”redirect:www.baidu.com”
经过ModelMap对象,能够在这个对象里面用put方法,把对象加到里面,前台就能够经过el表达式拿到
叫ModelAndView
能够在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key
具体步骤以下
1.加入Jackson.jar
2.在配置文件中配置json的映射
3.在接受Ajax方法里面能够直接返回Object,List等,但方法前面要加上@ResponseBody注解
要加上@ResponseBody注解
有两种写法,一种是实现接口,另一种是继承适配器类,而后在SpringMvc的配置文件中配置拦截器便可:
<!-- 只针对部分请求拦截 -->
<mvc:interceptor>
<mvc:mapping path="/modelMap.do" />
<bean class="com.et.action.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
复制代码
系统启动的时候根据配置文件建立spring的容器, 首先是发送http请求到核心控制器disPatherServlet,spring容器经过映射器去寻找业务控制器,
使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,数据放在model中,用map传递数据进行页面显示。
复制代码
这中架构能够经过一:内置的spring web框架
二是:Struts Web框架 来实现
一、 易于通view框架无缝集成,采用IOC便于测试
二、 典型的纯MVC构架,Struts是不彻底基于MVC框架的
三、 与tapestry是纯正的Servlet系统,(这也是相对于Struts的优点)