A. 声明式事务管理中只有通过XML装配才能决定事务的传播特性等属性,使用注解配置则只能使用默认值
B. 编程式事务管理比声明式事务管理更为强大
C. 事务的隔离级别是由数据库产品实现的,事务的传播特性是由Spring声明的
D. 由Spring管理事务时,如果发现数据操作有异常,必须显式调用rollback方法进行事务回滚
参考答案: C
A. @Autowired是JSR250提供的,@Resuource是由Spring提供的
B. @Autowired默认采用byName方式装配,@Resuorce默认按照byType方式装配
C. @Autowired和@Resource完全相同
D. @Autowired可以用在属性字段上,也可以用在Setter方法上,用在属性字段上时可以省略该字段的Setter方法
参考答案: D
A. DOM和SAX都是目前常用的XML解析技术
B. DOM把XML文档映射成一个倒挂的树状结构
C. DOM模型内存消耗小,DOM解析器能提供更好的性能优势
D. SAX读取文档时会激活一系列事件,推给事件处理器,由事件处理器来访问文档
参考答案: C
A. web.xml
B. [servlet-name]-servlet.xml
C. applicationContext.xml
D. springMVC.xml
参考答案: B
A. WHERe — GROUP BY — HAVINg — ORDER BY
B. GROUP BY — HAVINg — ORDER BY — WHERe
C. WHERe — HAVINg — GROUP BY — ORDER BY
D. GROUP BY — ORDER BY — HAVINg — WHERe
参考答案: A
A. 一个表可以有多个主键
B. 一个表的主键只能是一列
C. 主键必须唯一且不能为空
D. 联合主键的列数据类型必须一致
参考答案: C
A. 依赖注入是一种设计开发模式
B. 依赖注入使组件之间相互依赖、相互制约
C. 依赖注入提倡使用接口编程
D. 依赖注入可以独立开发各组件,然后根据组件间的依赖关系进行组装
参考答案: B
A. request. invalidate();
B. session. validate();
C. response. invalidate();
D. session. invalidate();
参考答案: D
A. init()
B. destroy()
C. service()
D. initial()
参考答案: C
A. #{}是占位符,预编译处理
B. $ {}是拼接符,字符串替换
C. 使用#{}增加了SQL注入的风险
D. Mybatis在处理$ {}时,就是把$ {}替换成变量的值
参考答案: C
A. AOP将散落在系统中的“方面”代码集中实现
B. AOP有助于提高系统的可维护性
C. AOP已经表现出了将要替代面向对象的趋势
D. AOP是一种设计模式,Spring为其提供了一种实现
参考答案: C
A. 80
B. 8888
C. 8080
D. 以上都不对
参考答案: C
A. @SelectKey
B. @Options(useGeneratedKeys=true)
C. @useGeneratedKeys
D. @insertKey
参考答案: B
A. SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度
B. 能够在运行期针对库表结构为系统自动生成大量的SQL语句,减轻开发者的负担
C. 提供了优秀的动态SQL映射,降低代码量
D. SQL代码能从程序代码中彻底分离,可重用
参考答案: B
A. 单行函数每次传入一行列值,返回一行返回值
B. 多行函数每次传入一行列值,返回多行返回值
C. SELECT SYSDATE() FROM DUAL;语句执行后得到当前的日期时间
D. to_date函数是传入一个描述当前时间点到一个既定时间的毫秒数值,返回一个日期型数据
参考答案: A
A. 观察者模式
B. 包装器模式
C. 代理模式
D. 工厂模式
参考答案: C
A. JavaScript
B. XML
C. CSS
D. Cache
参考答案: D
A. dialect
B. dbDialect
C. databaseId
D. databaseProvider
参考答案: C
A. 可以互相替换,没有区别
B. #{}是静态文本替换,${}是预编译SQL占位符参数设置
C. KaTeX parse error: Expected 'EOF', got '#' at position 11: {}是静态文本替换,#̲{}是预编译SQL占位符参数设…{}用于实现SQL的参数属性设置
参考答案: C
(A) 包括POST、GET方式
(B) 如果传输数据包含机密信息,建议采用HEAD数据提交方式
© GET执行效率和POST方法一样
(D) Post传送的数据量较小,不能大于16K
参考答案:A
(A)2
(B)3
©4
(D)5
参考答案:D
(A) 它负责接收HTTP请求
(B) 加载配置文件
© 实现业务操作
(D) 初始化上下应用对象ApplicationContext
参考答案:C
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: B
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案: A
A. 正确
B. 错误
参考答案:B
A. 正确
B. 错误
参考答案:A
A. 正确
B. 错误
参考答案:A
A. 使用CREATE VIEW语句创建视图时可用WITH ENCRYPTION对视图定义进行加密
B. 创建视图时可以在所用SELECt语句中使用ORDER BY、COMPUTE子句
C. 使用ALTER VIEW语句可修改已有视图
D. 使用DROP VIEW语句可删除已有视图
参考答案: ACD 少选得2分
A. 必须实现Filter接口
B. 无需配置即可工作
C. 可以由多个过滤器组成过滤器链分别工作
D. 过滤器也可以配置初始化参数
参考答案: ACD 少选得2分
A. @InsertProvider
B. @SelectProvider
C. @UpdateProvider
D. @DeleteProvider
参考答案: ABCD 少选得2分
A. 执行rollback;
B. 执行commit;
C. 执行DDL语句
D. 执行查询语句
参考答案: BC 少选得2分
A. GROUP BY 子句用来分组 WHERe 子句的输出
B. WHERe 子句用来筛选 FROM 子句中指定的操作所产生的行
C. HAVINg 子句在聚合后对组记录进行筛选
D. HAVINg 子句用来从FROM的结果中筛选行
参考答案: ABC 少选得2分
A. 一个应用对于一个ServletContext
B. ServletContext范围比Session大
C. 第一个会话保存在ServletContext中的数据,第二个会话获取不到
D. ServletContext使用setAttribute()和getAttribute()操作数据
参考答案: ABD 少选得2分
A. 功能错误或遗漏
B. 界面错误
C. 数据结构或外部数据库访问错误
D. 初始化和终止错误
参考答案: ABCD 少选得2分
A. JSP
B. HTTP
C. ASP
D. PHP
参考答案: ACD 少选得2分
A. setter注入
B. getter注入
C. 接口注入
D. 构造注入
参考答案: AD 少选得2分
A. Bean的实现类
B. Bean的属性信息
C. Bean的依赖关系
D. Bean的行为配置
参考答案: ABCD 少选得2分
A. getElementById()
B. getElementsByTagName()
C. getElementsByName()
D. getElementsById()
参考答案: ABC 少选得2分
A. String
B. List
C. Set
D. Sorted Set
参考答案: ABCD 少选得2分
A. @Controller
B. @Service
C. @Repository
D. @Servlet
参考答案: ABC 少选得2分
A. 这是配置组件扫描
B. 容器只会扫描com.chinasofti的包下面的类
C. 容器会扫描com.chinasofti包及其子包下面的类
D. 组件扫描可以替代大量XML配置的定义
参考答案: ACD 少选得2分
A. JDBC
B. MANAGED
C. POOLED
D. JNDI
参考答案: AB 少选得2分
(A) Singleton
(B) Prototype
© Session
(D) Response
参考答案:ABC
(A)浏览器版本
(B)HTTP请求方法
©URL
(D)特定请求参数的取值
参考答案:BCD
ApplicationContext context =
new ClassPathXmlApplicationContext(“chinasofti.xml”);
Printer printer = (Printer)context.getBean(“printer”);
(A) 配置文件chinasofti.xml位于项目类检索目录下
(B) 在chinasofti.xml中定义了一个id或name为printer的bean
© context.getBean()返回的是printer类型的对象,不需要强制转换类型
(D) chinasofti.xml被修改后,context会自动重新加载
参考答案:CD
(A) type设置请求方式
(B) timeout设置请求时间,单位秒
© async设置是否允许异步执行
(D) dataType指定预期服务器返回数据的类型
参考答案:ACD
@Delete("")
void deleteBycompanyID(@Param("idList") List idList);
【1】____________________
【2】____________________
【3】____________________
2.以下配置文件内容是配置了一个SSM数据库相关内容,请把代码补充完整:题号: 1 参考答案: IN 分值: 2.5分
题号: 2 参考答案: idList 分值: 2.5分
题号: 3 参考答案: companyID 分值: 2.5分
【1】____________________
【2】____________________
【3】____________________
【4】____________________
【5】____________________
【6】____________________
3.编写代码解决利用Servlet/JSP构建MVC应用后的重复提交问题(Servlet利用forward方式跳转JSP后出现的问题)题号: 1 参考答案: property-override 分值: 2.5分
题号: 2 参考答案: SqlSessionFactoryBean 分值: 2.5分
题号: 3 参考答案: dataSource-ref 分值: 2.5分
题号: 4 参考答案: DataSourceTransactionManager 分值: 2.5分
题号: 5 参考答案: dataSource 分值: 2.5分
题号: 6 参考答案: annotation-driven 分值: 2.5分
解决方案:提交数据表单前在请求和会话中生成相同的随机令牌字符串,在表单中添加一个隐藏域保存同样的随机令牌字符串,提交表单后,在Servlet中判定请求中的令牌字符串和会话中的令牌是否一致,如果一致则说明是第一次提交,则处理数据,并删除会话中的令牌字符串,重复刷新时由于会话中的字符串已经被删除,和请求中保存的令牌不一致,则略过数据处理流程。
在展现数据提交表单前,通过一个Servlet创建随机令牌字符串,然后跳转到表单页面:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String token = UUID.randomUUID().toString();
request.getSession(true).setAttribute(REPEAT_SUBMIT_TOKEN_NAME,__【1】____);
request.setAttribute("token",___【2】___);
request.getRequestDispatcher("/jsppage/repeatsubmitdealing.jsp").forward(_【3】_,_【4】_);
}
表单页面中需要使用一个隐藏域来随请求提交刚才生成的令牌字符串:
最后在数据处理的Serlvet中验证令牌字符串是否一致来判定是不是出现了重复提交的问题:
String sessionToken = request.getSession(true)
.getAttribute(RepeatSubmitDealingStep1Quickstart.REPEAT_SUBMIT_TOKEN_NAME).toString();
String requestToken = request.getParameter("__【6】__");
if (requestToken.equals(______【7】______)) {
…
}
【1】____________________
【2】____________________
【3】____________________
【4】____________________
【5】____________________
【6】____________________
【7】____________________
4.在项目中有一个Servlet能够提供一张随机的验证码图片题号: 1 参考答案: token 分值: 2.5分
题号: 2 参考答案: token 分值: 2.5分
题号: 3 参考答案: request 分值: 2.5分
题号: 4 参考答案: response 分值: 2.5分
题号: 5 参考答案: token 分值: 2.5分
题号: 6 参考答案: token 分值: 2.5分
题号: 7 参考答案: sessionToken 分值: 2.5分
它的访问路径被配置为/code,请补充代码在HTML中显示这个验证码,填写看到的字符串后交由后台获取用户输入的验证码字符串.
页面HTML,访问路径为/index.html,表单部分代码如下:
用户填写表单后交由配置为/check的Servlet处理,用于获取用户输入的验证码是否正确,请在正确的方法中获取用户输入的数据:
public void ____【2】____(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String code = _______【3】______________;//获取用户输入的验证码字符串
}
【1】____________________
【2】____________________
【3】____________________
题号: 1 参考答案: code 分值: 2.5分
题号: 2 参考答案: doPost 分值: 2.5分
题号: 3 参考答案: request.getParameter(“code”) 分值: 2.5分
5.已知有数据库表(users)如下:
请创建存储过程,传入性别(男或女),显示对应性别的用户id,返回对应性别的人数,并调用该存储过程获取结果。
#DELIMITER $$
CREATE ___【1】_____ user_procedure(IN __【2】____VARCHAr(2) character set utf8,OUT num INT)
BEGIN
SELECT __【3】__ FROM users WHERe ____【4】_______;
SELECt FOUND_ROWS() INTO num;
END #$$
#DELIMITER ;
CALL user_procedure('女',@num);
select @num;
【1】____________________
【2】____________________
【3】____________________
【4】____________________
6.编写代码实现根据用户在浏览器URL中请求的资源返回对应的结果数据题号: 1 参考答案: PROCEDURE 分值: 2.5分
题号: 2 参考答案: sex 分值: 2.5分
题号: 3 参考答案: id 分值: 2.5分
题号: 4 参考答案: gender=sex 分值: 2.5分
HTTP请求的组成如下:
public class HttpHomework {
public static void main(String[] args) {
// TODO Auto-generated method stub
final String CRLF = "rn";
try {
ServerSocket server = new ServerSocket(8080);
ScheduledThreadPoolExecutor executor = new ___https://blog.csdn.net/weixin_53166575/article/details/____【1】_______(30);
while (___【2】___) {
final Socket con = server.accept();
Runnable serverThread = new Runnable() {
public void __【3】____{
try {
HttPBufferedInputStream blis = new HttPBufferedInputStream(con.____【4】____);//按行读取数据的工具
byte[] buf = new byte[1024];
int c = blis.readLine(buf, 0, buf.___【5】__);
String res = new String(buf, 0, c);
String[] elements = res.split(" ");
res = elements[__【6】___].substring(___【7】___);
File f = new File(res);
FileInputStream fis = new FileInputStream(f);
long length = f.__【8】____;
OutputStream os = con._____【9】___;
String responseHeader = "HTTP/1.1 200 OK" + CRLF;
if (res.endsWith(".htm") || res.endsWith(".html")) {
responseHeader += "_______【10】________: text/html"
+ CRLF;
} else {
responseHeader += "_______【11】________: application/stream"
+ CRLF;
}
responseHeader += "Content-Length: " + length
+ CRLF;
responseHeader += ___【12】________;
os.write(responseHeader.getBytes());
while ((c = fis.read(buf, 0, buf.length)) !=___【13】____) {
os.write(buf, 0, c);
}
fis.close();
os.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
executor.______【14】_________(serverThread);
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
辅助工具类(行优先读取Http输入流的工具,无需修改或填充空白 )
import java.io.IOException;
import java.io.InputStream;
public class HttPBufferedInputStream {
InputStream is;
public HttPBufferedInputStream(InputStream is) {
this.is = is;
}
public int readLine(byte[] b, int off, int len) throws IOException {
if (len <= 0) {
return 0;
}
int count = 0, c;
while ((c = is.read()) != -1) {
b[off++] = (byte) c;
count++;
if (c == 'n' || count == len) {
break;
}
}
return count > 0 ? count : -1;
}
}
【1】 ___________________
【2】____________________
【3】____________________
【4】____________________
【5】____________________
【6】____________________
【7】____________________
【8】____________________
【9】____________________
【10】____________________
【11】____________________
【12】____________________
【13】____________________
【14】____________________
7.以下配置文件内容是配置了一个SpringMVC的html视图解析器,请把代码补充完整题号: 1 参考答案: ScheduledThreadPoolExecutor 分值: 2.5分
题号: 2 参考答案: true 分值: 2.5分
题号: 3 参考答案: run() 分值: 2.5分
题号: 4 参考答案: getInputStream() 分值: 2.5分
题号: 5 参考答案: length 分值: 2.5分
题号: 6 参考答案: 1 分值: 2.5分
题号: 7 参考答案: 1 分值: 2.5分
题号: 8 参考答案: length() 分值: 2.5分
题号: 9 参考答案: getOutputStream() 分值: 2.5分
题号: 10 参考答案: Content-Type 分值: 2.5分
题号: 11 参考答案: Content-Type 分值: 2.5分
题号: 12 参考答案: CRLF 分值: 2.5分
题号: 13 参考答案: -1 分值: 2.5分
题号: 14 参考答案: execute 分值: 2.5分
/WEB-INF/html/
【1】______________________________
【2】______________________________
【3】______________________________
8.有一个SpringMVC的Controller代码如下,被映射的方法有两个,URL分别是:http://localhost:8080/user/register和http://localhost:8080/user/login,请把代码补充完整:题号: 1 参考答案: FreeMarkerConfigurer 分值: 2.5分
题号: 2 参考答案: FreeMarkerViewResolver 分值: 2.5分
题号: 3 参考答案: .html 分值: 2.5分
@Controller
@RequestMapping(value="/user")
public class UserController{
@RequestMapping(value="__【1】__")
public String register(){
return "register";
}
@RequestMapping(value="__【2】___")
public String login (){
return "login";
}
【1】____________________
【2】____________________
9.已知有数据初始化脚本:题号: 1 参考答案: /register 分值: 2.5分
题号: 2 参考答案: /login 分值: 2.5分
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAr(), age INT);
INSERT INTO users(NAME, age) VALUES('张三',25 );
INSERT INTO users(NAME, age) VALUES('李四',27 );
请利用MyBatis接口注解映射根据用户ID查询单个用户的信息。创建Mybatis接口注解映射UsersMapper:
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface UsersMapper {
@__https://blog.csdn.net/weixin_53166575/article/details/____【1】_____(" select * from users where id=#{__【2】___} ")
public User getUserById(@Param("id") int id);
}
【1】____________________
【2】____________________
题号: 1 参考答案: Select 分值: 2.5分
题号: 2 参考答案: id 分值: 2.5分



