0
点赞
收藏
分享

微信扫一扫

面试题-Java中级篇(5)

1.什么是Servlet?

Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。

2.jsp有哪些内置对象?作用分别是什么

1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。

2、response对象 响应客户请求的有关信息

3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个 WebApplication开始,直到客户端与服务 器断开连接为止。

4、out对象 它是JspWriter类的实例,是向客户端输出内容常用的对象

5、page对象 它是指向当前JSP页面本身,有点象类中的this指针,它是 Java.lang.Object类的实例

6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭

7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。

8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问

9、config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的

3.谈谈对XML的理解?说明Web应用中Web.xml文件的作用?

可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。什么是可扩展标记语言?

可扩展标记语言是一种很像超文本标记语言的标记语言。

它的设计宗旨是传输数据,而不是显示数据。

它的标签没有被预定义。您需要自行定义标签。

它被设计为具有自我描述性。

它是W3C的推荐标准。

web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。

4.什么是注解?

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类:

①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】

② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

5.servlet中转发和重定向的区别?

Servlet中页面的跳转有两种方式:转发和重定向。

1、转发和重定向的区别

①转发是服务器行为,重定向是客户端行为。

②转发是浏览器发生了一次请求,重定向至少是两次请求。

③转发地址栏中的url不会发生改变,重定向地址栏中的url会发生改变。

④转发因为是一次请求,两次跳转之间传输信息不会丢失,而重定向两次跳转会丢失传输信息。

⑤转发只能将请求跳转到同一个web应用中的页面,重定向可以指向任何页面,包括同一个web应用中的页面,同一个站点中的页面,其他站点的页面。

2、传递给HttpServlet Response.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher 对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。

6.struts2如何解决重复提交问题?

token 在struts配置文件中增加token拦截器。

7.struts2 国际化

在struts2中是使用了拦截器来实现国际化。

struts2的国际化分为三部分:

1.Action范围,这种范围是用Action的实现类的类名来作为前缀__语言名称_国家地区名(大写).properties.

2.包范围,包范围是用package作为前缀__语言名称_国家地区名(大写).properties。

3.全局范围,全局范围的前缀默认的是application,可以通过xml配置文件配置常量(使用constant标签注册i18l拦截器)来指定前缀,

前缀__语言名称_国家地区名(大写).properties。

国际化实现的原理:通过i18n拦截器获得请求参数request——locale的值(zh或者是en)并把当前的值转化为locale对象,

把locale对象存在ww_trans_i18n_locale的session作用域中,根据struts2的请求处理流程,

拦截器只会在进入action的时候才会调用,所有我们一般把对jsp的访问转化为对action的访问。

8.hibernate 延迟加载?

延迟加载(lazy load)也叫懒加载,它是hibernate为提高程序执行效率而提供的一种机制,即只有真正使用该对象的数据时才会创建。

Hibernate中主要通过代理(proxy)机制来实现延迟加载的。具体过程:Hibernate从数据库获取某一个对象数据时、获取某一个对象的集合属性值时,或获取某一个对象所关联的另一对象时,由于没有使用该对象的数据(除标识符值外),Hibernate并不从数据库加载真正的数据,而只是为该对象创建一个代理对象来代表这个对象,这个对象上的所有属性都为默认值;只有在真正需要使用该对象的数据时才创建这个真实对象,真正从数据库中加载它的数据。这样在某些情况下,就可以提高查询效率。

Hibernate中默认采用延迟加载的情况主要由以下几种:

(1)当调用Session上的load()方法加载一个实体时,会采用延迟加载。

(2)当Session加载某个实体时,会对这个实体中的集合属性值采用延迟加载。

(3)当Session加载某个实体时,会对这个实体所单端关联的另一个实体对象采用延迟加载。

9.OGNL是什么?你在项目中如何使用它

OGNL是:对象图形导航语言。

原ognl是单个对象的,在struts2的应用是多个对象的,struts2的类型转换也是通过ognl来实现的。

Struts2中默认的表达式语言就是ognl,struts2的取值设值都是通过ognl来实现的,struts2要依靠它的标签才可以使用ognl。

相对于jstl或者其他表达式语言,它有如下优势:

1 能够调用对象实例的方法

2 能够调用类的静态方法

3 操作集合对象

4 访问Ognl上下文

取值时ognl有三个参数:1 表达式,2 ognl的上下文(map),3 对象实例(值栈)。

如果表达式带#号是从上下文中(map)拿值,否则是从值栈中拿值。

设值时有四个参数:1 表达式,2 ognl的上下文(map),3 对象实例,4 设入的值

如果表达式带#号是把值设入上下文中(map),否则是把值设入值栈中。

在struts2中 ognl的实现关系:ActionConetxt。

ognl 3个常用的符号 # $ %

# 1 构造map,list集合。

2 取ognl上下文的值。

3 用来过滤集合。

$ 1 在校验框架中取资源文件中的值。

2 可以在配置文件中传递参数。

% 使用百分号可以进行转义。

10.Spring有哪些优点?

轻量级:Spring在大小和透明性方面绝对属于轻量级的,基础版本的Spring框架大约只有2MB。

控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。

面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。

容器:Spring包含并管理应用程序对象的配置及生命周期。

MVC框架:Spring的web框架是一个设计优良的web MVC框架,很好的取代了一些web框架。

事务管理:Spring对下至本地业务上至全局业务(JAT)提供了统一的事务管理接口。

异常处理:Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、Unchecked异常。


举报

相关推荐

0 条评论