SpringMVC
1、SpringMVC 的工作原理
a、spring mvc请所有的请求都提交给(前端控制器)DispatcherServlet,它
会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
b、DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
c、DispatcherServlet请请求提交到目标Controller
d、Controller进行业务逻辑处理后,会返回一个ModelAndView
e、Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
f、视图对象负责渲染返回给客户端。
2、SpringMVC 常用注解都有哪些?
@Controller:定义了一个控制器类
@RequestMapping:用来处理请求地址映射的注解
@RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
@ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户。
3、如何开启注解处理器和适配器?
我们在项目中一般会在 springmvc.xml 中通过开启 <mvc:annotation-
driven>来实现注解处理器和适配器的开启
4、如何解决 get 和 post 乱码问题?
解决 post 请求乱码:我们可以在 web.xml 里边配置一个
CharacterEncodingFilter 过滤器。 设置为 utf-8.
解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法
有两个:
a、. 修改 tomcat 配置文件添加编码与工程编码一致。
b、. 另 外 一 种 方 法 对 参 数 进 行 重 新 编 码 String userName = New
String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);
Spring
1、谈谈你对 Spring 的理解
Spring是一个基于IOC和AOP的结构J2EE系统的框架
IOC 反转控制 是Spring的基础,他帮我们创建对象
DI 依赖注入会帮我们在Bean中,自动注入属性
AOP是面向切面编程,分为核心业务功能(增删改查+注册登录)和周边功能(性能统计,日志,事务管理)
2、Spring 中的设计模式?
单例模式
模板方式模式
前端控制器模式
依赖注入
工厂模式
3、Spring 的常用注解
@Required:该注解应用于设值方法
@Autowired:该注解应用于有值设值方法
4、简单介绍一下 Spring bean 的生命周期?
bean 定义:在配置文件里面用<bean></bean>来进行定义。
bean 初始化:有两种方式初始化:
a、在配置文件中通过指定 init-method 属性来完成
b、实现 org.springframwork.beans.factory.InitializingBean 接口
bean 调用:有三种方式可以得到 bean 实例,并进行调用
bean 销毁:销毁有两种方式
a、使用配置文件指定的 destroy-method 属性
b、实现 org.springframwork.bean.factory.DisposeableBean 接口
5、请描述一下 Spring 的事务
编程式事务与声明式事务的区别:
a)编程式事务是自己写事务处理的类,然后调用
b)声明式事务是在配置文件中配置,一般搭配在框架里面使用!
6、BeanFactory 常用的实现类有哪些?
常用的 BeanFactory 实现有 DefaultListableBeanFactory 、 XmlBeanFactory 、 ApplicationContext 等。
Mybatis
1、Mybatis 中#和$的区别?
#相当于对数据 加上 双引号,$相当于直接显示数据
a. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是
111,那么解析成 sql 时的值为 order by "111", 如果传入的值是 id,则解析成的 sql 为 order by "id".
b. $将传入的数据直接显示生成在 sql 中。如:order by $user_id$,如果传入的值是 111,那么解析成 sql 时的值为
order by user_id, 如果传入的值是 id,则解析成的 sql 为 order by id
c. #方式能够很大程度防止 sql 注入。
d.$方式无法防止 Sql 注入。
e.$方式一般用于传入数据库对象,例如传入表名.
f.一般能用#的就别用$
2、Mybatis 的编程步骤是什么样的?
创建 SqlSessionFactory
a、通过 SqlSessionFactory 创建 SqlSession
b、通过 sqlsession 执行数据库操作
c、调用 session.commit()提交事务
d、调用 session.close()关闭会话
网友评论