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异常。