个人总结javaWeb以及SSH等相关面试题

来源:互联网 发布:js定时器怎么用 编辑:程序博客网 时间:2024/06/05 12:01

1:Servlet的生命周期

1,初始化阶段:调用init()方法

2,响应客户请求阶段:调用service()方法
3,终止阶段:调用destroy()方法
加载和实例化Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。

2:四种会话跟踪技术(也叫四大作用域)

page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet  JSP 页面
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于forward 指令和 include 动作的关系)
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求

application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域

3:Form中的get和post的方法,在数据传输过程中分别对应了http协议中的get和post方法,二者的主要区别:

 1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。 
 2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。 
 3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。  
 4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
 5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
 6、Get是Form的默认方法。   action的引号内填的是路径方法,比如发送到邮箱或其他网页什么的

4:jsp的内置对象及其作用:(详细请点击链接)

简单的记忆方法:记住一个单词:parscope (气象雷达)示波器,它包含:page,application,request,response,session,config,out,pagecontext,exception。

一、request对象

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。

二、response对象

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。

三、session对象

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

四、out对象

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

五、page对象

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

六、application对象

application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。

七、exception对象

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象

八、pageContext对象

pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。

九、config对象  

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用  的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

5:在JSP中如何使用注释(主要有四种方式)

一、显式注释

     <!--注释内容-->

这种注释方法只能在<%%>  外  面,否则无效

所谓显示注释,是指在客户端可以看见

二、隐式注释一

     //注释内容   单行注释

这种注释方法只能在<%%>  里  面,否则无效

所谓隐式注释,是指在客户端看不见,但在服务器端可以看见

二、隐式注释二

     /*注释内容*/    多行注释

这种注释方法只能在<%%>  里  面,否则无效

所谓隐式注释,是指在客户端看不见,但在服务器端可以看见

三、隐式注释三

     <%--注释内容--%>

这种注释方法只能在<%%>  外  面,否则无效

所谓隐式注释,是指在客户端看不见,但在服务器端可以看见


6:利用ajax技术做重名验证(完整js代码)

<script>
function sendName() {
 var xmlhttp = false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest) {
        //Mozilla 浏览器
        xmlhttp = new XMLHttpRequest();
        if (xmlhttp.overrideMimeType) {//设置MiME类别
            xmlhttp.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject) {
        // IE浏览器
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
   //初始化、指定处理函数、发送请求的函数
if (!xmlhttp) { // 异常,创建对象实例失败
   window.alert("不能创建XMLHttpRequest对象实例.");
   return false;
}

var iname = window.document.form1.iname.value;
if(iname.length <= 0){
 alert("姓名不能为空。");
 window.document.form1.iname.focus();
 return false;
}

var url = "check.jsp?iname="+iname;
xmlhttp.open("get",url,false);
xmlhttp.setRequestHeader("If-Modified-Since","0");//清除缓存
xmlhttp.send(null);

if(xmlhttp.readyState == 4) { // 判断对象状态
 if (xmlhttp.status == 200) { // 信息已经成功返回,开始处理信息
 var n=xmlhttp.responseText;
  switch(n){
  case "1":var str1="姓名为空,请检查。";break;//PHP页面返回的数据源判断变量是否为空
  case "2":var str1="SQL语句为错误,请联系开发人员解决。";break;//PHP SQL 语句是不是出错
  case "3":var str1="姓名可以注册使用";break;//判断是不是数组,如果是不是数组则可以使用返回3
  case "4":var str1="姓名重名,请更换一个";break;//判断如果是数组说明已经被注册
  }
  window.document.getElementByIdx_x_x("show").innerHTML=n+str1;
 } else { //页面不正常
 alert("您所请求的页面有异常。");
 }
}
}
</script>
</head>
<body>
<h1>信息管理录入表</h1>
<form action="write.php" method="post" >
  姓名: <input type="text" onblur="sendName();" /><br />
<input type="submit"  value="保存"/>
</form>
</body>
</html>
然后执行server方法(也就是doGet,doPost)方法

7:如何现实servlet的单线程模式:

servlet引擎会在第一次初始化servlet时在内存中     创建一和实例。并且执行init()初始化方法     接下来的请求servlet引擎会开辟一个新的线程     然后执行server方法(也就是doGet,doPost)方法

8:JSP和Servlet的相同点和不同点,他们之间的联系是什么?

联系:JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。

相同点:JSP和Servlet和本质上都是java类。

不同点: Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。

而 JSP 的情况是 Java和 HTML 可以组合成一个扩展名为.jsp 的文件。

JSP 侧重于视图,Servlet 主要用于控制逻辑。

9: Hibernate有哪5个核心接口:

    SessionFactory 对象;SessionFactory 接口:初始化Hibernate,充当数据存储源的代理,创建session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存;Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;Transaction 接口:管理事务;

10:SSH相关填空面试题:

Struts 2以 FilterDispatcher 为核心控制器,它的初始化方法为

public String execute(){    return “SUCCESS”;}

JSP三大编译指令 page指令 include指令 taglib指令详细点击链接


taglib指令的语法:

<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>

例如

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>


Struts2应用的的最基础的几个类库是:SSH核心包

struts2-core-2.1.6.jar --------------- struts2的核心包
freemarker-2.3.13.jar--------------- FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具
commons-logging.jar ----------- Jakarta的通用日志记录包
ognl-2.6.11.jar -------------- 支持ognl表达式
xwork-2.1.2.jar -------------- xwork的包 由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类


基于hibernate用标注描述映射关系:映射实体类中表示主键的属性是@id,映射实体类中普通属性的标注是@Column,实体属性对应的列用标注@Table查看详细


Hibernate的会话接口是Session,它由接口SessionFactory创建,Hibernate处理事务的接口是Transaction,封装HQL的接口是Query查看详细


Session session = sessionFactory.openSession();
Transaction trans = session.beginTransaction ();
Query query = session.createQuery(“from User”);

在数据库中条件查询速度很慢如何优化代码:

1.建索引 (数据很多时建立分区索引)
2.减少表之间的关联  
3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面 
4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据


0 1
原创粉丝点击