一、SpringMVC重点注解
@Controller
1.@Controller 与 @Component 实际应用中作用等价。
2.和Struct一样,也是单例,意味着被多个请求线程共享,因此我们将控制器设计成无状态类。
@RequestMapping
1.在类前面定义,则将url和类绑定。
2.在方法前面定义,则将url和类的方法绑定。
@RequestParam
1.写法@RequestParam("参数"),写在参数前面。
@SessionAttributes
操作Session,将ModelMap中指定的属性放到session中。
放在类前面,@SessionAttributes({"u","a"}) //将ModelMap中属性名字为u、a的再放入session中,使得request和session中都有了。
ModelMap是map的实现,可在其中存放属性,作用域同request,可以在modelMap中放入数据。然后在forward的页面上显示这些数据,同过el表达式,JSTL,java代码均可。
@ModelAttributes
。。。
Controller 类中方法返回值的处理
1.常用返回String(建议)
根据返回值找对应的显示页面,路径规则为:prefix前缀+返回值+suffix后缀组成
@RequestMapping(params="method=reg4")
public String reg4(ModelMap map) {
System.out.println("HelloController.handleRequest()");
return "index";
}
前缀为:/WEB-INF/jsp/ 后缀为:.jsp
再转发到:/WEB-INF/jsp/index.jsp
2.也可以返回ModelMap、ModelAndView、map、List、Set、Object、无返回值。 一般建议返回字符串!
转发和重定向:return "forward:user.do?method=reg5"; //转发
// return "redirect:user.do?method=reg5"; //重定向
return "redirect:http://www.baidu.com"; //重定向
3.spring MVC 传参数都是经过 ModelMap 或者 ModelAndView
二、Spring全家桶概念
核心原理:
1.用户发送请求给服务器:url;
2.服务器收到请求。发现DispatchServlet 可以处理,于是调用DispatchServlet。
3.DispatchServlet 内部,通过HandleMapping检查这个url 有没有相对应的Controller。有则调用Controller。
4.Controller 开始执行。
5.Controller 执行完毕,如果返回字符串,则ViewResolver 将字符串转化成相应的视图对象,如果返回ModelAndView对象,该对象本身就包含视图对象信息。
6.DispatchServlet 将执行视图对象中的数据,输出给服务器。
7.服务器将数据输出给客户端。
Spring3.0 相关jar包的含义:
org.springframework.aop-3.0.3.RELEASE.jar ---Spring的aop面向切面编程。
org.springframework.asm-3.0.3.RELEASE.jar ---Spring独立的asm字节码生成程序。
org.springframework.beans-3.0.3.RELEASE.jar ---IOC的基础实现。
org.springframework.context-3.0.3.RELEASE.jar --IOC基础上的扩展服务。
org.springframework.core-3.0.3.RELEASE.jar ---spring的核心包。
org.springframework.expression-3.0.3.RELEASE.jar ---spring的表达式语言。如:ognl
org.springframework.web-3.0.3.RELEASE.jar ---web工具包。
org.springframework.web.servlet-3.0.3.RELEASE.jar ---mvc工具包。
三、SpringJDBC概念
Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现:(注:使用了Spring JDBC抽象框架之后,应用开发人员只需要完成斜体字部分的编码工作。)
-
定义数据库连接参数
-
打开数据库连接
-
声明SQL语句
-
预编译并执行SQL语句
-
遍历查询结果(如果需要的话)
-
处理每一次遍历操作
-
处理抛出的任何异常
-
处理事务
-
关闭数据库连接
Spring将替我们完成所有使用JDBC API进行开发的单调乏味的、底层细节处理工作。
四、Spring 中的 Bean的作用域
作用域 | 描述 |
---|---|
在每个Spring IoC容器中一个bean定义对应一个对象实例。 |
|
一个bean定义对应多个对象实例。 |
|
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的SpringApplicationContext情形下有效。 |
|
在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。 |
|
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。 |