📄 笔试测试2-answer.txt
字号:
七、spring原理
spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,
程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间
的藕合度。它的原理是在applicationContext.xml加入bean标记,
在bean标记中通过class属性说明具体类名、通过property标签说明
该类的属性名、通过constructor-args说明构造子的参数。其一切都是
返射,当通过applicationContext.getBean("id名称")得到一个类实例时,
就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,
唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。
正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring
的一个问题。
spring第二大作用就是aop,其机理来自于代理模式,代理模式
有三个角色分别是通用接口、代理、真实对象
代理、真实对象实现的是同一接口,将真实对象作为
代理的一个属性,向客户端公开的是代理,当客户端
调用代理的方法时,代理找到真实对象,调用真实对象
方法,在调用之前之后提供相关的服务,如事务、安全、
日志。其名称分别是代理、真实对象、装备、关切点、连接点。
八、hibernate原理
hibernate是一个o/r mapping工具,让我们的工作量减少了95%。
其有一个核心配置文件hibernate.cfg.xml,说明数据连接及具体
o/r mapping文件所在的位置,说明了连接就说明了有了Connection,
可以与数据库交互。
在具体的o/r mapping文件*.hbm.xml文件中说明了对象与表,
属性与字段的对应关系,当增加时可以直接
向save方法传入一个对象,hibernate会通过o/r mapping文件
找到当前对象的get方法,通过返射调用get方法取出对应属性的值
设置到对应的数据库字段是,构造成一个sql,执行sql,开发人员不
用写sql就可以开发。
九、struts原理
struts的核心类是ActionServlet,其可以接收所有.do结尾的请求。
核心配置文件是struts-config.xml文件说明url与Action及ActionForm的对应关系,url不可以重复。
在web.xml中说明ActionServlet、其可以接收所有以do结尾的请求;
说明struts-config.xml所在位置,以参数的形式传给ActionServlet。
当启动容器时,容器(tomcat、weblogic)实例化ActionServlet,初始化
ActionServlet,在初始化ActionServlet时加载struts-config.xml文件。
当客户通过url.do将请求发给ActionServlet,ActionServlet将处理
转发给助手RequestProcessor,RequestProcess通过struts-config.xml
找到对应的actionForm及action,如果有ActionForm用已有的,没有
通过类的反射实例化ActionForm,通过反射将表单域的值填充到actionForm中。
如果有Action用已有的,没有产生一个新的,通过反射调用action的
execute方法,在执行前将actionForm通过参数注入到execute方法中,
execute 方法执行结束前通过actionMapping找到actionForward转发到
另一个jsp页面中。
十、jsp的九大内置对象
作用域对象:
page:当前jsp页面内有效,代表当前jsp对应的servlet
request:封装了客户请求的所有信息。
request.getPrameter();
request.setAttribute("名称","对象");
reqeust.getAttribute("名称");
//转发,将当前页面的request及response传到了下一个页面
request.getRequestDispatch("a.jsp").forward(request,response);
session:一个用户多个页面共享同一变量,是HttpSession的实例。
application:多个用户多个页面共享同一变量,是ServletContext
的实例。
response:向客户端的响应。
out:向客户端输出文本或字节。
pageContext:当前jsp页面的环境,可以得到其它八大内置对象
在自定义标签中用的很多。
pageContext.getSession();
pageContext.getRequest();
config:是ServletConfig的实例,代理当前jsp页面配置。
exception:在错误页面中(error.jsp)有效,即当isErrorPage="true"有效。
正常页面errorPage="error.jsp",正常页面有错误
时跳到错误页面。
八、软件开发的过程:在面试时一定说明参与某一模块的从需求与测试的所有过程,
在一团队中,项目组长(经理)将某一模块的需求、整体设计、
开发安排给我完成,每天都要提交最新的文档,每周通过项目
会议讨论每个人的需求、设计,找出问题并合并相关模块。
需求(30%):在需求结束后一定的客户签字认可,在合同中要写明验收时以需
求说明书为准,当确认后若需求发生改变,需与商务另行商定。
如果因为客户的原因导致需求滞后,项目进度依次后推。
需求说明书:
整体说明:
use-case图:整体的功能、角色说明,确定
客户需求的功能范围。
需求特征列表:通过功能列表简要说明每一个功
能,确定该功能的优先级、风险度。
详细的说明:
用例说明及活动图:
用例说明有六大元素:
简要描述:
参与者:角色
基本流:最正常的情况
扩展流:可以的情况的处理
前置条件:前提
后置条件:结果
活动图:以图表的方式说明业务流程,
对于复杂功能要通过活动图说
明。
界面原型:需求可视化。
整体设计(30%):
业务流程:系统功能及复杂用例的流程。
bbs业务流程
业务实体:根据业务流程确定业务实体、体现ooa思想、数据库设计的思想。
bbs业务实体
技术框架:将业务实体与具体的技术框架结合在一起开发。
轻量的技术框架
jsp&servlet&dao&javaBean:速度是最快的,因为没有的大量解析xml文件,
没有大量使用反射,工作量大,可配性、扩展性不是很强。
(web)model2 MVC
v:jsp,页面
servlet:control控制器
m:javaBean
业务层:
IFacade接口
Facade实现类
FacadeFactory产生Facade实现类实例,返回IFacade接口,用了单例模式。
dao层:
dao接口
dao实现类
dao工厂
抽象的dao工厂
有一个dao接口,一个dao实现类,一个dao工厂,通过dao工厂产生dao实现
类的实例,返回dao接口。抽象的dao通过反射、单例、工厂模式产生具体的
dao工厂,返回抽象的dao工厂,因为具体的dao工厂继承于抽象的dao工厂,向
业务层返回的是抽象dao工厂,实际调用还是具体的dao工厂方法。
画图表示
jdbc:执行速度快,介代码的工作量大。
写一个通用接口
一个实现类
核心类:
Class.forName("");//注册驱动
Connection
PreparedStatement(Statement)
executeQuery();//select
executeUpdate();//insert update delete
ResultSet:结果集
while(rs.next())
{
rs.getString();
}
if(rs.next())
{
}
struts&dao&hibrenate:速度慢一些,因为要解析xml文件,要比较多使用反射。
(web)struts MVC
1、mvc
m:model javaBean
v:view actionForm
c:control
ActionServlet:接收所有以.do结尾的请求
Action:做具体业务处理。
ActionMapping:封装action标签中的所有内容,通过
url找开action、actionForm,通过名称找到
ActionForward
<action path="/login" type="struts.action.LoginAction"
name="loginForm" attribute="loginForm" scope="request"
<forward name="success" path="/success.jsp">
/>
ActionForward:转发到另一个页面
2、请求处理过程
url.do通过url在struts-config中找到对应的action及actionForm
如果有actionForm用已有,没有根据类的反射实例化一个新的form,放到作用域对象,
并根据类的反射将表单域的值封装到actionForm中。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -