Spring MVC My Batis Spring MVC SpringMVC Dispatcher
Spring MVC 与 My. Batis
Spring MVC
组成部分 Spring的MVC框架主要: 由Dispatcher. Servlet、处理器映射(Handler. Mapping)、处 理器(Controller)、视图解析器(View. Resolver)、视图(View)组成。
作原理 1、客�端�求提交到Dispatcher. Servlet 2、由Dispatcher. Servlet控制器��一个或多个Handler. Mapping,找到 �理�求的Controller 3、Dispatcher. Servlet将�求提交到Controller 4、Controller�用�����理后,返回Model. And. View 5、Dispatcher. Servlet��一个或多个View. Resoler��解析器,找到 Model. And. View指定的�� 6、����将�果�示到客�端
Dispatcherservlet Xml代码 1. <web-app> 2. <servlet> 3. <servlet-name>example</servlet-name> 4. <servletclass>org. springframework. web. servlet. Dispatcher. Servlet</servlet-class> 5. <load-on-startup>1</load-on-startup> 6. </servlet> 7. <servlet-mapping> 8. <servlet-name>example</servlet-name> 9. <url-pattern>*. form</url-pattern> 10. </servlet-mapping> 11. </web-app>
控制器Controller @Controller ( "/test/{variable 1}" ) public class My. Controller { @Request. Mapping ( "/show. View/{variable 2}" ) public Model. And. View show. View( @Path. Variable String variable 1, @Path. Variable ( "variable 2" ) int variable 2) { Model. And. View model. And. View = new Model. And. View(); model. And. View. set. View. Name( "view. Name" ); model. And. View. add. Object( " 需要放到 model 中的属性名称 " , " 对应的属性值,它是一个对象 " ) return model. And. View; } } @Request. Mapping
控制器Controller 1、使用 @Request. Param 绑定 Http. Servlet. Request 请求参数到控制 器方法参数 2、使用 @Cookie. Value 绑定 cookie 的值到 Controller 方法参数 3、使用 @Request. Header 注解绑定 Http. Servlet. Request 头信息到 Controller 方法参数
控制器Controller @Request. Mapping (value= "test. Params" , params={ "param 1=value 1" , "param 2" , "!param 3" }) public String test. Params() { System. out. println( "test Params. . . " ); return "test. Params" ; } @Request. Mapping (value= "test. Method" , method={Request. Method. GET , Request. Method. DELETE }) public String test. Method() { return "method" ; }
支持参数 (1 )Http. Servlet 对象,主要包括Http. Servlet. Request 、 Http. Servlet. Response 和Http. Session 对象 (2 )Spring 自己的Web. Request 对象。 使用该对象可以访问到存放在 Http. Servlet. Request 和Http. Session 中的属性值。 (3 )Input. Stream 、Output. Stream 、Reader 和Writer (4 )使用@Path. Variable 、@Request. Param 、@Cookie. Value 和 @Request. Header 标记的参数。 (5 )使用@Model. Attribute 标记的参数。 (6 )java. util. Map 、Spring 封装的Model 和Model. Map 。 (7 )实体类。 可以用来接收上传的参数。 (8 )Spring 封装的Multipart. File 。 用来接收上传文件的。 (9 )Spring 封装的Errors 和Binding. Result 对象
类型转换器 @Controller @Request. Mapping ( "/my. Test" ) public class My. Controller { @Init. Binder public void data. Binder(Web. Data. Binder binder){ Date. Format date. Format = new Simple. Date. Format( "yyyy. MMdd" ); Property. Editor property. Editor = new Custom. Date. Editor(date. Format, true ); binder. register. Custom. Editor(Date. class , property. Editor); } @Request. Mapping ( "data. Binder/{date}" ) public void test. Date( @Path. Variable Date date, Writer writer) throws IOException { writer. write(String. value. Of (date. get. Time())); } }
异常处理 spring. MVC提供的异常处理主要有两种方式: 一种是直接实现自己的Handler. Exception. Resolver,当然这也包括使 用Spring已经为我们提供好的Simple. Mapping. Exception. Resolver和 Default. Handler. Exception. Resolver。 另一种是使用注解的方式实现一个专门用于处理异常的Controller— —Exception. Handler。
My. Batis
动态SQL • if • choose(when,otherwise) • trim • where • set • foreach <select id="dynamic. Foreach. Test" result. Type="Blog"> select * from t_blog where id in <!-- 遍历的对象是Map. Entry时,index代表对应的key,item代表对应的value --> <foreach collection="collection" index="key" item="value“ open="(" separator=", " close=")"> #{key}, #{value} </foreach> </select>
注意事项 示例1: 执行SQL: Select * from emp where name = #{employee. Name} 参数:employee. Name=>Smith 解析后执行的SQL:Select * from emp where name = ? ==》 Select * from emp where name = ‘Simith’ 执行SQL:Select * from emp where name = ${employee. Name} 参数:employee. Name传入值为:Smith 解析后执行的SQL:Select * from emp where name =Smith #{} 会生成prepared. Statement. 预编译SQL语句,这样比较安全,防止SQL 注入,而且传入的值是字符串类型 ${} : 相当于直接赋值,不能防止SQL注入和预编译
模糊查询 1. sql中字符串拼接 SELECT * FROM table. Name WHERE name LIKE CONCAT('%', #{text}), '%'); 2. 使用 ${. . . } 代替 #{. . . } SELECT * FROM table. Name WHERE name LIKE '%${text}%'; 3. 程序中拼接 Java // or String search. Text = "%" + text + "%"; String search. Text = new String. Builder("%"). append(text). append("%"). to. String(); parameter. Map. put("text", search. Text); Sql. Map. xml SELECT * FROM table. Name WHERE name LIKE #{text};
Spring. MVC与My. Batis整合
Thank you
- Slides: 32