赞
踩
第一套
一、填空题
1.Spring是以IoC和【】为内核
答案:AOP
2.在Spring配置文件中,Bean的作用域是通过元素的【】属性来指定的。
答案:scope
3.【】注解用于将数据访问层(DAO层)的类标识为Spring中的Bean,其功能与@Component 相同。
答案:@Repository
4.AspectJ框架中注解【】用于定义切入点表达式,在使用时还需定义一个包含名字和任意参数的方法签名来表示切入点名称
答案:@Pointcut
5.Spring中的通知按照在目标类方法的连接点位置,可以分为以下5种类型:【】、前置通知、后置通知、异常通知、引介通知。
答案:环绕通知
6.JDBC连接数据库时需要4个基本属性,包括有【】、url、username和password。
答案:driverClassName
7.Spring的声明式事务管理可以通过两种方式来实现,一种是基于XML的方式,另一种是基于【】的方式。
答案:Annotation
8.MyBatis入门程序中可以使用SqlSession的【】方法执行更新操作。
答案:update()
9.当数据表中的列和需要返回的对象的属性不完全一致, MyBatis是不会自动赋值的。此时,就可以使用【】元素进行处理。
答案:resultMap
10.SQL语句中,where后直接跟and,这在运行时肯定会报【】错误。
答案:SQL语法
二、判断题
11.当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean的id属性相匹配,就会返回同一个Bean实例()。
答案:正确
12.对于使用业务接口的类,Spring默认会使用CGLIB动态代理来实现AOP()。
答案:错误
13.JdbcTemplate类中的update()方法可以完成查询、插入、更新和删除数据的操作()。
答案:错误
14.MyBatis映射文件中<insert>
元素用于映射插入语句,在执行完元素中定义的SQL语句后,没有返回结果()
答案:错误
15.MyBaits与Spring进行整合时,Dao层开发可以使用传统的DAO方式的开发整合,以及Mapper接口方式的开发整合()。
答案:正确
16.HandlerAdapter将ModelAndView对象返回给ViewReslover。
答案:正确
17.Spring MVC支持JSP、Velocity、XML和FreeMarker等视图技术。
答案:错误
18.controller注解类型的注解形式为@Controller,它可以标注在任何类上
答案:错误
19.@RequestMapping的method属性必须使用。
答案:错误
20.在使用POJO类型数据绑定时,前端请求的参数名必须与要绑定的POJO类中的属性名一样。
答案:正确
21.注册自定义的Formatter转换器类时,Bean的类名必须是org.springframework.format.support.FormattingConversionServiceFactoryBean,并且其属性为formatters 。
答案:正确
22.JSON对象数据结构的关键字(key)必须为String类型,值(value)可以是String、Number、Object、Array等数据类型()。
答案:正确
23.@PathVariable(“id”)注解用于接收并绑定请求参数,如果请求路径中的参数名方法形参名称一样,则@PathVariable后面的“(“id”)”可以省略()
答案:错误
24.全局拦截器和指定路径下的拦截器不能够同时配置,否则运行时会报错
答案:错误
25.Spring MVC的文件上传是通过MultipartResolver对象实现的。
答案:正确
26.@RequestBody用于将请求体中的数据绑定到方法的形参中,使用时用在方法的形参上。
答案:正确
27.注册自定义的Formatter转换器类时,Bean的类名必须是org.springframework.format.support.FormattingConversionServiceFactoryBean,并且其属性为formatters
答案:正确
28.要使用集合数据绑定,需要在包装类中定义一个包含用户信息类的集合,然后在接收方法中将参数类型定义为该包装类的集合。
答案:正确
29.@Transactional注解主要是针对数据的增加、修改、删除和查询进行事务管理。
答案:错误
30.“@Responsebody”注解一般在同步获取数据时使用。
答案:错误
注意:选择题正确选项就是加粗字段
二、选择题
31.以下有关CGLIB代理相关说法正确的是()
A.CGLIB代理的使用非常简单,但它还有一定的局限性——使用动态代理的对象必须实现一个或多个接口
B.如果要对没有实现接口的类进行代理,那么可以使用JDK代理
C.CGLIB是一个高性能开源的代码生成包,在使用时需要另外导入CGLIB所需要的包
D.Spring中的AOP代理,可以是JDK动态代理,也可以是CGLIB代理
答案:D
32.以下有关事务管理方式相关说法错误的是()。
Spring中的事务管理分为两种方式:一种是传统的编程式事务管理,另一种是声明式事务管理
编程式事务管理:是通过AOP技术实现的事务管理,就是通过编写代码实现的事务管理,包括定义事务的开始、正常执行后的事务提交和异常时的事务回滚
声明式事务管理:其主要思想是将事务管理作为一个“切面”代码单独编写,然后通过AOP技术将事务管理的“切面”代码植入到业务目标类中
声明式事务管理最大的优点在于开发者无需通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中
33.以下关于MyBatis的<set>
元素的使用及说法正确的是(
<set>
元素主要用于更新操作,其主要作用是在动态包含的SQL语句前输出一个SET关键字,并将SQL语句中最后一个多余的逗号去除
使用MyBatis的<set>
元素来更新操作时,前端需要传入所有参数字段,否则未传入字段会默认设置为空
在映射文件中使用<set>
和<if>
元素组合进行update语句动态SQL组装时, <set>
元素内包含的内容可以都为空,<if>
元素会进行判断处理
在映射文件进行更新操作时,只需要使用<set>
元素就可以进行动态SQL组装
34.下面属性中不属于<association>
元素属性的是()
property
column
ofType
javaType
35.下面关于<collection>
元素的描述正确的是()
MyBatis就是通过<collection>
元素来处理一对多关联关系的
<collection
>元素的属性与<association>
元素完全相同
ofType属性与javaType属性对应,它用于指定实体对象中所有属性所包含的元素类型
<collection >
元素只能使用嵌套查询方式
36.下面类型中,不属于请求处理方法参数类型的是()。
javax.servlet.http.HttpSession
@MatrixVariable
org.springframework.ui.Model
void
37.下面不属于Spring MVC中常用的默认参数类型的是()。
HttpServletRequest
HttpServletResponse
HttpSession
ModelView
38.JSON对象结构中,关键字key必须为()类型。
Object
Array
String
Number
39.以下哪个方法可以定义Spring MVC中的拦截器( )
继承HandlerInterceptor
实现WebRequestInterceptor
实现HandlerInterceptorAdapter
继承WebRequestInterceptor
40.下面不属于文件解析器类CommonsMultipartResolver属性的是( )
maxUploadSize
maxInMemorySize
defaultEncoding
lazy
41.下列关于SSM框架的整合说法错误的是( )
Spring MVC与Spring之间不存在整合的问题
SSM框架的整合就涉及到Spring与MyBatis的整合
SSM框架的整合就涉及到Spring MVC与MyBatis的整合
SSM框架的整合就涉及到Spring MVC与Spring之间的整合
42.针对GET方式RESTful风格的请http://localhost:8080/chapter14/user/1,后台方法接收参数的路径映射写法可行的是()。
@RequestMapping("/user/{id}",method=RequestMethod.GET)
@RequestMapping(value="/user/ids")
@GetMapping(value="/user/{ids}")
@GetMapping(value="/user/{id}",method=RequestMethod.GET)
43.下面关于请求处理方法返回类型说法错误的是()。
常见的返回类型是ModelAndView、String和void
ModelAndView类型中可以添加Model数据,并指定视图
String类型的返回值可以跳转视图,但不能携带数据
void类型主要在异步请求时使用,它既返回数据,又跳转视图
44.下面关于文件上传表单说法错误的是()
form表单的method属性设置为post
form表单的method属性设置为get
form表单的enctype属性设置为multipart/form-data
提供<input
type=“file” name=“filename” />的文件上传输入框
45.下列有关Spring框架的描述,错误的是()
Spring是Java Web开发框架
Spring是轻量级框架
Spring是开源框架
Spring是持久层框架
46.以下关于<tx:method>
元素的属性描述错误的是()
name属性为可选属性,它指定了与事务属性相关的方法名
propagation用于指定事务的传播行为,默认值为REQUIRED
isolation用于指定事务的隔离级别,其默认值为DEFAULT
read-only用于指定事务是否只读,其默认值为false
47.MyBatis的更新操作和添加操作时,只需要将insert()方法改为updat()方法即可
持久对象层
数据访问层
业务逻辑层
Web表现层
48.使用ORM框架后,应用程序不再直接访问底层数据库,而是以()的方式来操作持久化对象(PO,即Persisent Object)。
面向业务
Hibernate
面向对象
MyBatis
49.MyBatis的更新操作有关说发错误的是()。
MyBatis的更新操作在映射文件中是通过配置元素来实现的
MyBatis的更新操作也需要进行事务提交
MyBatis的更新操作执行了SqlSession的update()方法
MyBatis的更新操作和添加操作时,只需要将insert()方法改为updat()方法即可
50.以下基于XML方式的声明式事务管理配置文件中tx:advice元素的子元素tx:method属性描述错误的是()
name:该属性为必选属性,它指定了与事务属性相关的方法名
propagation:用于指定事务的传播行为,它的默认值为SUPPORTS
isolation:该属性用于指定事务的隔离级别,其默认值为DEFAULT
read-only:该属性用于指定事务是否只读,其默认值为false
第二版
一、填空题
51.依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到【】组件中。
答案:Bean
52.Spring中要将Bean的作用域定义成singleton,只需将scope的属性值设置为【】即可。
答案:singleton
53.@Controller通常作用在控制层,如Spring MVC的【】,用于将控制层的类标识为Spring中的Bean,其功能与@Component 相同。
答案:Controller
54.AOP手动使用代理模式有两个典型的例子,分别为JDK动态代理和【】
答案:CGLIB代理
55.【】注解用于定义一个切面。
答案:@Aspect
56.定义jdbcTemplate时,需要将【】注入到jdbcTemplate中。
答案:dataSource
57.基于Annotation方式的声明式事务要在需要使用事务的Spring Bean类或者Bean类的方法上添加注解【】
答案:@Transactional
58.MyBatis映射文件中<mapper>
元素是配置文件的根元素,它包含一个【】属性,该属性为这个<mapper>
指定了唯一的命名空间。
答案:namespace
59.MyBaits映射文件中<select>
元素的id属性表示命名空间中的唯一标识符,常与【】组合起来使用。
答案:命名空间
60.使用<where>
元素会自动判断组合条件下拼装的SQL语句,只有<where>
元素内的条件成立时,才会在拼接SQL中加入【】关键字,否则将不会添加
答案:where
二、判断题
61.Spring容器可以管理singleton作用域的Bean的生命周期()
答案:正确
62.AOP专业术语中,切面是指要对哪些Joinpoint进行拦截()。
答案:错误
63.定义jdbcTemplate时,需要将dataSource注入到jdbcTemplate中()。
答案:正确
64.<resultMap>的子元素<association>和<collection>
用于处理多表时的关联关系()。
答案:正确
65.要实现MyBatis与Spring的整合,只需要将这两个框架的JAR包进行整合即可。()
答案:错误
66.在<servlet-mapping>中,通过<url-pattern>
元素的“/”,会将所有URL拦截,并交由DispatcherServlet处理。
答案:正确
67.<load-on-startup>
元素中的1表示容器在启动时立即加载这个Servlet。
答案:正确
68.注解@RequestMapping的method属性是可选的,不写的话,默认支持所有HTTP请求方法。
答案:正确
69.@RequestMapping注解只能标注在一个方法上
答案:错误
70.@RequestParam注解类型主要用于对请求中的参数进行定义。
答案:正确
71.Formatter与Converter的作用相同,只是Formatter的源类型可以是任意类型,而Converter必须是一个String类型。
答案:错误
72.MappingJackson2HttpMessageConverter类只能将Java对象转换为JSON对象和XML文档,不能将JSON对象和XML文档转换为Java对象。
答案:错误
73.@RequestBody用于将请求体中的数据绑定到方法的形参中,使用时用在方法的形参上。
答案:正确
74.当拦截器类中的preHandle()方法返回值为false,则程序会继续向下执行
答案:错误
75.在进行文件上传时,通常可以使用GET方式进行。
答案:错误
76.@Responsebody注解与@RequestMapping注解配合使用时,页面中将可以获取到方法的返回值。
答案:正确
77.JSON对象结构以“{”开始,以“}”结束,中间部分由0个或多个以英文“,”分隔的name/value对构成。
答案:正确
78.required用于指定参数是否必须,默认是false,表示请求中一定要有相应的参数。
答案:错误
79.Spring MVC框架会通过ServletRequest将请求参数串的内容进行类型转换。
答案:错误
80.@Autowired注解需要标注在Service层的实现类上,这样才能实现依赖注入。
答案:错误
三、选择题
注意:选择题正确选项就是加粗字段
81.下列有关AOP专业术语中,用于表示切面与程序流程的交叉点的是()。
Joinpoint
Pointcut
Aspect
Advice
82.下列选项中,哪一个不是Spring中事务管理的核心接口()
PlatformTransactionManager
TransactionDefinition
TransactionStatus
TransactionManager
83.以下关于元素中使用的几种属性的描述错误的是()
item:配置的是循环中当前的元素
index:配置的是当前元素在集合的位置下标
collection:配置的是传递过来的参数类型,它可以是一个array、list(或collection)、Map集合的键、POJO包装类中数组或集合类型的属性名等
separator:配置的是各个元素的间隔符
84.下面属性中不属于元素属性的是()
property
column
ofType
javaType
85.以下关于MyBatis映射文件中元素属性的说明错误的是()
property:指定映射到的实体类对象属性,与表字段一一对应
column:指定表中对应的字段
javaType:指定映射到实体对象属性的类型
fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为eager
@Controller @RequestMapping("/first") public class FirstController{ @RequestMapping("/first") public String handleRequest(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception { model.addAttribute("msg", "这是我的第一个Spring MVC程序"); return "first"; } }
http://localhost:8080/chapter12/hello/firstController
http://localhost:8080/chapter12/first/firstController
http://localhost:8080/chapter12/first/first
http://localhost:8080/chapter12/hello/first
87.下面选项中,哪一个是Spring的编码过滤器类()
org.springframework.web.filter.EncodingFilte
org.springframework.web.filter.CharacterEncodingFilter
org.springframework.web.filter.CharacterEncoding
org.springframework.web.filter.CharacterFilter
88.下面不属于AJAX中的属性的是()。
data
contentType
dataType
database
89.下面不属于拦截器类中的方法的是(
preHandler()
postHandle()
afterCompletion()
afterpletion()
90.下面属于CommonsMultipartResolver属性的是()。
getContentType
getInputStream
isEmpty
defaultEncoding
91.下列选项中,不需要配置在web.xml中的是()。
Spring的监听器
编码过滤器
视图解析器
前端控制器
92.使用@RequestMapping注解限定POST请求方法时,需要指定()
method=RequestMethod.POST
method=HttpMethod.POST
method=POST
method=Method.POST
93.下面关于<load-on-startup>
元素说法错误的是()。
如果<load-on-startup>
元素的值为1,则在应用程序启动时会立即加载该Servlet
如果<load-on-startup>
元素不存在,则应用程序会在第一个Servlet请求时加载该Servlet
如果<load-on-startup>
元素的值为1,则在应用程序启动时会延迟加载该Servlet
<load-on-startup>
元素是可选的
94.下面关于MultipartFile接口中说法错误的是()
getOriginalFilename()用于获取上传文件的初始化名
getSize()用于获取上传文件的大小,单位是KB
getInputStream()用于读取文件内容,返回一个InputStream流
transferTo(File file)用于将上传文件保存到目标目录下
95.Spring中定义了一系列的注解,以下有关其常用的注解说明错误的是()。
@Autowired用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作,默认按照Bean的名称进行装配。
@Repository用于将数据访问层(DAO层)的类标识为Spring中的Bean
@Service通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean
@Controller通常作用在控制层(如Spring MVC的Controller),用于将控制层的类标识为Spring中的Bean
96.以下有关Spring MVC中自定义拦截器的方法说法错误的是()
自定义的拦截器可实现HandlerInterceptor接口来实现
preHandler()方法会在控制器方法前执行,其返回值表示是否中断后续操作
postHandle()方法会在控制器方法和解析视图之前执行
afterCompletion()方法:该方法会在整个请求完成,即视图渲染结束之后执行
97.RequestMapping注解类型的作用是()。
用于映射一个请求或一个方法
用于映射一个控制器类
用于映射请求参数
用于映射请求类型
98.下面关于@RequestMapping注解说法错误的是()。
@RequestMapping注解的默认属性是value
@RequestMapping注解的value属性值可以省略
@RequestMapping注解的value属性名可以省略
@RequestMapping注解的value属性必须标注
99.使用@RequestMapping注解限定POST请求方法时,需要指定()
HttpServletRequest
HttpServletResponse
HttpSession
ModelView
100.下列选项中,不需要配置在web.xml中的是()
Spring的监听器
编码过滤器
视图解析器
前端控制器
四、简答题
1.请写出常用的加载Spring配置文件applicationContext.xml的方式。
答案:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
ClassPathXmlApplicationContext:
它是从类的根路径下加载配置文件
推荐使用这种
FileSystemXmlApplicationContext:
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
AnnotationConfigApplicationContext:
当我们使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
2.Spring中基于Annotation方式的声明式事务的实现。
答案:1、 在Spring容器中注册事务注解驱动; 2、在需要使用事务的Spring Bean类或者Bean类的方法上添加注解@Transactional。
3.请简述MyBatis中<select>
元素的常用属性及作用。
答案:常用元素有:id、parameterType、resultType、resultMap,设置缓存用到flushCache、useCache
id:配合Mapper的全限定名,联合成为一个唯一的标识,用户标识这条SQL。 parameterType:表示这条SQL接受的参数类型,可以是MyBatis系统定义或者自定义的别名,比如int、string、float等,也可以是全限定名,比如com.xx.xx.xx.pojo.User。
resultType:表示这条SQL返回的结果类型,与parameterType一样,可以是系统定义的别名,也可以是类的全限定名。
resultMap:它是映射器的引用,将执行强大的映射功能。我们可以使用resultType和resultMap中的一个,resultMap能提供自定义映射的机会
flushCache:它的作用是在调用SQL后,是否要求MyBatis清空之前的查询本地缓存和二级缓存,默认 false。
useCache:启动二级缓存的开关,是否要求MyBatis将此结果缓存 默认true。
4.请简单描述下Controller注解类型如何使用。
答案:首先需要将@Controller注解加入到控制器类上,然后在在Spring MVC的配置文件中添加相应的扫描配置信息,具体如下: (1)在配置文件的声明中引入spring-context; (2)使用<context:component-scan>
元素指定需要扫描的类包 这样,通过Spring的扫描机制就可以找到标注了该注解的控制器。
5.请简述拦截器HandlerInterceptor接口中的方法并做说明
答案:HandlerInterceptor接口中有3个方法: 1、preHandler()方法:该方法会在控制器方法前执行,其返回值表示是否中断后续操作。当其返回值为true时,表示继续向下执行;当其返回值为false时,会中断后续的所有操作。 2、postHandle()方法:该方法会在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。 3、afterCompletion()方法:该方法会在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。
6.请简述Spring中HttpMessageConverter接口的主要作用
答案:为了实现浏览器与控制器类(Controller)之间的数据交互,Spring提供了一个HttpMessageConverter接口来完成此项工作。该接口主要用于将请求信息中的数据转换为一个类型为T的对象,并将类型为T的对象绑定到请求方法的参数中,或者将对象转换为响应信息传递给浏览器显示。
7.编写一个自定义日期格式化类,并在spring中进行配置
1、编写自定义日期格式化类
2、编写自定义日期格式化类的spring配置文件部分
答案:
1、编写自定义日期格式化类 public class StringToDateConverter implements Converter<String, Date> { /** * 用于把 String 类型转成日期类型 */ @Override public Date convert(String source) { DateFormat format = null; try { if(StringUtils.isEmpty(source)) { throw new NullPointerException("请输入要转换的日期"); } format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse(source); return date; } catch (Exception e) { throw new RuntimeException("输入日期有误"); } } 2、编写自定义日期格式化类的spring配置文件部分 <bean id="converterService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <!-- 给工厂注入一个新的类型转换器 --> <property name="converters"> <array> <!-- 配置自定义类型转换器 --> <bean class="com.lp.web.converter.StringToDateConverter"></bean> </array> </property> </bean>
8.编写单个文件上传的Controller中upload方法
public void uploadFile(MultipartFile multipartFile,HttpServletRequest reuqest){
//完成单个文件上传代码
}
答案:
//定义文件名 String fileName = ""; //1.获取原始文件名 String uploadFileName = uploadFile.getOriginalFilename(); //2.截取文件扩展名 String extendName = uploadFileName.substring(uploadFileName.lastIndexOf(".")+1, uploadFileName.length()); //3.把文件加上随机数,防止文件重复 String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); //4.判断是否输入了文件名 if(!StringUtils.isEmpty(picname)) { fileName = uuid+"_"+picname+"."+extendName; }else { fileName = uuid+"_"+uploadFileName; } System.out.println(fileName); //2.获取文件路径 ServletContext context = request.getServletContext(); String basePath = context.getRealPath("/uploads"); //3.解决同一文件夹中文件过多问题 String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //4.判断路径是否存在 File file = new File(basePath+"/"+datePath); if(!file.exists()) { file.mkdirs(); } //5.使用 MulitpartFile 接口中方法,把上传的文件写到指定位置 uploadFile.transferTo(new File(file,fileName)); return "success"; }
9.请简述基于XML的装配方式中设值注入的要求
答案:Spring中基于XML的装配方式中设值注入需要满足以下两点要求:
1、Bean类必须提供一个默认的无参构造方法。
2、Bean类必须为需要注入的属性提供对应的setter方法。
10.请写出在Spring容器中注册事务注解驱动的代码。
答案:注解:
1.<!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> 2.在业务层使用@Transactional 注解 @Service("accountService") @Transactional(readOnly=true,propagation=Propagation.SUPPORTS) 3.<!-- 开启 spring 对注解事务的支持 --> <tx:annotation-driven transaction-manager="transactionManager"/> spring配置: <!-- 配置一个事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 事务的配置 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> </tx:advice> <tx:attributes> <!-- 指定方法名称:是业务核心方法 read-only:是否是只读事务。默认 false,不只读。 isolation:指定事务的隔离级别。默认值是使用数据库的默认隔离级别。 propagation:指定事务的传播行为。 timeout:指定超时时间。默认值为:-1。永不超时。 rollback-for:用于指定一个异常,当执行产生该异常时,事务回滚。产生其他异常,事务不回滚。 没有默认值,任何异常都回滚。 no-rollback-for:用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时,事务回 滚。没有默认值,任何异常都回滚。 --> <tx:method name="*" read-only="false" propagation="REQUIRED"/> <tx:method name="find*" read-only="true" propagation="SUPPORTS"/> </tx:attributes>
11.请简要介绍<resultMap>
元素的常用子元素及说明
答案:
<constructor><!-- 类在实例化时用来注入结果到构造方法 -->
<idArg/><!-- ID参数,结构为ID -->
<arg/><!-- 注入到构造方法的一个普通结果 -->
</constructor>
<id/><!-- 用于表示哪个列是主键,注入主键 -->
<result/><!-- 注入到字段或者JavaBean 属性的普通结果 -->
<association property=""/><!-- 用于一对一关联 -->
<collection property=""/><!-- 用于一对多、多对多关联 -->
<discriminator javaType=""><!-- 使用结果值来决定使用哪个结果映射 -->
<case value=""/><!-- 基于某些值的结果映射 -->
</discriminator>
12.请简述ModelAndView、String和void三种返回类型的作用。
答案:ModelAndView类型中可以添加Model数据,并指定视图;
String类型的返回值可以跳转视图,但不能携带数据;
而void类型主要在异步请求时使用,它只返回数据,而不会跳转视图。
13.请简述单个拦截器的执行流程。
答案:程序首先会执行拦截器类中的preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行;在业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向客户端返回响应;在DispatcherServlet处理完请求后,才会执行afterCompletion()方法。
14.请简述文件上传时表单需要满足的3个条件。
答案:1.form表单的method属性设置为post; 2.form表单的enctype属性设置为multipart/form-data; 3.提供<input
type=“file” name=“filename” />的文件上传输入框
15.编写一个自定义统一异常处理类,要求可以同时处理http请求和ajax请求两种方式产生的异常
1、编写自定义异常处理类
2、编写在spring配置文件中的配置部分
答案:1、编写自定义异常处理类
//自定义异常 public class CustomException extends Exception { private String message; public CustomException(String message) { this.message = message; } public String getMessage() { return message; } } //自定义异常处理器 public class CustomExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { ex.printStackTrace(); CustomException customException = null; //如果抛出的是系统自定义异常则直接转换 if(ex instanceof CustomException){ customException = (CustomException)ex; }else{ //如果抛出的不是系统自定义异常则重新构造一个系统错误异常。 customException = new CustomException("系统错误,请与系统管理 员联系!"); } ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", customException.getMessage()); modelAndView.setViewName("error"); return modelAndView; } } 2、编写在spring配置文件中的配置部分 <!-- 配置自定义异常处理器 --> <bean id="handlerExceptionResolver" class="com.itheima.exception.CustomExceptionResolver"/>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。